使用MagentoAPI从php访问产品/类别/属性信息
需要能够将Magento产品拉入外部模板。需要能够获得所有产品数据(描述、标题、属性、类别、图像等) 并且需要能够按类别、属性进行过滤,还可以搜索名称 这些调用将从Magento安装所在的服务器上进行。最好的方法是什么 将在linux和windows上使用php(两个单独的站点)使用MagentoAPI从php访问产品/类别/属性信息,magento,soap,soap-client,php,Magento,Soap,Soap Client,Php,需要能够将Magento产品拉入外部模板。需要能够获得所有产品数据(描述、标题、属性、类别、图像等) 并且需要能够按类别、属性进行过滤,还可以搜索名称 这些调用将从Magento安装所在的服务器上进行。最好的方法是什么 将在linux和windows上使用php(两个单独的站点) 已经尝试使用MagentoAPI和Soap从php进行访问,但还没有成功。每次我都会遇到这个错误 致命错误:未捕获的SoapFault异常:[WSDL]SOAP-error:分析WSDL:无法从“”加载:文档结尾处的
已经尝试使用MagentoAPI和Soap从php进行访问,但还没有成功。每次我都会遇到这个错误 致命错误:未捕获的SoapFault异常:[WSDL]SOAP-error:分析WSDL:无法从“”加载:文档结尾处的额外内容在
例如,您可以使用Mage_CatalogInventory_Model_Stock_Item_Api类。最简单的方法是在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代码库的参考位于:以下是我们用来获取产品的基本代码。将莱泽答案中的代码与我们在留言板上找到的一些示例相结合。这对我们很有效 注意:在下面的示例中,我们按类别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++;
}
require_once(“app/Mage.php”);
Mage::app();
$category=新的Mage_Catalog_Model_category();
$category->getAllChildren(11);
$products=Mage::getModel('catalog/product')->getCollection();
$products->addAttributeToFilter('status',1)//启用
$products->addCategoryFilter($category);
$products->addAttributeToSelect('*');
$prodIds=$products->GetAllID();
$product=Mage::getModel('catalog/product');
$count=1;
foreach($prodIds作为$productId)
{
回显“$count
”;
$product->load($productId);
$product_data=array();
$product_data['sku']=$product->getSku();
$product_data['title']=$product->getName();
$product_data['description']=$product->getDescription();
$product_数据['link']=$product->getProductUrl();
$product\u data['image\u link']=Mage::getBaseUrl(Mage\u Core\u Model\u Store::URL\u TYPE\u MEDIA)。'catalog/product'.$product->getImage();
$product_数据['price']=$product->getPrice();
$product_data['brand']=$product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($product);
$product\U data['product\U type']='';
//获取产品类别
foreach($product->getCategoryId()作为$\u categoryId){
$category=Mage::getModel('catalog/category')->load($\u categoryId);
$product_data['product_type'].=$category->getName().,';
}
$product_data['product_type']=rtrim($product_data['product_type'],',');
回声“;
变量转储(产品数据);
//回显“循环结束:”。内存获取用法(false)。“
”;
//冲洗();
$count++;
}
谢谢。我现在正在尝试,通过将这一行添加到SetHeader()下的Soap.php,我最终成功地通过了SoapClient()的初始声明setHeader('Content-Length',strlen($wsdlContent)),但现在我正在超时。尝试创建具有所有访问权限的两个用户,但两个用户都不起作用$代理->登录('USER','XXX');有什么想法吗?你的SOAP URI不好。对WSDL的请求应转到