Magento平面索引器不';t复制';图像';目录\产品\平面表格的属性

Magento平面索引器不';t复制';图像';目录\产品\平面表格的属性,magento,flat,Magento,Flat,我正在使用Magento社区1.7.0.2 最近,我决定在我的商店中打开“使用平面目录类别”和“使用平面目录类别”选项。我的前端上所有使用“图像”属性的图像都消失了(它们被默认图像占位符替换)。使用“小图像”或“缩略图”属性显示的所有图像均正确显示 我查看了catalog_product_flat_1表,没有“image”列(但有“image_label”列…)。我查看了平面索引器代码,并能够打印用于获取插入到平面表中的所有属性的SQL语句: SELECT `main_table`.*, `ad

我正在使用Magento社区1.7.0.2

最近,我决定在我的商店中打开“使用平面目录类别”和“使用平面目录类别”选项。我的前端上所有使用“图像”属性的图像都消失了(它们被默认图像占位符替换)。使用“小图像”或“缩略图”属性显示的所有图像均正确显示

我查看了catalog_product_flat_1表,没有“image”列(但有“image_label”列…)。我查看了平面索引器代码,并能够打印用于获取插入到平面表中的所有属性的SQL语句:

SELECT `main_table`.*, `additional_table`.* 
FROM `eav_attribute` AS `main_table` 
INNER JOIN `catalog_eav_attribute` AS `additional_table` 
ON additional_table.attribute_id = main_table.attribute_id 
WHERE (main_table.entity_type_id = :entity_id) AND (main_table.backend_type = 'static'     
OR additional_table.is_used_for_promo_rules = 1 OR additional_table.used_in_product_listing = 1 OR additional_table.used_for_sort_by = 1 
OR main_table.attribute_code IN('sku', 'type_id', 'name', 'status', 'visibility', 'price', 'weight', 'url_path', 'url_key', 'thumbnail', 'small_image', 
'tax_class_id', 'special_from_date', 'special_to_date', 'special_price', 'cost', 'is_recurring', 'recurring_profile', 'msrp_enabled', 'msrp',
'msrp_display_actual_price_type', 'enable_googlecheckout', 'gift_message_available', 'price_view', 'price_type', 'shipment_type', 'weight_type', 
'sku_type', 'links_purchased_separately', 'links_title', 'short_description', 'image_label', 'thumbnail_label', 'small_image_label', 'news_from_date',
'news_to_date', 'created_at', 'updated_at', 'required_options'))
因为您在列表中看不到“image”属性


默认Magento发行版的前端使用了“image”属性,所以我想知道这是一个bug吗?

我前几天刚谈到这个问题。相同的Magento版本(1.7.0.2),但症状不同。事实上,我在我的网站上看到的图像是正确的。我的问题是,我的定制报告中的产品数量(总计、活动、无描述/简短描述、无图像/小/缩略图)开始给出错误的结果,并发现这是因为我激活了平面产品表

事实证明,MagentoAPI(Mage::getModel('catalog/product')->getCollection())自动使用了平面表,那里的信息量并不相同,但只有严格必要的信息

例如,并不是所有属性都被复制,而只是那些被分类为“用于产品列表”的属性。 在我的例子中,描述和图像都没有被复制,所以我去了管理员那里,将两者的“用于产品列表”设置为“是”

对于图像,这并不容易,因为它的“店主目录输入类型”(媒体图像)有效地隐藏了“用于产品列表”字段。因此,我需要一个浏览器开发工具(如Firebug或Chrome开发工具)首先从“商店所有者的目录输入类型”字段中删除disabled=“disabled”HTML属性,并将其更改为其他值。现在“用于产品列表”字段可见,请将其设置为“是”。最后将“商店所有者的目录输入类型”值恢复为“媒体图像”

如果您检查展开表(目录\产品\展开),则会看到图像和描述属性,并且您可以使用

这个过程对我很有效。然后我重新检查了我的目录列表和类似的页面,只是为了避免任何令人讨厌的副作用。。。
希望它对你有用

我前几天刚谈到这个问题。相同的Magento版本(1.7.0.2),但症状不同。事实上,我在我的网站上看到的图像是正确的。我的问题是,我的定制报告中的产品数量(总计、活动、无描述/简短描述、无图像/小/缩略图)开始给出错误的结果,并发现这是因为我激活了平面产品表

事实证明,MagentoAPI(Mage::getModel('catalog/product')->getCollection())自动使用了平面表,那里的信息量并不相同,但只有严格必要的信息

例如,并不是所有属性都被复制,而只是那些被分类为“用于产品列表”的属性。 在我的例子中,描述和图像都没有被复制,所以我去了管理员那里,将两者的“用于产品列表”设置为“是”

对于图像,这并不容易,因为它的“店主目录输入类型”(媒体图像)有效地隐藏了“用于产品列表”字段。因此,我需要一个浏览器开发工具(如Firebug或Chrome开发工具)首先从“商店所有者的目录输入类型”字段中删除disabled=“disabled”HTML属性,并将其更改为其他值。现在“用于产品列表”字段可见,请将其设置为“是”。最后将“商店所有者的目录输入类型”值恢复为“媒体图像”

如果您检查展开表(目录\产品\展开),则会看到图像和描述属性,并且您可以使用

这个过程对我很有效。然后我重新检查了我的目录列表和类似的页面,只是为了避免任何令人讨厌的副作用。。。
希望它对你有用,

尽管@Jordi Buj的答案会有用,但它不是很可持续。 例如,如果在另一个Magento实例上重用该代码,则在有人按照所述步骤将图像包含在平面表中之前,该代码可能无法工作

一种更正确、基于代码的方法是将以下内容添加到Mage_目录、模型、资源、产品集合中:

->joinAttribute('image', 'catalog_product/image', 'entity_id', null, 'left')
而不是典型的:

->addAttributeToSelect('image')
后者只是将“image”添加到要选择的列中(这没有帮助,因为它不是平面产品表中的列),前者将显式地与EAV表中的image属性连接


希望这会有所帮助。

尽管@Jordi Buj的答案会奏效,但它不是很可持续。 例如,如果在另一个Magento实例上重用该代码,则在有人按照所述步骤将图像包含在平面表中之前,该代码可能无法工作

一种更正确、基于代码的方法是将以下内容添加到Mage_目录、模型、资源、产品集合中:

->joinAttribute('image', 'catalog_product/image', 'entity_id', null, 'left')
而不是典型的:

->addAttributeToSelect('image')
后者只是将“image”添加到要选择的列中(这没有帮助,因为它不是平面产品表中的列),前者将显式地与EAV表中的image属性连接


希望能有所帮助。

我也花了一些时间来解决这个问题,下面是我发现的最干净的解决方案,它使用Magento的XML样式抽象将
图像
列添加到
目录产品平面1
表中:

在config.xml中:

<config>
    <frontend>
        <product>
            <collection>
                <attributes>
                    <image />
               </attributes>
            </collection>
        </product>
    </frontend>
</config>

然后勒住