1. Можно на ходу отдавать свои данные вместо закэшированных. Для этого надо перекрыть класс \XLite\Core\ConfigCell и его метод __get(). Но - хранилище древообразное и у ветки нет ссылки на старшую ветку. В результате - вполне может быть, что в разных разделах хранилища будут ячейки с одинаковыми именами. Поэтому - либо надо задавать для ячейки хранение длинное уникальное имя, либо надо как-то решать проблему не на уровне объекта хранения, а на уровне его отдачи. А это уже второй способ :)
2. Можно перекрыть класс \XLite\Model\Repo\Config, метод getAllOptions() и в нем менять хранилище. Причем - этот метод за весь запуск приложения вызывается только один раз. А значит его перекрытие оптимально по производительности.
В ходе же изменения хранилища есть две подхода:
a. изменение непосредственно нужной ячейки в хранилище. Например, так:
...
$data = parent::getAllOptions($force);
$data->General->minimal_order_amount = 10;
return $data;
...
b. замена всей ветки на другой объект-хранилище. Например, так:
...
$data = parent::getAllOptions($force);
$data->General = new \XLite\Module\Author\Name\Core\MyConfigCell(
$data->General->getData()
);
return $data;
...
Комментариев нет:
Отправить комментарий