6

昨天我写了一些代码来提取产品集合。这段代码工作正常,但是今天,代码没有工作,没有任何改变,我不明白为什么它不能工作。

这是我编码的

$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 缓存似乎使一切恢复正常。这是否意味着集合有时会使用缓存,有什么方法可以编写代码使其不使用缓存吗?

4

1 回答 1

12

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

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

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

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

享受 Magento 开发的乐趣!

于 2012-08-03T15:14:39.653 回答