Magento 2: Chame um Widget em um arquivo .phtml

11

Eu tenho um widget:

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

Por isso, funciona no conteúdo do bloco CMS ou da página CMS. Quero mostrá-lo em um arquivo .phtml, como posso fazer isso?

Minh Dao
fonte
Por que você prefere adicionar widget em phtml do que em layout xml?
Paul

Respostas:

12

Para Tipo de exibição = Todo o widget do produto

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

e

<?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(); ?>

Para Tipo de exibição = Novo widget de produto

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

e

<?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(); ?>
PG Sutariya
fonte
Isso não está funcionando no Magento 2.1.1
thdoan 7/10
verificar atualização funciona bem
PG Sutariya 8/16
1

Se dermos uma olhada no módulo do cliente, por exemplo:

fornecedor / magento / module-customer / view / frontend / templates / form / 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 ?>

Como podemos ver, podemos chamar um widget diretamente no modelo phtml: $ block-> getLayout () -> createBlock ('seu \ widget') .

Khoa TruongDinh
fonte
0

Tente o seguinte código e verifique se funciona:

<?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; 
?>

Onde page_id = "2" é meu widget, é substituído apenas pelo seu ID de widget.

DEEP JOSHI
fonte
As operações que são magento 1 parecem com este link: magentotutorialbeginners.blogspot.com/2014/03/…
Minh Dao
Esta é a maneira correta explicado aqui Maneira correta para adicionar widget no arquivo .phtml
mudit mehrotra
@muditmehrotra Não, isso é para o Magento 1.
Design por Adrian