Какие индексы необходимо переиндексировать, чтобы продукты правильно отображались после изменения запасов с помощью скрипта?


8

Я написал крон, который обновляет инвентарь моих продуктов каждую ночь. Какие индексы необходимо переиндексировать, чтобы продукты правильно отображались после изменения запасов с помощью скрипта? Нужно ли обновлять кеш? Попытка точно определить, почему на прошлой неделе в продуктах отсутствовало «добавить в корзину». Реиндексирование решило эту проблему на прошлой неделе, но мне нужно знать, не вызвал ли мой скрипт сценария необходимость переиндексации.

Ответы:


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 каталога (если вы обновили Product или Catalag url)
  • catalog_product_flat - Product Flat Data (если ваш магазин использует таблицы Flate и если вы обновили атрибуты продукта, которые везде используют логику внешнего интерфейса)
  • catalog_category_flat - Плоские данные категории (если вы обновили атрибуты категории)
  • catalog_category_product - Категория товаров (если вы добавили или удалили товары из каталога)
  • catalogsearch_fulltext - индекс поиска по каталогу (если вы обновили искомые атрибуты товара)
  • cataloginventory_stock - Состояние склада (если вы обновили опционы на товар)
  • tag_summary - данные агрегации тегов (если вы обновили тег продукта)

И вы можете (вы должны обновить денежные средства после любого обновления продуктов / категорий) программно очистить кэш magento в своей логике:

Mage::app()->getCacheInstance()->flush();
Mage::app()->cleanCache();
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.