Добавьте включенный и/или эффективный режим в виджеты


Я пытаюсь расширить функциональность вставки виджетов magento (в меню CMS). в частности, я хотел бы добавить "Включено", а также активное От/До.

Я могу сделать это в интерфейсе администратора обычным способом, однако, похоже, я не могу отследить, как загружаются обновления макета. в идеале я хотел бы иметь возможность перехватить точку, в которой он получает список виджетов из коллекции db\, и применить некоторую условную логику, чтобы игнорировать виджеты, которые еще не активны. Я знаю, что если я заставлю это работать, кэширование может сделать его ненадежным, но это меньше беспокоит.

Если бы кто-нибудь мог указать мне правильное направление, я был бы признателен.

Заранее благодарю.

 3
Author: Keyul Shah, 2013-12-05

2 answers

Итак, с точки зрения внешнего интерфейса, что происходит с этими обновлениями макета, выглядит следующим образом.

Сначала они хранятся в таблице core_layout_update. Это сохранит дескриптор и необходимый фрагмент кода xml. Обратите внимание, что связь между обновлением виджета и макета находится в таблице widget_instance_page_layout.

Во время загрузки макета в файле Mage_Core_Model_Layout_Update есть вызов для объединения всей информации о макете на основе дескриптора.

Это, в свою очередь, вызывает $this->fetchDbLayoutUpdates($handle);, который будет загружать любую информацию на основе заданный дескриптор макета из таблицы core_layout_update и создайте строку xml из результатов. Затем это обновление будет добавлено в макет.

Я бы предположил, что одной из функций, которую вы могли бы расширить, было бы Mage_Core_Model_Resource_Layout::fetchUpdatesByHandle и добавление ваших проверок фильтров здесь.

 0
Author: David Manners, 2014-11-11 10:38:31

Похоже, что это сделано в Mage/Widget/Model/Widget.php. Функция getWidgetsXml() строит список настроенных виджетов. Похоже, у него уже есть опция фильтрации, но переписать эту функцию, кажется, проще всего. Просто сначала проверьте, что вы хотите жестко закодировать, а затем позвольте ему выполнить проверку фильтра.

 0
Author: Melvyn, 2014-11-08 09:28:29