昨天我写了一些代码来提取产品集。这段代码工作得很好,但是今天,代码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缓存似乎让一切都恢复正常。这是否意味着集合有时会使用缓存,是否有某种方法可以编写代码以便它不使用缓存?
答案 0 :(得分:12)
这取决于您在哪里使用您的收藏。如果在前端使用了集合并且启用了平面模式,那么您的属性将不可用,因为它们不包含在Flat索引中。
要将它们包含在flat索引中,您需要将以下XML配置添加到模块的config.xml文件中
<config>
<frontend>
<product>
<collection>
<attributes>
<MPN />
<JAN />
<UPC />
</attributes>
</collection>
</product>
</frontend>
</config>
在这种情况下,它将以平面模式提供。此外,通过向此XML节点添加属性,您的属性也将自动添加到前端的所有产品列表集合中。
与Magento Development一起玩得开心!