我正在尝试在 catalog / category / 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;
}
?>
我可以加载URL,例如,现在我想加载一个自定义属性,例如color:
$_product->getResource()->getAttribute('color')->getFrontend()->getValue($_product)
此代码不起作用,我100%确定颜色属性设置为在类别列表中显示,并且此类别中的项目也填写此字段。我知道这一点,因为此代码适用于 list.html 。
我做错了什么?我正在使用1.7.0.2。
预期结果是显示来自
中自定义类别的所有COLOR属性目录/类别/ view.phtml
答案 0 :(得分:3)
我简直不敢相信我找到了答案。因为我们不在常规类别列表中,所以我们需要将自定义属性添加到集合中。
以下是代码:
$_productCollection = $_category->getProductCollection()
->addAttributeToSelect('color');
答案 1 :(得分:2)
如果平面表中有“颜色”,您应该
$_product->getColor();
如果此属性不在集合中,您可以通过使属性可过滤将其添加到平面表中,将其添加到PHP集合调用中
$_productCollection = $_category->getProductCollection()
->addAttributeToSelect('color');
或者加载产品型号以获取所有属性
$_product = Mage::getModel('catalog/product')->load($_product->getId());
echo $_product->getColor();
答案 2 :(得分:1)
在listing / frontend中显示此属性
运行重新索引
foreach( $_productCollection as $_product ):
echo $_product->getProductUrl();
var_dump $_product->getData();
中检查此var_dump
是否会导致显示该特定属性值。
注意:
$_product->getResource()->getAttribute('color')->getFrontend()->getValue($_product)
不是一种非常有效的呼叫方式。