getData在Mage_Core_Block_Template自定义块中不起作用

时间:2013-03-15 11:22:35

标签: magento

我用这种方式定义了一个自定义块:

<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

2 个答案:

答案 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'); 
}