Создание и размещение виджета с помощью сценария установки
Вопрос
Могу ли я создать экземпляр виджета и назначить его на определенную страницу, чтобы появиться через сценарий установки? Я хотел бы иметь некоторую функциональность, аналогичную содержимому образца, но с виджетами. Чтобы быть более конкретным, мой вопрос направлен на создание экземпляров виджетов и размещение их на определенных страницах программно через сценарий установки.
Решение
Это не красиво, но, конечно, вы можете создать экземпляр виджета программно, например, в скрипте установки:
$widgetParameters = array(
'param1' => 'This is some value from the widget form,
'param2' => 'Some/other/value',
'param2_2' => 'Rly?',
'template' => 'this/is/the/template.phtml'
);
$instance = Mage::getModel('widget/widget_instance')->setData(array(
'type' => 'your_module/your_widget',
'package_theme' => 'default/theme', // has to match the concrete theme containing the template
'title' => 'This is the Widget title',
'store_ids' => '0', // or comma separated list of ids
'widget_parameters' => serialize($widgetParameters),
'page_groups' => array(array(
'page_group' => 'all_pages',
'all_pages' => array(
'page_id' => null,
'group' => 'all_pages',
'layout_handle' => 'default',
'block' => 'left',
'for' => 'all',
'template' => $widgetParameters['template],
)
))
))->save();
Этот пример устанавливает экземпляр виджета для отображения на каждой странице в левом столбце.
Если вы хотите указать разные страницы или целевые блоки, вам необходимо соответствующим образом обновить значения. Я предлагаю посмотреть, что входит в Mage_Widget_Adminhtml_Widget_InstanceController::saveAction()
и изменить код выше соответственно.
Другие советы
Вы можете создать пользовательский модуль, а не Script. Вы можете направить эту официальную ссылку Magento на создание виджета Magento
http://www.magentocommerce.com/knowledge-base/entry/tutorior-creating-a-magento-widget-part-1
http://www.magentocommerce.com/knowledge-base/entry/tutorior-creating-a-magento-widget-part-2