Magento getAttributeText不一致

时间:2011-03-16 20:54:27

标签: php magento

我正在尝试编写一些用于在Magento商店中浏览和搜索的自定义逻辑。

所以我想我会为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 PARENT:TEST_SKU_2
ATTR TEXT COLOR:黑色

注意:
我将'parent_sku'和'door_color'都添加为要选择的属性 我可以使用$ product-> getAttributeText()来访问door_color 我无法使用$ product-> getAttributeText()
访问parent_sku 我可以通过$ product-> getData()

访问parent_sku

每当我调用$ product-> getAttributeText('parent_sku')时,它都会返回false。

我认为这是一个缓存问题,但我刷新缓存,这似乎没有帮助。

有没有人知道为什么我无法通过getAttributeText()访问'parent_sku'的值?

1 个答案:

答案 0 :(得分:1)

parent_sku是否作为下拉框实现?我的理解是getAttributeText加载了下拉选项并将它们和ID映射到你的文本。