需要能够将Magento产品拉入外部模板。需要能够获得所有产品数据(描述,标题,属性,类别,图像等)。
并且需要能够按类别,属性进行过滤,还可以搜索名称。
这些调用将来自Magento安装所在的同一台服务器。最好的方法是什么?
将在Linux和Linux上使用php窗户(2个独立的网站)。
尝试过使用Magento API&肥皂从PHP访问,但还没有能够让它工作。我得到的只是每次都是这个错误。
致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:无法从“http://mymagento.com/cart/index.php/api/?wsdl”加载:文档末尾的额外内容.....
答案 0 :(得分: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/
答案 1 :(得分: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++;
}
答案 2 :(得分:0)
您可以使用例如Mage_CatalogInventory_Model_Stock_Item_Api类。