Magento 2: appelez un widget dans un fichier .phtml

11

J'ai 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"}}

Cela fonctionne donc dans le contenu du bloc CMS ou de la page CMS. Je veux l'afficher dans un fichier .phtml, comment faire?

Minh Dao
la source
Pourquoi vous préférez ajouter un widget en phtml plutôt qu'en mise en page xml?
Paul

Réponses:

12

Pour le type d'affichage = Widget de tous les produits

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

et

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

Pour le type d'affichage = Widget de nouveau produit

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

et

<?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
la source
Cela ne fonctionne pas dans Magento 2.1.1
thdoan
vérifier la mise à jour de ses travaux très bien
PG Sutariya
1

Si nous regardons le module client, par exemple:

fournisseur / magento / module-client / 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 ?>

Comme nous pouvons le voir, nous pouvons appeler un widget directement dans le modèle phtml: $ block-> getLayout () -> createBlock ('votre \ widget') .

Khoa TruongDinh
la source
0

Essayez le code suivant et vérifiez s'il fonctionne:

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

Où page_id = "2" est mon widget est juste remplacé par votre identifiant de widget.

DEEP JOSHI
la source
Opps qui est magento 1 ressemble à ce lien: magentotutorialbeginners.blogspot.com/2014/03/…
Minh Dao
C'est la bonne manière expliquée ici Bonne façon d'ajouter un widget dans un fichier
.phtml
@muditmehrotra Non, c'est pour Magento 1.
Design by Adrian