Magento 2: Wywołaj widget w pliku .phtml

11

Mam widżet:

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

Działa więc w treści bloku CMS lub strony CMS. Chcę pokazać to w pliku .phtml, jak mogę to zrobić?

Minh Dao
źródło
Dlaczego wolisz dodawać widżet w formacie phtml niż w formacie xml?
Paul

Odpowiedzi:

12

Dla typu wyświetlania = widżet wszystkich produktów

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

i

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

Dla typu wyświetlania = widżet nowego produktu

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

i

<?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
źródło
To nie działa w Magento 2.1.1
thdoan
sprawdź aktualizację działa dobrze
PG Sutariya
1

Jeśli spojrzymy na moduł klienta, na przykład:

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

Jak widzimy, możemy wywołać widget bezpośrednio w szablonie phtml: $ block-> getLayout () -> createBlock ('your \ widget') .

Khoa TruongDinh
źródło
0

Wypróbuj następujący kod i sprawdź, czy działa:

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

Gdzie page_id = "2" to mój widget jest właśnie zastąpiony identyfikatorem widżetu.

DEEP JOSHI
źródło
Opps, czyli Magento 1, wygląda tak: ten link: magentotutorialbeginners.blogspot.com/2014/03/...
Minh Dao
@muditmehrotra Nie, to dotyczy Magento 1.
Projekt autorstwa Adriana