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

How to get multiple product details in magento 1.7

我的产品页面有自定义功能,其中很多产品显示在 table 中。现在我有一个包含产品 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.
?>

然后您可以使用 foreach 循环浏览每个产品并以这种方式获取它们的数据:

<?php
foreach($products as $product) {
    echo "Name: " . $product->getName();
    echo "Price: " . $product->getPrice();
    // etc, etc
?>

在此处了解有关集合的更多信息:http://devdocs.magento.com/guides/m1x/magefordev/mage-for-dev-8.html(向下滚动至模型集合)。

编辑 - 要按 SKU 过滤,您可以得到您想要的确切 SKU:

->addAttributeToFilter('sku', array('in' => array('customsku-101', 'customsku-101', 'customsku-102')))

或者您可以获得以特定字符串开头的 SKU:

->addAttributeToFilter('sku', array('like' => 'customsku-%'));

或以某个字符串结尾(%为通配符):

->addAttributeToFilter('sku', array('like' => '%-customsku'));