我正在尝试编写一些用于在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()
每当我调用$ product-> getAttributeText('parent_sku')时,它都会返回false。
我认为这是一个缓存问题,但我刷新缓存,这似乎没有帮助。
有没有人知道为什么我无法通过getAttributeText()访问'parent_sku'的值?
答案 0 :(得分:1)
parent_sku是否作为下拉框实现?我的理解是getAttributeText加载了下拉选项并将它们和ID映射到你的文本。