2011-03-16 45 views
0

我正試圖編寫一些自定義邏輯,用於在Magento商店中瀏覽和搜索。Magento的getAttributeText不一致

所以我想我會爲Mage_Catalog_Model_Layer和Mage_CatalogSearch_Model_Layer覆蓋getProductCollection。

我試圖根據某些屬性的值對集合中的某些產品做出決定,但我似乎無法獲取所有屬性的文本值。

的功能,因爲我已經覆蓋是:

public function getProductCollection() 
{ 
    if (isset($this->_productCollections[$this->getCurrentCategory()->getId()])) { 
     $collection = $this->_productCollections[$this->getCurrentCategory()->getId()]; 
    } else { 
     $collection = $this->getCurrentCategory()->getProductCollection(); 
     $this->prepareProductCollection($collection); 
     $this->_productCollections[$this->getCurrentCategory()->getId()] = $collection; 
    } 

    //ben 
    $collection->addAttributeToSelect('parent_sku'); 
    $collection->addAttributeToSelect('door_color'); 
    foreach($collection as $product) { 
      echo "\nSKU: ".$product->getSku()."\n"; 
      $product_data = $product->getData(); 
      if(isset($product_data['parent_sku']) && ($product_data['parent_sku'] != '')) { 
        echo "GETDATA PARENT: ".$product_data['parent_sku']."\n"; 
      } 
      if($product->getAttributeText('parent_sku') != '') { 
        echo "ATTR TEXT PARENT: ".$product->getAttributeText('parent_sku')."\n"; 
      } 
      if($product->getAttributeText('door_color') != '') { 
        echo "ATTR TEXT COLOR: ".$product->getAttributeText('door_color')."\n"; 
      } 
    } 
    //end ben 

    return $collection; 
} 

這將產生輸出,如:

SKU:TEST_SKU_1
GETDATA家長:TEST_SKU_2
ATTR文本顏色:黑色

公告:
我添加'parent_sku'和'door_color'作爲要選擇的屬性。
我可以通過訪問door_color $產品 - > getAttributeText()
使用$產品 - 我不能訪問parent_sku> getAttributeText()
我可以通過$產品 - 訪問parent_sku>的getData()

任何時候,我打電話$ product-> getAttributeText('parent_sku')它返回false。

我認爲這是一個緩存問題,但我沖刷緩存,似乎沒有幫助。

有沒有人有線索爲什麼我不能通過getAttributeText()訪問'parent_sku'的值?

回答

1

是否將parent_sku作爲下拉框實現?我的理解是,getAttributeText加載下拉選項,並將它們從ID和ID映射爲文本。

+0

就是這樣。謝謝。 – ben 2011-03-17 21:26:01