Magento 2: llamar a un widget en un archivo .phtml

11

Tengo un 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 lo tanto, funciona en el contenido del bloque CMS o la página CMS. Quiero mostrarlo en un archivo .phtml, ¿cómo puedo hacerlo?

Minh Dao
fuente
¿Por qué prefiere agregar widget en phtml en lugar de en xml de diseño?
Paul

Respuestas:

12

Para Tipo de pantalla = Todo el widget de producto

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

y

<?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 pantalla = Nuevo widget de producto

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

y

<?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
fuente
Esto no funciona en Magento 2.1.1
thdoan
comprobar la actualización funciona bien
PG Sutariya
1

Si echamos un vistazo al módulo del cliente, por ejemplo:

vendor / 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 llamar a un widget directamente en la plantilla phtml: $ block-> getLayout () -> createBlock ('your \ widget') .

Khoa TruongDinh
fuente
0

Pruebe el siguiente código y verifique si 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; 
?>

Donde page_id = "2" es mi widget, solo se reemplaza con su identificación de widget.

JOSHI PROFUNDO
fuente
Opps que es magento 1 parece este enlace: magentotutorialbeginners.blogspot.com/2014/03/…
Minh Dao
Esta es la forma correcta explicada aquí Forma correcta de agregar widget en el archivo
.phtml
@muditmehrotra No, eso es para Magento 1.
Diseño de Adrian