Magento 2 自定义小部件设置模板数据未在前端呈现
Magento 2 Custom Widget set template data not render at frontend
我正在努力在自定义扩展中创建自定义小部件。我按照 this 在我的自定义 extension.All 中创建小部件工作正常但数据未显示在模板中 $this->setTemplate('widget/viewed_list.phtml');
在我的代码下面:
Technologymindz/Instagramfeed/Block/Widget/Instawidget.php
<?php
namespace Technologymindz\Instagramfeed\Block\Widget;
class Instawidget extends \Magento\Framework\View\Element\Template implements \Magento\Widget\Block\BlockInterface
{
public function _toHtml()
{
$this->setTemplate('widget/viewed_list.phtml');
}
}
Technologymindz/Instagramfeed/etc/widget.xml
<?xml version="1.0" encoding="UTF-8"?>
<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../Magento/Widget/etc/widget.xsd">
<widget id="tm_customwidget" class="Technologymindz\Instagramfeed\Block\Widget\Instawidget">
<label translate="true">Instagram Feeds</label>
<description>Show Your Instagram Feeds Anywhere</description>
<parameters>
<parameter name="tmfeedtoshow" xsi:type="select" required="true" visible="true">
<label>Show Latest Feeds</label>
<options>
<option name="default" value="12" selected="true">
<label translate="true">12</label>
</option>
<option name="list" value="24">
<label translate="true">24</label>
</option>
</options>
</parameter>
<parameter name="tmview_type" xsi:type="select" required="true" visible="true">
<label>Select View Type</label>
<options>
<option name="default" value="widget/viewed_grid.phtml" selected="true">
<label translate="true">Grid View</label>
</option>
<option name="list" value="widget/viewed_list.phtml">
<label translate="true">List View</label>
</option>
</options>
</parameter>
</parameters>
</widget>
</widgets>
Technologymindz/Instagramfeed/view/frontend/widget/viewed_list.phtml
<?php
echo $this->getTmview_type();
echo 'Welcome';
?>
未显示 viewed_list.phtml
的数据输出,但如果我在块 _toHtml()
函数中设置了某些内容,它就会显示出来。
public function _toHtml()
{
return '<p class="hello">Hello world!</p>';
}
我想在 .phtml
中而不是在 Block 中管理输出,希望我能解决这个问题或任何更好的 Magento 2 自定义 Widget 数据渲染教程。
好的,经过大量研究,我找到了一篇温和的文章 here 并且这个问题适合我。我确实完全删除了 _toHtml
功能
解决方案对我有用:
protected function _construct()
{
parent::_construct();
$this->setTemplate('widget/viewed_list.phtml');
}
我正在努力在自定义扩展中创建自定义小部件。我按照 this 在我的自定义 extension.All 中创建小部件工作正常但数据未显示在模板中 $this->setTemplate('widget/viewed_list.phtml');
在我的代码下面:
Technologymindz/Instagramfeed/Block/Widget/Instawidget.php
<?php
namespace Technologymindz\Instagramfeed\Block\Widget;
class Instawidget extends \Magento\Framework\View\Element\Template implements \Magento\Widget\Block\BlockInterface
{
public function _toHtml()
{
$this->setTemplate('widget/viewed_list.phtml');
}
}
Technologymindz/Instagramfeed/etc/widget.xml
<?xml version="1.0" encoding="UTF-8"?>
<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../Magento/Widget/etc/widget.xsd">
<widget id="tm_customwidget" class="Technologymindz\Instagramfeed\Block\Widget\Instawidget">
<label translate="true">Instagram Feeds</label>
<description>Show Your Instagram Feeds Anywhere</description>
<parameters>
<parameter name="tmfeedtoshow" xsi:type="select" required="true" visible="true">
<label>Show Latest Feeds</label>
<options>
<option name="default" value="12" selected="true">
<label translate="true">12</label>
</option>
<option name="list" value="24">
<label translate="true">24</label>
</option>
</options>
</parameter>
<parameter name="tmview_type" xsi:type="select" required="true" visible="true">
<label>Select View Type</label>
<options>
<option name="default" value="widget/viewed_grid.phtml" selected="true">
<label translate="true">Grid View</label>
</option>
<option name="list" value="widget/viewed_list.phtml">
<label translate="true">List View</label>
</option>
</options>
</parameter>
</parameters>
</widget>
</widgets>
Technologymindz/Instagramfeed/view/frontend/widget/viewed_list.phtml
<?php
echo $this->getTmview_type();
echo 'Welcome';
?>
未显示 viewed_list.phtml
的数据输出,但如果我在块 _toHtml()
函数中设置了某些内容,它就会显示出来。
public function _toHtml()
{
return '<p class="hello">Hello world!</p>';
}
我想在 .phtml
中而不是在 Block 中管理输出,希望我能解决这个问题或任何更好的 Magento 2 自定义 Widget 数据渲染教程。
好的,经过大量研究,我找到了一篇温和的文章 here 并且这个问题适合我。我确实完全删除了 _toHtml
功能
解决方案对我有用:
protected function _construct()
{
parent::_construct();
$this->setTemplate('widget/viewed_list.phtml');
}