0

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

//事件目录_product_collecion_after_load $productCollection = $observer->getEvent()->getCollection();

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

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

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

抱歉,但是 magento 很黑 :(

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 天时间才知道这一点,我希望它对其他不幸的 magento 开发人员有用。:)

Magento 1.5 版

于 2012-07-20T13:38:39.107 回答