如何在 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'));
我的产品页面有自定义功能,其中很多产品显示在 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'));