2012-05-19 174 views
1

在extention我得到產品收集catalog_product_view頁面上是這樣的:Magento的產品收集

if (!$product = Mage::registry('product')) { 
    return new Varien_Data_Collection(); 
} 
$category = new Mage_Catalog_Model_Category(); 
$category->load($product->getCategoryId()); 
$collection = $category->getProductCollection(); 

,我怎麼能到這個集合添加附加屬性?

例如我不能讓這樣的事情

$collection->addAttributeToSelect('manufacturer'); 

我希望通過代碼來添加一些屬性(沒有ID,因爲這可能是在佈局中添加不同的屬性),該屬性,然後組數據

日Thnx

回答

1

那麼你可以產物收集和過濾它,而不是直接獲取特定類別的產品:

if (!$product = Mage::registry('product')) { 
    return new Varien_Data_Collection(); 
} 
// get a product collection and filter it by category 
$collection = Mage::getModel('catalog/product')->getCollection(); 
$collection->addCategoryFilter($product->getCategoryId()); 
// add the attributes you need 
$collection->addAttributeToSelect('manufacturer'); 
$collection->setOrder('manufacturer', 'asc'); 
// load the collection and return it 
$collection->load(); 
return $collection; 

小心:加載後無法將屬性添加到集合中! 此外,您不必明確呼叫load() - 收集將按需加載。

希望這會有所幫助。

+0

這將與平坦的工作,而不是W/O它,因爲我understent - 我想這一點。但是我不能啓用扁平結構,因爲有超過500個產品屬性和服務器配置不允許這個 – Kudja

+0

我不確定這是否沒有問題。無論如何,我想這不是你得到的唯一問題,如果平板被禁用/你的服務器太慢。 Magento必須在良好的基礎架構上運行。 – Simon

0

試試這個

<?php echo $_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product); ?>