Magento 2: Rufen Sie ein Widget in einer HTML-Datei auf

11

Ich habe ein Widget:

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

Es funktioniert also im Inhalt des CMS-Blocks oder der CMS-Seite. Ich möchte es in einer .phtml-Datei anzeigen. Wie kann ich das tun?

Minh Dao
quelle
Warum bevorzugen Sie das Hinzufügen eines Widgets in HTML anstelle von Layout-XML?
Paul

Antworten:

12

Für Anzeigetyp = Alle Produkt-Widget

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

und

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

Für Anzeigetyp = Neues Produkt-Widget

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

und

<?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
quelle
Dies funktioniert nicht in Magento 2.1.1
am
Check Update funktioniert gut
PG Sutariya
1

Wenn wir uns zum Beispiel das Kundenmodul ansehen:

Hersteller / Magento / Modul-Kunde / Ansicht / Frontend / Vorlagen / Formular / 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 ?>

Wie wir sehen können, können wir ein Widget direkt in der HTML-Vorlage aufrufen: $ block-> getLayout () -> createBlock ('your \ widget') .

Khoa TruongDinh
quelle
0

Versuchen Sie den folgenden Code und prüfen Sie, ob er funktioniert:

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

Wo page_id = "2" ist, wird mein Widget nur durch Ihre Widget-ID ersetzt.

TIEFER JOSHI
quelle
Opps, die Magento 1 ist, scheinen wie dieser Link: magentotutorialbeginners.blogspot.com/2014/03/…
Minh Dao
Dies ist der richtige Weg, der hier erklärt wird. Richtiger Weg, um Widget in .phtml-Datei hinzuzufügen
mudit mehrotra
@muditmehrotra Nein, das ist für Magento 1.
Design von Adrian