magento - 产品模型和product_collection项目在平面目录模式下具有不同的属性

时间:2012-07-20 07:36:50

标签: magento collections properties

我只知道如果我有一个product_collection(例如在目录页面中生成的集合)

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

如果我从这个系列中取出一个项目,我将它与相对模型进行比较 $ _product = Mage :: getModel('catalog / product') - > load($ item-> getEntityId());

这个同一实体的2个实体有不同的属性!

我在平面目录模式下工作。 为什么系列产品与产品型号不同? 我想知道这是否是正确的行为,如果它是如何在两个对象中具有相同的属性!

抱歉,但是magento非常黑暗:(

2 个答案:

答案 0 :(得分:1)

因为Mage::getModel('catalog/product')->load($item->getEntityId());加载了产品的所有属性,并且集合仅加载与情境不同的指定属性。您可以在app/code/core/Mage/Catalog/etc/config.xml attributes找到(CTRL + F),然后您将看到产品集合的所有默认加载属性的列表。您还可以在模块中或直接在Catalog config.xml中更改它们。但是除了调试

之外,在app/code/core/Mage/Catalog/etc/config.xml更改某些内容并不是最好的主意

答案 1 :(得分: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。

好吧,我花了两天时间才知道这一点,我希望它对其他不幸的magento开发者有用。 :)

Magento 1.5版