1

Magento Community 1.7.0.2 を使用しています。

最近、ストアで「フラット カタログ カテゴリを使用する」オプションと「フラット カタログ カテゴリを使用する」オプションをオンにすることにしました。「画像」属性を使用していたフロントエンドのすべての画像が消えました(デフォルトの画像プレースホルダーに置き換えられました)。「small_image」または「thumbnail」属性で表示されるすべての画像が正しく表示されます。

catalog_product_flat_1 テーブルを調べたところ、そこに「画像」列はありません (ただし、「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 ディストリビューションのフロントエンドで使用されるため、これはバグでしょうか?

4

4 に答える 4

6

私もこの問題を理解するのに少し時間を費やしましたが、これが最もクリーンで、Magento の XML スタイルの抽象化を使用してテーブルにimage列を追加することがわかったソリューションです。catalog_product_flat_1

config.xml で:

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

次に、フラット カタログ テーブルのインデックスを再作成し ([管理] > [インデックス管理] > [すべてを選択 + 再インデックス])、すべての Magento キャッシュをクリアします。

于 2014-06-24T21:21:36.853 に答える
2

先日、この問題にたどり着きました。症状は異なりますが、同じ Magento バージョン (1.7.0.2) です。私は実際に自分のサイトで画像を正しく見ていました。私の問題は、製品数 (合計、アクティブ、説明/短い説明なし、画像/小/サムネイルなし) を含むカスタム レポートが正しくない結果を出し始め、それがフラットな製品テーブルを有効にしてからであることが判明したことでした。

Magento API (Mage::getModel('catalog/product')->getCollection()) は自動的にフラット テーブルを使用し、そこには同じ量の情報はなく、厳密に必要な情報だけが存在することがわかりました。

たとえば、すべての属性がコピーされるわけではなく、「商品リストで使用」として分類された属性のみがコピーされます。私の場合、説明と画像の両方がコピーされていなかったので、管理者に行き、両方の「商品リストで使用」をはいに設定しました。

画像の場合、「店主のカタログ入力タイプ」(メディア画像)が「商品リストで使用」フィールドを効果的に隠しているため、簡単ではありませんでした。そのため、ブラウザ開発者ツール (Firebug や Chrome 開発ツールなど) を使用して、最初に「ストア所有者のカタログ入力タイプ」フィールドから disabled="disabled" HTML 属性を削除し、それを他の値に変更する必要がありました。[製品リストで使用] フィールドが表示されるようになったので、[はい] に設定します。最後に、「ストア所有者のカタログ入力タイプ」の値を「メディア イメージ」に戻します。

フラット テーブル (catalog_product_flat_) を調べると、画像と説明の属性が表示されます。

このプロセスは私にとってはうまくいきました。次に、厄介な副作用を避けるために、カタログのリストと同様のページを再確認しました...うまくいくことを願っています

于 2013-05-30T09:05:54.847 に答える
0

この問題は、次のコードを実行することで解決できます。

$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','image');

if ($attributeId) {
    $attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
    $attribute->setUsedInProductListing(1)->save();
}

ローカル モジュールの 1 つでデータ アップグレード スクリプトを作成することで、これを行うことにしました。データ アップグレード スクリプトの作成方法の詳細については、この記事のデータ スクリプトセクションを参照してください。

于 2014-09-15T12:44:56.740 に答える