2016-05-13 98 views
0

我在我的產品頁面中有許多產品顯示在表格中的自定義功能。現在我有一個產品SKU的數組和循環利用他們的foreach函數中使用代碼的詳情如下如何在magento 1.7中獲得多個產品詳細信息1.7

$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的產品詳細信息,因爲我需要減少通話次數以提高頁面加載時間。

+0

爲什麼不使用集合而不是加載模型很多次:o –

回答

2

有一個更簡單,更不用說更有效的方式來加載多個產品。您可以通過收集加載:

<?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')); 
+0

問題是我需要將一組特定的SKU傳遞給產品集合。我可以得到嗎? – prdp

+0

@prdp你的確可以 - 看到編輯。 –

+0

@prdp注意:對於你要做的事情,使用'addFieldToFilter()'或'addAttributeToFilter()'應該可以工作。 –

相關問題