私はフロントエンドの Magento 開発者で、かなりの数の独自のテーマを作成しており、Magento の XML ブロックの配置をよりよく理解したいと思っています...
私は通常、local.xml
ファイルを使用してすべてを操作します。次のようにブロックを定義できます。
<cms_index_index>
<reference name="root">
<block type="core/template" name="example_block" as="exampleBlock" template="page/html/example-block.phtml"/>
</reference>
</cms_index_index>
これにより、ホームページ ( cms_index_index
) にブロックが作成されます。このブロックは の 1 レベル下root
に作成されるため、通常は以下を追加してブロックを呼び出します。
<?php echo $this->getChildHtml('exampleBlock') ?>
...to 1column.phtml
(または2columns-left
/right.phtml
など3columns.phtml
)。cms_index_index
ブロックは、適切なページタグに置き換えることで、任意のページに配置できます。
コア XML ファイル全体とチュートリアルで、次のような内容が見られます。
<reference name="root">
<block type="core/template" name="example_block" before="content" template="page/html/example-block.phtml"/>
</reference>
content
は、magento の一般的なページ構造の一部であるブロックであり、私が理解していることbefore="content"
から、使用する必要なく、期待どおりの場所に配置する必要がありますgetChildHtml('exampleBlock')
。私は頻繁に getChildHtml メソッドをバックアップとして使用していますが、これは必ずしも理想的ではなく、必要以上の .phtml ファイルを編集することを意味します。
私はもう試した:
<reference name="root">
<block type="core/template" name="example_block" before="content" template="page/html/example-block.phtml"/>
</reference>
何も表示されません...
<reference name="root">
<block type="core/template" name="example_block" after="header" template="page/html/example-block.phtml"/>
</reference>
まだ何もありません....親ブロック内のすべてのものの前に何かを使用before="-"
または配置することも認識しています。after="-"
ときどきそれでうまくいくこともありますが、通常は混乱してイライラするだけです.
「magento xml before/after not working」についてあちこちでグーグル検索しましたが、これが私だけに起こったのではないかと思い始めました...ブロックを配置するために前/後を使用できる場合と使用できない場合を誰かが説明できますか? 上記の例の何が問題になっていますか?
私はmagento 1.7.0.2にいます(投稿時に入手可能な最新のもの)
これの主な動機は、.phtml を追加するためだけに編集する必要があるコア .phtml ファイルの数を減らすことですgetChildHtml()
。そのため、これを回避する別の (XML) 方法があれば、知りたいです...