Можете ли вы загрузить экземпляр виджета из шаблона?


Я хотел бы создать "виджеты" в определенных областях на моем сайте, которые могут иметь определенные параметры, настраиваемые нетехническим администратором магазина Magento. Виджеты, по всем описаниям, звучат как хороший способ сделать это. Все элементы adminhtml находятся на месте, чтобы они могли заполнять параметры без особых хлопот.

Однако я не могу понять, как загрузить и отобразить конкретный экземпляр виджета в определенной точке шаблона (созданный с помощью CMS> Виджет > Добавить новый экземпляр виджета и сохранить в widget_instance). Я использовал функцию обновления макета, чтобы вставить ее в блок, которая работает достаточно хорошо, но она недостаточно гибкая для того, чего я хочу достичь.

Возможно ли в файле шаблона загрузить и отобразить экземпляр виджета?

Author: Peter O'Callaghan, 2013-05-23

2 answers

Да, вы можете сделать что-то вроде этого:

$widget = Mage::getModel('widget/widget_instance')->load($widgetId);
$widgetBlock = $this
                   ->getLayout()
                   ->createBlock($widget->getType(),
                                 $widget->getTitle(),
                                 $widget->getWidgetParameters());
echo $widgetBlock->toHtml();
 9
Author: Luke Mills, 2013-05-24 02:32:26

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

$collection = Mage::getModel('widget/widget_instance')->getCollection();
        $collection->addStoreFilter(Mage::app()->getStore()->getId(), false)
            ->addFieldToFilter('title', $filter)->load();

        $widget = $collection->getFirstItem(); 

        if($widget && is_numeric($widget->getId())) {
            $widgetBlock = Mage::app()->getLayout()
                ->createBlock(
                    $widget->getType(),
                    $widget->getTitle(),
                    $widget->getWidgetParameters()
                );
            return $widgetBlock;
        }
        return false;
 0
Author: CarComp, 2018-05-02 13:19:57