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 に答える