Magento 2: вызов виджета в файле .phtml

11

У меня есть виджет:

{{widget type="Magento\Catalog\Block\Product\Widget\NewWidget" display_type="all_products" products_count="5" template="product/widget/new/content/new_grid.phtml"}}

Так что это работает в контенте блока CMS или страницы CMS. Я хочу показать это в файле .phtml, как я могу это сделать?

Минь Дао
источник
Почему вы предпочитаете добавить виджет в phtml, а не в макете XML?
Пол

Ответы:

12

Для типа отображения = весь виджет продукта

{{widget type="Magento\Catalog\Block\Product\Widget\NewWidget" 
display_type="all_products" products_count="5" template="product/widget/new/content/new_grid.phtml"}}

а также

<?php echo $this->getLayout()->createBlock("Magento\Catalog\Block\Product\Widget\NewWidget")->setDisplayType("all_products")->setProductsCount("5")->setTemplate("product/widget/new/content/new_grid.phtml")->toHtml(); ?>

Для типа отображения = Новый виджет продукта

{{widget type="Magento\Catalog\Block\Product\Widget\NewWidget" display_type="new_products" products_count="5" template="product/widget/new/content/new_grid.phtml"}}

а также

<?php echo $this->getLayout()->createBlock("Magento\Catalog\Block\Product\Widget\NewWidget")->setDisplayType("new_products")->setProductsCount("5")->setTemplate("product/widget/new/content/new_grid.phtml")->toHtml(); ?>
П.Г. Сутария
источник
Это не работает в Magento 2.1.1
thoan
проверить обновление его работы отлично
PG Sutariya
1

Если мы посмотрим на модуль клиента, например:

продавец / Magento / модуль-клиент / вид / интерфейс / шаблоны / формы / edit.phtml

<?php $_dob = $block->getLayout()->createBlock('Magento\Customer\Block\Widget\Dob') ?>
<?php if ($_dob->isEnabled()): ?>
    <?php echo $_dob->setDate($block->getCustomer()->getDob())->toHtml() ?>
<?php endif ?>

Как мы видим, мы можем вызвать виджет прямо в шаблоне phtml: $ block-> getLayout () -> createBlock ('your \ widget') .

Хоа ТруонгДинь
источник
0

Попробуйте следующий код и проверьте, работает ли он:

<?php
    $filter = new Mage_Widget_Model_Template_Filter();
    $_widget = $filter->filter('{{widget type="cms/widget_page_link" template="cms/widget/link/link_block.phtml" page_id="2"}}');
    echo $_widget; 
?>

Где page_id = "2" - мой виджет просто заменен вашим идентификатором виджета.

Глубокий Джоши
источник
Оппс, который является magento 1, выглядит следующим образом: magentotutorialbeginners.blogspot.com/2014/03/…
Минь Дао,
Это правильный способ, объясненный здесь. Правильный способ добавления виджета в файл
.phtml
@muditmehrotra Нет, это для Magento 1.
Дизайн Адриана