スクリプトを使用して在庫を変更した後に製品を正しく表示するには、どのインデックスを再インデックスする必要がありますか?


8

私は毎晩製品の在庫を更新するcronを作成しました。スクリプトを使用して在庫を変更した後に製品を正しく表示するには、どのインデックスを再インデックスする必要がありますか?キャッシュを更新する必要がありますか?先週、「カートに追加」が製品にない理由を正確に指摘しようとしています。先週、インデックスを再作成することでその問題は解決しましたが、ストックスクリプトによってインデックスの再作成が必要になったかどうかを知る必要があります。

回答:


14

製品の在庫オプションを更新すると、プログラムで「在庫状況」テーブルのインデックスを再作成できます。

    try {
        $indexer = Mage::getModel('index/indexer')->getProcessByCode('cataloginventory_stock');
        $indexer->reindexEverything();
    } catch (Exception $e) {
        //Some error handling
    }

インデクサーモデルを取得するには、を使用しますMage::getModel('index/indexer')->getProcessByCode('some_indexer_code_given_below')。Magentoはいくつかのインデクサーを提供します。プログラムで製品を更新する場合、以下のインデクサーを使用できます。indexer_codeを指定するだけで、指定されたスニペットを変更する必要があります(index_processテーブルを参照)。

  • catalog_product_attribute-商品属性(レイヤードナビゲーションで使用される属性を更新した場合)
  • catalog_product_price-製品価格(価格を更新した場合)
  • catalog_url-カタログURLの書き換え(製品またはCatalagのURLを更新した場合)
  • catalog_product_flat-商品のフラットデータ(ストアがFlateテーブルを使用し、フロントエンドロジックで使用される商品属性を更新した場合)
  • catalog_category_flat-カテゴリフラットデータ(カテゴリ属性を更新した場合)
  • catalog_category_product-カテゴリー製品(カタログに製品を追加または削除した場合)
  • catalogsearch_fulltext-カタログ検索インデックス(製品の検索可能な属性を更新した場合)
  • cataloginventory_stock-在庫状況(製品の在庫オプションを更新した場合)
  • tag_summary-タグの集計データ(製品タグを更新した場合)

また、ロジック/プログラムでmagentoキャッシュを消去できます(製品/カテゴリの更新後にキャッシュを更新する必要があります)。

Mage::app()->getCacheInstance()->flush();
Mage::app()->cleanCache();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.