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

問題は、レイアウトの更新構成によって CMS のコードが拡張されると想定していましたが、CMS のコードにはブロック名とテンプレート パラメーターが含まれていてはならないということでした。したがって、コンストラクターでテンプレートを宣言し、構成でレイアウトの更新を削除して修正しました (既存のブロックをオーバーライドするブロックは必要ないため)。

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

を持つビュー(phtml)テンプレートファイルを追加するのはばかげていますか

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

コンストラクターでそれを達成しようとする代わりに?また、使用できる独自のコード ビハインド ファイルは必要ありませんcore/template

だからあなたのcmsは

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