在Magento 1.x中,您可以使用以下代码在任何其他模板(phtml)文件中调用/打印任何模块的模板块:
echo $this->getLayout()
->createBlock('newmodule/newblock')
->setTemplate('newmodule/newblock.phtml')
->toHtml();
在Magento 2.x中,它略有不同。
以下是在Magento 2的另一个模板文件中调用/打印自定义模板块的代码。
假设您要调用模块Chapagain_HelloWorld的模板块(helloworld.phtml),则应编写以下代码:
echo $this->getLayout()
->createBlock('Chapagain\HelloWorld\Block\HelloWorld')
->setTemplate('Chapagain_HelloWorld::helloworld.phtml')
->toHtml();
如果要在CMS静态块或Magento 2的CMS页面中调用模板块,则只需编写以下代码:
让我们以上面相同的示例为例(调用模块Chapagain_HelloWorld的helloworld.phtml)。
{{block class="Chapagain\HelloWorld\Block\HelloWorld" name="your_block_name" template="Chapagain_HelloWorld::helloworld.phtml"}}
将变量或参数传递给块
您还可以在从CMS页面或静态块调用.phtml模板时传递变量或参数。
{{block class="Chapagain\HelloWorld\Block\HelloWorld" name="your_block_name" title="My Title" count="10" template="Chapagain_HelloWorld::helloworld.phtml"}}
您可以在上面看到我们已经向块代码传递了两个额外的变量/参数(title
和count
)。
现在,要从模板(.phtml
)或块类(.php
)文件访问这些变量,您必须编写以下内容。
$title = $this->getData('title');
$count = $this->getData('count');
对于本文的示例,此代码可以同时写在template(Chapagain\HelloWorld\view\frontend\templates\helloworld.phtml
)和block class(Chapagain\HelloWorld\Block\HelloWorld.php
)文件中。
希望这可以帮助。谢谢。