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?


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

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


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.