Я пытаюсь написать собственную логику для просмотра и поиска в магазине Magento.
Итак, я решил перезаписать getProductCollection для Mage_Catalog_Model_Layer и Mage_CatalogSearch_Model_Layer.
Я пытаюсь принимать решения на основе значения определенных атрибутов для некоторых продуктов в коллекции, но я не могу получить текстовое значение всех атрибутов.
Функция, которую я перезаписал:
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 PARENT: TEST_SKU_2
ЦВЕТ ТЕКСТА ATTR: Черный
Примечание:
Я добавляю 'parent_sku' и 'door_color' в качестве атрибутов для выбора.
Я могу получить доступ к door_color, используя $ product-> getAttributeText ()
Я не могу получить доступ к parent_sku, используя $ product-> getAttributeText ()
Я могу получить доступ к parent_sku через $ product-> getData ()
Каждый раз, когда я вызываю $ product-> getAttributeText ('parent_sku'), он возвращает false.
Я предполагал, что это проблема с кэшированием, но я очистил кеш, и это, похоже, не помогло.
Кто-нибудь знает, почему я не могу получить доступ к значению parent_sku через getAttributeText ()?