0

私は、product_collection (たとえば、カタログ ページで生成されたコレクション) があるかどうかを知っています。

//event catalog_product_collection_after_load $productCollection = $observer->getEvent()->getCollection();

このコレクションからアイテムを取得し、それを相対モデルと比較すると $_product = Mage::getModel('catalog/product')->load($item->getEntityId());

同じエンティティのこの 2 つのインスタンスには、異なるプロパティがあります!

フラット カタログ モードで作業しています。コレクションのアイテムが製品モデルと異なるのはなぜですか? これが正しい動作であるかどうか、そして両方のオブジェクトで同じプロパティを持つ方法があるかどうかを知りたいです!

申し訳ありませんが、マジェントは非常に暗いです:(

4

2 に答える 2

1

Mage::getModel('catalog/product')->load($item->getEntityId());製品のすべての属性をロードし、コレクションは状況とは異なる指定された属性のみをロードするためです。app/code/core/Mage/Catalog/etc/config.xml次のような場所に (CTRL+F) を見つけるattributesと、製品コレクションのデフォルトでロードされたすべての属性のリストが表示されます。また、モジュールで、またはカタログ config.xml で直接変更することもできます。app/code/core/Mage/Catalog/etc/config.xmlしかし、デバッグ以外で何かを変更するのは最善の考えではありません

于 2012-07-20T07:53:43.120 に答える
0

flat_mode を使用した catalog_product_collection の場合は、項目のコレクションに属性を追加するのがより複雑になります。 製品項目にある属性は、catalog_product_flat テーブルと製品エンティティの EAV 属性との間の結合です。

したがって、次の製品モデルで:

  • catalog_product_flat テーブルと EAV 属性の間で結合された属性を持つコレクション
  • getModel('catalog/product')すべての EAV 属性があります

これらの属性には、確かに他の属性があります。他の点で追加されたと思います。

では、catalog_product_flat にはどの属性があるでしょうか? シンプルは、magento 管理属性で「商品リストで使用」としてチェックした属性です! :)

ただし、選択したタイプの種類によっては、このオプションを変更できない属性もあります。属性タイプの画像には「製品リストで使用」フラグがないため、製品リストに新しい画像が必要な場合は、catalog_eav_attribute を変更する必要があります。

まあ、私はこれを知るために 2 日間を費やしました。他の不運なマジェント開発者に役立つことを願っています。:)

マジェント バージョン 1.5

于 2012-07-20T13:38:39.107 に答える