1

需要能够将 Magento 产品拉入外部模板。需要能够获取所有产品数据(描述、标题、属性、类别、图像等)。

并且需要能够按类别、属性进行过滤,还可以按名称进行搜索。

这些调用将来自 Magento 安装所在的同一台服务器。最好的方法是什么?

将在 linux 和 windows(2 个单独的站点)上使用 php。


已尝试使用 Magento API 和 Soap 从 php 访问,但还不能让它工作。我得到的只是这个错误每次。

致命错误:未捕获的 SoapFault 异常:[WSDL] SOAP-ERROR:解析 WSDL:无法从“ 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 回答