如果你有一个公用的html代码块单独存放在很多个phtml文件,如何不创建对应的block文件就使其被调用?
1. 传递单个变量到Block/x.phtml
<?php
echo $this->getLayout()->createBlock('lollicupstoreshowcategoryname/category')-setId('22')->setTemplate('showcategoryname/category.phtml')->toHtml();
?>
当你想在Block 里面时候使用下面代码
<?php
class Lollicupstore_ShowCategoryName_Block_Category extends Mage_Core_Block_Template
{
public function test()
{
echo $this->getId();
}
}
当你想在x.phtml 里面时候使用下面代码
<?php
echo $this->getId();
?>
2. 传多个变量到Block/x.phtml
<?php
echo $this->getLayout()->createBlock('lollicupstoreshowcategoryname/category')->setData('key','value')->setId('2222222-')->setTemplate('showcategoryname/category.phtml')->toHtml();
?>
当你想在Block 里面时候使用下面代码
<?php
class Lollicupstore_ShowCategoryName_Block_Category extends Mage_Core_Block_Template
{
public function test()
{
echo $this->getId();
echo $this->key;
}
}
当你想在x.phtml 里面时候使用下面代码
<?php
echo $this->key;
?>
顺便提及一下Block的一般传值方法:
如果想传一个属性如:product传值为mp3到phtml文件中,标签修改为
<reference name=”content”>
<block type=”core/template” product=”mp3″ name=”yourName” template=”your_phtml_file”/>
</reference>
在phtml中,简单使用$this->getProduct();即可输出mp3.
如果传值是动态的,可能最好的传值机会是在controller代码中,代码例如下:
$this->getLayout()->getBlock(‘yourName’)->setProduct(‘mp3’);