0

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

<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->getData('categoryid'); 什么都不检索。无法弄清楚出了什么问题?我什至尝试过 $this->getCategoryid; 但甚至什么都没有。任何人都可以帮忙吗?

我正在使用 Magento 1.7

4

2 回答 2

0

添加具有以下内容的视图(phtml)模板文件会很愚蠢吗

<?php echo $this->getCategoryId(); ?>

而不是试图在构造函数中完成它?此外,您不需要自己的代码隐藏文件,您可以使用core/template.

所以你的 cms 会是

{{block type="core/template" template="awesome.phtml" cateogryid="10"}}
于 2013-03-16T01:40:59.523 回答
0

问题是我假设布局更新配置将扩展 CMS 中的代码,但 CMS 中的代码不应该有块名称和模板参数用于我的目的。所以我修复了它,清除了构造函数中的模板并删除了配置中的布局更新(因为我不需要该块来覆盖现有块):

// Contructor
public function __construct()
{
    $this->setTemplate('mymodule.xml'); 
}
于 2013-03-17T16:19:02.087 回答