1

Magento 製品を外部テンプレートにプルできるようにする必要があります。すべての製品データ (説明、タイトル、属性、カテゴリ、画像など) を取得できる必要があります。

また、カテゴリ、属性でフィルタリングし、名前で検索できる必要があります。

これらの呼び出しは、Magento がインストールされているサーバーから行われます。これを行う最善の方法は何ですか?

Linux と Windows (2 つの別々のサイト) の両方で php を使用します。


Magento API & Soap を使用して php からアクセスしようとしましたが、まだ機能していません。私が得るのは毎回このエラーだけです。

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from ' http://mymagento.com/cart/index.php/api/?wsdl ': 末尾の余分なコンテンツドキュメント内.....

4

3 に答える 3

2

最も簡単な方法は、PHPスクリプトにMagento環境をロードし、ネイティブのMagento呼び出しを使用することです。

次のコードを使用して環境をロードできます。

require_once("path_to_magento/app/Mage.php");
Mage::app();

その後、Magentoの.phpまたは.phtmlファイルの場合と同じように、すべてのネイティブメソッドを使用できます。たとえば、商品コレクションを取得して、アクティブな商品のみにフィルタリングするには、次のようにします。

$products = Mage::getModel('catalog/product')->getCollection();
$products->addAttributeToFilter('status', 1); 

Magentoコードベースのリファレンスは次の場所にあります:http://docs.magentocommerce.com/

于 2010-03-18T22:58:35.470 に答える
1

製品を取得するために使用した基本的なコードは次のとおりです。メッセージ ボードで見つけたいくつかの例を使用して、Laizer の回答のコードをメッシュ化しました。私たちにとって非常にうまくいきました。

以下の例では、カテゴリ ID 11 でフィルタリングしていることに注意してください。

require_once("app/Mage.php");
Mage::app();


$category = new Mage_Catalog_Model_Category();
$category->getAllChildren(11);

$products = Mage::getModel('catalog/product')->getCollection();
        $products->addAttributeToFilter('status', 1);//enabled
        $products->addCategoryFilter($category);
        $products->addAttributeToSelect('*');
        $prodIds=$products->getAllIds();


        $product = Mage::getModel('catalog/product');
        $count=1;
        foreach($prodIds as $productId)
        {


            echo "$count <br>";
            $product->load($productId);

            $product_data = array();
            $product_data['sku']=$product->getSku();
            $product_data['title']=$product->getName();
            $product_data['description']=$product->getDescription();
            $product_data['link']=$product->getProductUrl();
            $product_data['image_link']=Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product->getImage();
            $product_data['price']=$product->getPrice();
            $product_data['brand']=$product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($product);
            $product_data['product_type']='';

            //get the product categories
                    foreach($product->getCategoryIds() as $_categoryId){
            $category = Mage::getModel('catalog/category')->load($_categoryId);
            $product_data['product_type'].=$category->getName().', ';
            }
            $product_data['product_type']=rtrim($product_data['product_type'],', ');





echo "<pre>";
            var_dump($product_data);

            //echo 'Loop end: '.memory_get_usage(false).'<br>';
            //flush();
            $count++;
        }
于 2010-03-19T18:31:19.070 に答える
0

たとえば、Mage_CatalogInventory_Model_Stock_Item_Api クラスを使用できます。

于 2010-03-18T19:41:05.037 に答える