2013-07-05 58 views
3

我試圖加載在目錄中的自定義類別/分類/ view.phtml歸檔此我使用:Magento的 - 獲取產品項目在view.phtml屬性

<?php 
$_category = Mage::getModel('catalog/category')->load(47); 
$_productCollection = $_category->getProductCollection(); 
if($_productCollection->count()) { 
    foreach($_productCollection as $_product): 
     echo $_product->getProductUrl(); 
     echo $this->getPriceHtml($_product, true); 
     echo $this->htmlEscape($_product->getName()); 
    endforeach; 
} 
?> 

我可以加載網址例如,現在我想加載例如顏色的自定義屬性:

$_product->getResource()->getAttribute('color')->getFrontend()->getValue($_product) 

此代碼不能正常工作,我100%肯定的顏色屬性設置的類別,顯示上市,並在項目這個類別有這個字段填充。我知道這是因爲此代碼適用於list.html

我做錯了什麼?我正在使用1.7.0.2。

預期的結果是,以顯示從定製cateogory的所有顏色attibutes在

目錄/分類/ view.phtml

回答

3

我不能相信我只是找到了答案。因爲我們不在常規類別列表中,所以我們需要將自定義屬性添加到集合中。

下面是代碼:

$_productCollection = $_category->getProductCollection() 
->addAttributeToSelect('color'); 
+0

我意外地低估了這一點。如果你編輯它,我會很樂意收回。 –

+0

我已經改變它。 –

+0

謝謝,我很感激。 –

2

如果「色」是在平坦的桌面,你應該能夠

$_product->getColor(); 

如果此屬性是不是在集合中,你可以或者通過使屬性可過濾將其添加到平坦表中,將其添加到PHP集合調用中

$_productCollection = $_category->getProductCollection() 
    ->addAttributeToSelect('color'); 

或負載的產品型號來獲得所有屬性

$_product = Mage::getModel('catalog/product')->load($_product->getId()); 
echo $_product->getColor(); 
+0

問題是,因爲你不在列表中,「Magento確實知道這個屬性是關聯的。至少對我來說這是行不通的。 –

+0

我不在什麼名單? –

+0

對不起,我不是指你,我的意思是'顏色'不在集合中。 –

1
  1. 讓這個屬性在上市/前端可見

  2. 運行重建索引

  3. foreach($_productCollection as $_product): echo $_product->getProductUrl();

在這段代碼中var_dump $_product->getData();檢查此var_dump是否會導致顯示該特定屬性值。

注:

$_product->getResource()->getAttribute('color')->getFrontend()->getValue($_product) 

是不是要求的一個非常有效的方式。

相關問題