Слетают правила каталога в Magento: как быстро исправить проблему


Magento – довольно сложная система управления Интернет-магазином и далеко не все при работе с ней гладко. Одна из частых проблем – перестают работать ценовые правила каталога, в результате не работают скидки для различных групп товаров. О том, как помочь делу, будет показано в этой статье.

Помогаем системе вручную

Самый простой способ поправить ситуацию – это перейти в раздел Маркетинг, Ценовые правила для каталога и нажать кнопку Применить правила.

Способ простой и подойдет, если правила слетают не очень часто. Если это происходит раз в месяц или хотя бы раз в неделю – можно терпеть, пока не будет выяснена причина сбоя. Все равно администратор хотя бы раз в неделю да и заходит в панель управления, поэтому нажать кнопку и подождать пару минут, пока правила будут применены – не проблема.

Костыль для ленивых

Данная ситуация плоха тем, что причин сбоя ценовых правил – довольно много. На поиски проблемы можно потратить много времени. А ведь менеджеры будут бить тревогу, пользователи магазина будут недовольны, начальство тоже. Поэтому мы предлагаем своеобразный костыль, а именно автоматизацию нажатия кнопки Применить правила.

Перейдите в корневой каталог документов веб-сервера. Если в нем отсутствует каталог shell, создайте его. В каталоге shell создайте файл apply_rules.php следующего содержимого:

applyAll();
echo "Done\n";
?>

Этот сценарий можно создать в любом месте веб-сервера, но тогда нужно отредактировать путь к сценарию Mage.php. Не нужно быть PHP-программистом, чтобы догадаться, что делает сценарий – он получает модель правил каталога и вызывает метод applyAll() для применения всех правил.

После того, как PHP-сценарий создан, нужно автоматизировать процесс его запуска.

Создайте файл apply со следующим содержимым:

#!/bin/bash
cd /путь/htdocs/shell
/usr/bin/php apply_rules.php

Здесь вам нужно изменить путь к каталогу shell, в котором находится наш сценарий apply_rules. Далее нужно сделать файл apply исполняемым:

chmod +x apply

Все, можно тестировать:

./apply

Если после выполнения этого сценарий правила были применены, вы все сделали правильно. Далее нужно обеспечить постоянный запуск этого сценария, для этого выполните команду

crontab –e

Добавьте в расписание следующую строку:

00 8 * * * sh /путь/apply

Сохраните изменения и произведите выход из редактора. Данная строчка будет запускать наш сценарий в 8 утра каждый день. Если правила пропадают чаще, чем раз в сутки, можно запускать этот сценарий чаще – хоть каждый час.