11

私はCMS->ページの「ホームページ」ファイルにあります。コンテンツでは、次のような行を書いています:

{{block type="myfolder/newfile" template="myfolder/newfile.phtml"}}

コンテンツ ファイル newfile.phtml でレンダリングしたい。私は何を間違っていますか?

私の新しいファイルは以下にあります: app\design\frontend\default\themeas\template\myfolder\newfile.phtml

4

4 に答える 4

22

ブロックに名前を付ける必要があります。これが、Magento がブロックを参照する方法です。また、ブロックをレンダリングするには、ブロック タイプが有効である必要があります。デフォルトのブロックについては、type="core/template" を使用してみてください

新しいコードは次のようになります。

{{block type="core/template" name="my.block.name" template="myfolder/newfile.phtml"}}

type 属性に関するもう 1 つの注意点は、実際にはディレクトリ/ファイル構造ではなく、Magento オートローダーにマップされる URI です。「コア」は Mage_Core_Block_Core クラス (app/code/core/Mage/Core ディレクトリの下) に関連し、スラッシュの後の情報はそのディレクトリ内のフォルダーに関連します。したがって、type="core/template" は、app/code/core/Mage/Core/Block/Template.php にあるこのクラス Mage_Core_Block_Core_Template に解決されます。type 属性が行っているのは、ブロック内にロードする必要があるメソッドを Magento に伝えることだけです。

あなたが試すことができる他のいくつかのブロックタイプは次のとおりです。

商品リストの場合: catalog/product_list

テキスト リスト (子ブロックを自動的にレンダリングするブロック) の場合: core/text_list

カテゴリ ブロックの場合: catalog/category_view

他にもたくさんあります。新しいものを見つける良い方法は、実行しようとしているものと同様のアクションを実行するブロックを見て、それが XML で定義されている場所を見つけることです。

于 2012-04-10T16:02:59.260 に答える
7

ブロックに変数を渡したい場合は、次のようにすることができます。

{{block type="core/template" name="my.block.name" myvariable="5" template="myfolder/newfile.phtml"}}
于 2013-10-02T08:11:45.153 に答える
5

Magento 1.9.2.2 以降、または同等のパッチ以降、新しいブロックに権限を付与する必要もあります。これはバックエンドで行います。パーミッション | ブロック

つまり、表示したい場合:

{{block type="catalog/product_bestseller" name="krillo.bestseller" template="catalog/product/bestseller.phtml"}}

ブロック名「catalog/product_bestseller」を追加し、ステータスを「許可」に設定します

于 2016-04-21T12:26:14.910 に答える