Looking for magento Answers? Try Ask4KnowledgeBase
Looking for magento Keywords? Try Ask4Keywords

magentoレンダリング


備考

テーマによるコア機能のカスタマイズ

テーマにはレイアウトファイルがあり、とりわけページに表示されるブロックを変更するのに使用できます。ブロックテンプレートを変更して、異なるメソッドを呼び出すこともできます。

店舗レベルの設計

Magentoの階層構造テーマは、基本テーマを店舗レベルで拡張して割り当てることができるということを意味します。

カスタムテーマの登録

テーマは、次の3つの方法で設定できます。

  1. システム>設定>デザインの下の店舗ごと。
  2. 時間制限付きの設計変更システム>設計。
  3. テーマの例外は、カテゴリと製品レベルで設定することもできます。

パッケージとテーマ

パッケージには複数のテーマがあります。パッケージ内の各テーマは、パッケージ内のデフォルトテーマを継承しています。

デザインフォールバック

テンプレートファイルを検索するためのテーマフォールバック手順は次のとおりです。

  1. {パッケージ} / {テーマ}
  2. {パッケージ} /デフォルト
  3. ベース/デフォルト

テーマ代替メカニズムにディレクトリを追加するには、Mage_Core_Model_Design_Package :: getFilenameメソッドを書き直す必要があります

管理領域の場合、フォールバックはデフォルト/デフォルトです。

テンプレートとレイアウトのパス

ブロック

ブロックは出力に使用されます。ルートブロックはすべてのブロックの親であり、Mage_Page_Block_Htmlタイプです。

Mage_Core_Block_Templateブロックはテンプレートファイルを使用してコンテンツをレンダリングします。テンプレートファイル名は相対パスでsetTemplate()またはaddData( 'template')内で設定されます。

テンプレートは、Mage_Core_Block_Templateに含まれる単なるPHPの部分です。したがって、$ thisはテンプレートを参照しています。

Mage_Core_Block_Templateは、早すぎる出力を防ぐためにテンプレートを含める前にバッファを使用します。

Mage_Core_Model_Layout :: createBlockメソッドは、ブロックのインスタンスを作成します。

Mage_Core_Model_Layout_Updateクラスは、レイアウトハンドルを見て、各ページに対して作成する必要のあるブロックを考慮します。

すべての出力ブロックがレンダリングされます。たとえば、toHtml()を呼び出すことによってレンダリングされます。これは、子をレンダリングすることを選択できます。

TextおよびText_Listブロックは自動的にコンテンツをレンダリングします。

HTMLをレンダリングする前と後でブロックを変更するために使用できるブロックレンダリングには、2つのイベントが発生します。

core_block_abstract_to_html_before core_block_abstract_to_html_after子ブロックは、クラスMage_Core_Block_Textlistの場合にのみ自動的にレンダリングされます。それ以外の場合、getChildHtmlメソッドを呼び出す必要があります。

ブロックインスタンスは、Mage :: app() - > getLayout()や$ controller-> getLayout()などのレイアウトを通じてアクセスできます。ブロック出力は_toHtml()関数によって制御されます。

テンプレートは、テンプレートブロック内のrenderView()/ fetchView()メソッドによってレンダリングされます。出力バッファリングは$ layout-> setDirectOutputで無効にすることができます。

現在のレイアウトにブロックを追加することは可能ですが、renderLayout()メソッドが呼び出される前にブロックを追加する必要があります。

レイアウトXML

<reference>
  -edit a block
<block>
  - define a block 
<action>
  - call method on a block
<update>
  - include nodes from another handle.

レイアウトファイルはconfig.xmlに登録することができます:

<config>
    <{area}>
        <layout>
            <updates>
                <{name}>
                    <file>{filepath}</file>
                </{name}>
            </updates>
        </layout>
    </{area}>
</config>

ページ出力は、次の方法でカスタマイズできます。

  • テンプレートの変更
  • レイアウトの変更
  • ブロックのオーバーライド
  • オブザーバブロックの変数は、次のように設定できます。
  • レイアウト - アクションまたは属性を通じて
  • コントローラ - $ this-getLayout() - > getBlock()
  • 子ブロック - $ this-> getChild()
  • その他-Mage :: app() - > getLayout()

ヘッドブロックアセット

JavaScriptとCSSアセットはMage_Page_Block_Html_headブロックで処理されます。このブロックでは、アセットを単一のファイルにマージしてHTTP要求を最小限に抑えます。マージされたファイルは、ソースファイルの編集時間に基づいています。

CSSをマージするとき、Mage_Core_Model_Design_Packageのコールバック関数が呼び出され、@importまたはurl()ディレクティブが正しいURLで更新されます

レンダリング 関連する例