我用这种方式定义了一个自定义块:
<frontend>
<layout>
<updates>
<categorylist module="mymodule">
<file>mymodule.xml</file>
</categorylist>
</updates>
</layout>
</frontend>
<global>
<blocks>
<categorylist>
<class>Alias_CategoryList_Block</class>
</categorylist>
</blocks>
</global>
然后我用这种方式定义了块类
class Alias_CategoryList_Block_List extends Mage_Core_Block_Template
{
public $idCategory = NULL;
// Contructor
public function __construct()
{
echo $this->getData('categoryid');
}
}
以这种方式布局:
<default translate="label">
<block type="categorylist/list" name="categorylist.list" output="toHtml" after="-" template="mymodule.phtml"/>
我以这种方式将块放在CMS中:
{{block type="categorylist/list" categoryid="10"}}
但遗憾的是$ this-&gt; getData('categoryid');一无所获。 想不通怎么了? 我甚至尝试了$ this-&gt; getCategoryid;但即使没有。 有人可以帮忙吗?
我正在使用Magento 1.7
答案 0 :(得分:0)
添加具有
的视图(phtml)模板文件会有愚蠢吗?<?php echo $this->getCategoryId(); ?>
而不是试图在构造函数中完成它?此外,您不需要自己的代码隐藏文件,只需使用core/template
。
所以你的cms将是
{{block type="core/template" template="awesome.phtml" cateogryid="10"}}
答案 1 :(得分:0)
问题在于我假设布局更新配置将扩展CMS中的代码,但CMS中的代码不应具有用于我的目的的块名称和模板参数。所以我修复了它在构造函数中删除模板并删除配置中的布局更新(因为我不需要块来覆盖现有块):
// Contructor
public function __construct()
{
$this->setTemplate('mymodule.xml');
}