2012-04-10 10 views
9

私はCMS->ページの "ホームページ"ファイルにあります。コンテンツでは私はこのような行を書いています:私は、コンテンツファイルnewfile.phtmlでレンダリングしたいCMSページブロックマゼンタ追加

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

。私は何を間違っているのですか?あなたのブロックに名前を付ける必要があるアプリ\設計\フロントエンド\デフォルト\ themeas \テンプレート\ myfolderなど\ newfile.phtml

答えて

21

私の新しいファイルが下にあります。それがMagentoがブロックを参照する方法です。また、ブロックをレンダリングするには、ブロックタイプが有効である必要があります。デフォルトのブロックがタイプ=「コア/テンプレート」を使用してみてくださいについて

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

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

type属性についてのもう一つのノートで、そのディレクトリ/ファイル構造ではない実際には、むしろ、それはですMagentoオートローダにマップされたURI。 "Core"は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に解決されます。すべてのタイプ属性が実行しているのは、ブロック内にロードする必要があるメソッドをMagentoに伝えることです。あなたが試すことができます

カップルの他のブロックの種類は次のとおりです。製品のリストについては

コア/ text_list

:(自動的に子のブロックをレンダリングブロック)テキストリストの カタログ/ product_list

カテゴリーブロックの

カタログ/ category_view

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

上記の答えは正常に動作:私は選択肢を提供したいと思い

{{block type="core/template" name="my.block.name" myvariable="5" template="myfolder/newfile.phtml"}} 
+0

「許可」にステータスを設定します1.9.2.3 as '' 'block type =" catalog/product_list "category_id =" 8 "template =" catalog/product/featured.phtml "}}' '' – lrkwz

+2

ブロックのパーミッションを与えるのを忘れないでください。 (magento version 1.9+)system-> permission-> blocks – Mike

6

、あなたのような何かを行うことができますWYSIWYGを使用してテキストとコンテンツを編集しようとするときに、クライアントがこの重要な行を削除できる(および持っている)ので、CMSページのコンテンツにブロックを挿入しないことをお勧めします。あなたはCMSページのレイアウト>レイアウト更新XMLセクションに以下を追加でき

<reference name="content"> 
    <block after="-" type="your/block_type" name="block.name" template="your/block/template/file.phtml"/> 
    <action method="insert" ifconfig="your/block_type"> 
     <block>block.name</block> 
    </action> 
</reference> 

この方法は、クライアントは、このタブを編集する可能性が低いです!

これは誰でもこの問題を解決するのに役立ちます。

3

:あなたがブロックに変数を渡したい場合は

3

Magento 1.9.2.2以降、または同等のパッチが適用されているため、新しいブロックにも権限を与える必要があります。あなたはバックエンドでこれを行います: システム|アクセス許可|ブロック

すなわち、あなたが表示したい場合:

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

は、あなたのブロック名「カタログ/ product_bestseller」を追加し、バージョンまで、名前なしに働いた私のサイトの一つで

関連する問題