loadLayout と renderLayout の後にページ タイトルを設定します
-
11-12-2019 - |
質問
レイアウトをレンダリングした後、いくつかのタグ(タイトル、説明)を設定する必要があります。レイアウトファイルを介してタイトルを設定する方法は知っています。
<reference name="head">
<action method="setTitle" translate="title"><title>Your Title</title></action>
</reference>
またはコード経由で head ブロック要素にアクセスし、その要素で setTitle('your title') メソッドを呼び出します。
$this->getLayout()->getBlock('head')->setTitle('your title');
しかし、コレクションのアイテムからタイトルを動的に取得する必要があります。
コントローラーアプローチを使用する場合、商品をロードしてタイトルと説明として設定するフィールドを取得する必要があるため、同じ要素を2回ロードすることになり、商品ページに表示するためにブロックに再度ロードする必要があります。
で保存するのが賢明ですか? Mage::register('variable', 'value');
?レイアウト全体をプログラムで作成し、データを割り当てる必要がありますか? $this->getLayout()->getBlock('your.block.name.in.the.layout')->assign('data', $data);
?
解決
製品について話しているときは、その前に製品を入手するように努めるべきです。 renderLayout
を呼び出してヘッド ブロックにアクセスし、製品を取得します。 Mage::registry('product')
または Mage::registry('current_product')
他のヒント
コレクションの後に読み込まれる、コンテンツ内のテンプレートなしで新しいブロックを割り当てることができます。このブロックでは、メイン ブロック (製品など) またはレジストリからデータを取得することで、必要な情報をすべて取得します。それから電話してください getBlock('head')->setTitle('your title');
から _prepareLayout