Magento集合没有选择属性

时间:2012-08-03 14:56:18

标签: magento

昨天我写了一些代码来提取产品集。这段代码工作得很好,但是今天,代码doe snot工作,没有任何改变,我无法理解为什么它不起作用。

这是我编码的

$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('MPN')
->addAttributeToSelect('JAN')
->addAttributeToSelect('UPC')
->addFieldToFilter(array(
    array('attribute'=>'type_id','eq'=>'simple')
))
->setPage(1,10);
$collection->load();
foreach($collection as $item)
{

echo print_r($item->getdata());
}

昨天我能够看到包含我的MPN,JAN和UPC的产品列表(这些是后端的自定义属性)。今天他们根本不负荷。这很奇怪,我想也许我对收藏的理解并不像我想的那么好。

非常感谢任何帮助。


修改

刷新magento缓存似乎让一切都恢复正常。这是否意味着集合有时会使用缓存,是否有某种方法可以编写代码以便它不使用缓存?

1 个答案:

答案 0 :(得分:12)

这取决于您在哪里使用您的收藏。如果在前端使用了集合并且启用了平面模式,那么您的属性将不可用,因为它们不包含在Flat索引中。

要将它们包含在flat索引中,您需要将以下XML配置添加到模块的config.xml文件中

<config>
    <frontend>
         <product>
              <collection>
                   <attributes>
                      <MPN />
                      <JAN />
                      <UPC />
                   </attributes>
              </collection>
          </product>
    </frontend>
</config>

在这种情况下,它将以平面模式提供。此外,通过向此XML节点添加属性,您的属性也将自动添加到前端的所有产品列表集合中。

与Magento Development一起玩得开心!