Magento 2: Gọi một Widget trong tệp .phtml


11

Tôi có một tiện ích:

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

Vì vậy, nó hoạt động trong nội dung của khối CMS hoặc trang CMS. Tôi muốn hiển thị nó trong tệp .phtml, làm thế nào tôi có thể làm điều đó?


Tại sao bạn thích thêm widget trong phtml hơn là trong layout xml?
Paul

Câu trả lời:


12

Đối với loại hiển thị = Tất cả các widget sản phẩm

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

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

Đối với loại hiển thị = Widget sản phẩm mới

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

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

Điều này không hoạt động trong Magento 2.1.1
thdoan 7/10/2016

kiểm tra cập nhật hoạt động tốt của nó
PG Sutariya

1

Nếu chúng ta xem mô-đun khách hàng, ví dụ:

nhà cung cấp / magento / mô-đun khách hàng / xem / frontend / samples / 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 ?>

Như chúng ta có thể thấy, chúng ta có thể gọi một widget trực tiếp trong mẫu phtml: $ block-> getLayout () -> createBlock ('your \ widget') .


0

Hãy thử đoạn mã sau và kiểm tra xem nó có hoạt động không:

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

Trong đó page_id = "2" là widget của tôi chỉ được thay thế bằng id widget của bạn.


Opps đó là magento 1 có vẻ như liên kết này: magentotutorialbeginners.blogspot.com/2014/03/ Ấn
Minh Dao

Đây là cách chính xác được giải thích ở đây Cách chính xác để thêm widget trong tệp
.phtml

@muditmehrotra Không, đó là cho Magento 1.
Thiết kế của Adrian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.