Php 如何在magento 1.7中获取多个产品详细信息

Php 如何在magento 1.7中获取多个产品详细信息,php,magento,magento-1.7,Php,Magento,Magento 1.7,我在我的产品页面中有自定义功能,其中许多产品显示在一个表中。现在我有了一个包含产品SKU的数组,并使用foreach函数循环它们,以使用下面的代码获取详细信息 $url = Mage::getModel('catalog/product')->loadByAttribute('sku', $productSku)->getProductUrl();//get product page url of ech product $productName = Mage::getModel(

我在我的产品页面中有自定义功能,其中许多产品显示在一个表中。现在我有了一个包含产品SKU的数组,并使用foreach函数循环它们,以使用下面的代码获取详细信息

$url  = Mage::getModel('catalog/product')->loadByAttribute('sku', $productSku)->getProductUrl();//get product page url of ech product
$productName = Mage::getModel('catalog/product')->loadByAttribute('sku', $productSku)->getName();//get product name
$productPrice = Mage::getModel('catalog/product')->loadByAttribute('sku', $productSku)->getFinalPrice();//get product price
$qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId())->getQty();

问题是,我的页面的加载时间是25秒。有没有办法在一次调用或一组调用中获得阵列中sku的所有产品详细信息,因为我需要减少调用次数以缩短页面加载时间。

有一种更简单、更高效的方法加载多个产品。您可以按集合加载:

<?php
$products = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSelect('*') // You can filter by attributes if required.
    ->addAttributeToFilter('type_id', 'simple') // You can change to configurable or bundle or grouped, etc.
    ->addFieldToFilter('attribute_set_id', 11); // If you want to get products that are a certain attribute set.
?>
有关集合的更多信息:(向下滚动至模型集合)

编辑-要按SKU进行筛选,您可以获取所需的确切SKU:

->addAttributeToFilter('sku', array('in' => array('customsku-101', 'customsku-101', 'customsku-102')))
或者,您可以获取以特定字符串开头的SKU:

->addAttributeToFilter('sku', array('like' => 'customsku-%'));
或以特定字符串结尾(
%
为通配符):


有一种更简单、更高效的方法可以加载多个产品。您可以按集合加载:

<?php
$products = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSelect('*') // You can filter by attributes if required.
    ->addAttributeToFilter('type_id', 'simple') // You can change to configurable or bundle or grouped, etc.
    ->addFieldToFilter('attribute_set_id', 11); // If you want to get products that are a certain attribute set.
?>
有关集合的更多信息:(向下滚动至模型集合)

编辑-要按SKU进行筛选,您可以获取所需的确切SKU:

->addAttributeToFilter('sku', array('in' => array('customsku-101', 'customsku-101', 'customsku-102')))
或者,您可以获取以特定字符串开头的SKU:

->addAttributeToFilter('sku', array('like' => 'customsku-%'));
或以特定字符串结尾(
%
为通配符):


为什么不多次使用集合而不是加载模型:为什么不多次使用集合而不是加载模型:或者问题是我需要将一组特定的SKU传递给产品集合。我能得到吗?@prdp注意:对于您试图做的事情,使用
addFieldToFilter()
addAttributeToFilter()
应该也能起到同样的作用。@prdp这个答案对您有帮助吗?如果答案有帮助,请务必将其标记为正确答案,以便其他人在将来可能会发现它的有用性..嘿@david wilkinson.我需要从sku获取产品url、数量、价格和id。这是我现在使用的代码。$products=Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*')->joinField('qty','cataloginventory/stock_item','qty','product_ID=entity_ID','{table}}.stock_ID=1','left')->addAttributeToFilter('qty',array(“gt”=>0))->addAttributeToFilter('sku',array('in'=>array('groupsku));@prdp您最初的问题只是询问加载多个产品模型的最佳方式,已经得到了回答…要获取ID,只需在循环中使用
$product->getId()
,对于库存数量:
$product->getQty()
对于产品URL slug:
$product->getUrlPath()
(如果您在商店中使用slug,则会获取slug,而不是整个类别路径)。问题是我需要将一组特定的SKU传递给产品集合。我可以获取吗?@prdp注意:对于您尝试执行的操作,请使用
addFieldToFilter()
添加属性过滤器()
也应该如此。@prdp这个答案对你有帮助吗?如果答案有帮助,请确保将其标记为正确答案,以便其他人将来可能会发现它有用。@david wilkinson。我需要从sku中获取产品url、数量、价格和id。其中我没有获取产品url、数量和id。这是我现在使用的代码。$products=Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('*')->joinField('qty','cataloginventory/stock_item','qty','product_id=entity_id','{table}}.stock_id=1','left')->addAttributeToFilter('qty',数组('gt=>0))->addAttributeToFilter('sku',数组('in'=>array('groupsku'));@prdp您最初的问题只是询问加载多个产品模型的最佳方式,已得到回答…要获取ID,只需在循环中使用
$product->getId()
,对于库存量:
$product->getQty()
,对于产品URL slug:
$product->getUrlPath()
(如果您在商店中使用,这将获取slug,而不是整个类别路径)。