$event =Mage::getSingleton('index/indexer')->logEvent(
$product,
$product->getResource()->getType(),Mage_Index_Model_Event::TYPE_SAVE,false);Mage::getSingleton('index/indexer')->getProcessByCode('catalog_url')// Adjust the indexer process code as needed->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)->processEvent($event);
Доступные коды индексатора можно просмотреть с помощью запроса:
В Magento EE 1.13 все по-другому: индексатор автоматически выбирает измененные объекты при каждом запуске cron (каждую минуту).
ОБНОВИТЬ
Приведенный выше ответ в любом случае на 100% правильный. Думаю, приведенная ниже информация может добавить что-то еще.
Если вам нужно изменить только несколько значений атрибутов в продукте и автоматически обновить таблицу относительных индексов, вы можете использовать эту функцию:
Mage::getSingleton('catalog/product_action')->updateAttributes();
если вы хотите управлять реиндексом самостоятельно, используйте вместо этого модель ресурсов: Mage::getResourceSingleton('catalog/product_action')->updateAttributes();
Например, я использую следующую функцию для быстрого обновления только определенных атрибутов в продукте.
Я скопирую комментарий user5973 здесь, потому что он будет удален. @ Vinai Вы говорите, что EE 1.13+ не имеет проблем с производительностью при переиндексации данных, связанных с продуктом? Где мы можем подтвердить, что индексатор EE автоматически выбирает измененные объекты и обрабатывает только те из них?
Фабиан Блехшмидт
В EE 1.13 индексатор использует триггеры MySQL для сбора любых изменений на уровне БД и записи обновленных идентификаторов сущностей в таблицу журнала изменений. Эти изменения вносятся в cronjobs.
Винай
2
Я предполагаю, что вы имеете в виду, что вы хотите переиндексировать продукт после редактирования в интерфейсе администратора. Самый простой способ - просто установить режим индексатора на «обновление при сохранении». Это необходимо сделать для всех индексаторов, связанных с продуктами, которые вы используете, возможно, включая: атрибуты продуктов, цены продуктов, данные о продуктах, категории продуктов, состояние запасов.
Убедитесь, что вы не делаете это ни в интерфейсе, ни в сценариях обновления, и в данный момент загружено хранилище «admin». В противном случае $ product-> save () не будет работать вообще. Сначала проверьте, что сохранение продукта имеет эффект.
Помимо ответа @ feversocial, прежде чем вызывать $ product-> save (), убедитесь, что у вас есть все необходимое для загрузки в продукт. В противном случае экономия может фактически удалить вещи из продукта, который я испытал на своем пути.
Подобно тому, как сохранить продукт без SKU, что нарушает все перезаписи URL и делает весь сайт перенаправленным на эту страницу продукта: S: P
Хороший вопрос, поэтому я думаю, что лучше использовать catolog/product_actionподход, чтобы не рисковать вышеупомянутой проблемой
Fra
1
Эта информация может быть полезна для лучшего понимания всего сценария.
Если вам нужно изменить только значение атрибута и автоматически обновить таблицу относительных индексов, вы можете использовать эту функцию:
Mage::getSingleton('catalog/product_action')->updateAttributes();
если вы хотите управлять реиндексом самостоятельно, используйте вместо этого модель ресурсов: Mage::getResourceSingleton('catalog/product_action')->updateAttributes();
Например, я использую следующую функцию для быстрого обновления только определенных атрибутов в продукте.
Я предполагаю, что вы имеете в виду, что вы хотите переиндексировать продукт после редактирования в интерфейсе администратора. Самый простой способ - просто установить режим индексатора на «обновление при сохранении». Это необходимо сделать для всех индексаторов, связанных с продуктами, которые вы используете, возможно, включая: атрибуты продуктов, цены продуктов, данные о продуктах, категории продуктов, состояние запасов.
Это, вероятно, замедлит экономию продукта.
В качестве альтернативы, возможно, эта ссылка поможет. Пожалуйста, смотрите комментарии, а также они описывают, как обновить акции, а также. http://www.magentocommerce.com/answers/discussion/239/reindex-one-product-at-a-time/p1
источник
Убедитесь, что вы не делаете это ни в интерфейсе, ни в сценариях обновления, и в данный момент загружено хранилище «admin». В противном случае $ product-> save () не будет работать вообще. Сначала проверьте, что сохранение продукта имеет эффект.
источник
Помимо ответа @ feversocial, прежде чем вызывать $ product-> save (), убедитесь, что у вас есть все необходимое для загрузки в продукт. В противном случае экономия может фактически удалить вещи из продукта, который я испытал на своем пути.
Подобно тому, как сохранить продукт без SKU, что нарушает все перезаписи URL и делает весь сайт перенаправленным на эту страницу продукта: S: P
источник
catolog/product_action
подход, чтобы не рисковать вышеупомянутой проблемойЭта информация может быть полезна для лучшего понимания всего сценария.
Если вам нужно изменить только значение атрибута и автоматически обновить таблицу относительных индексов, вы можете использовать эту функцию:
Mage::getSingleton('catalog/product_action')->updateAttributes();
если вы хотите управлять реиндексом самостоятельно, используйте вместо этого модель ресурсов:
Mage::getResourceSingleton('catalog/product_action')->updateAttributes();
Например, я использую следующую функцию для быстрого обновления только определенных атрибутов в продукте.
источник