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?


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

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') .


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.