Magento - 在view.phtml中获取产品项属性

时间:2013-07-05 17:55:22

标签: magento attributes magento-1.7

我正在尝试在 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

3 个答案:

答案 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)

  1. 在listing / frontend中显示此属性

  2. 运行重新索引

  3. foreach( $_productCollection as $_product ): echo $_product->getProductUrl();

  4. 在此代码var_dump $_product->getData();

    检查此var_dump是否会导致显示该特定属性值。

    注意:

    $_product->getResource()->getAttribute('color')->getFrontend()->getValue($_product)
    

    不是一种非常有效的呼叫方式。