Написать плагин для MODx
Нужно написать плагин(а возможно снипет), который будет производить вычисления и записывать итоговые значения в поля товара.
На сайте хитрая система формирования цены и большей части характеристик товара, так как на уровне самого товара они не заполняется, а тянутся от родителя (категории). Сделано, это для того, чтобы можно было сразу изменить много товаров за минимальное телодвижение, знаю, что есть инструменты для коллективного изменения данных, но этот вариант владельцу сайта не подходит.
У товара заполняется его типоразмер, на основании которого вы вычисляется данные поэтому товара. Но так как эти данные не хранятся в БД а каждый раз должны вычисляется, то идет много запросов, что замедляет выдачу станицы.
Идея сделать так, чтобы при сохранении товара, «перезапекались» данные на основании родителя в нужные поля конкретного товара, или же если изменен родитель, то «перезапекались» данные по всем товарам этого родителя.
Сейчас логика такая:
Товар с типоразмером (маленький) => идем к родителю и смотрим какая у этого товара цена, к ней также у родителя добавляем стоимость цены упаковки, и добавляем наценку которая указывается на уровне самого товара. Аналогично делается и со старой ценой. Причем она работает не на всех товарах, а только на части.
Данная схема расчётов увеличивает скорость выдачи станицы на четверть. Есть идея что если мы плагином будем сразу автоматом записывать эти данные в поля, то естественно запросов будет меньше. Но есть непонимание, насколько это будет грузить сайт в момент обновления данных.
Наверно надо делать проверку на изменение конкретных полей для активации плагина, ил запускать его вручную по требованию. Товаров сейчас в категории 150 перспектива роста бесконечна.
В идеале это должен быть плагин (а возможно и сниппет, если речь идет о отложенном запуске по требованию), в который указываю чанк для выполнения расчета, и поле куда записать данные. Так это будет максимально универсальный вариант, так как в плагин вроде нельзя добавить чанк.
Жду ваши комментарии и предложения, основанные на опыте)