CMSテンプレートディレクティブは、テンプレートフィルタ(Mage_Cms config.xmlで指定)を介して処理され、CMS /ページブロックのみに適用されます。 Mage_Core_Model_Email_Template_Filter
(誤字ではありません)を参照してください。
これを行う方法はたくさんあります。 1つの可能な方法は、cms_page_load_after
イベントを観察することです。あなたのイベントオブザーバメソッドでは、次のようなものをやる:
if(Mage::app()->getRequest()->getParam('your_param_etc'))
{
$observer->getObject()->setTitle('...')
->setKeywords('...')
->setDescription('...');
}
それがモデルに直接リクエストを結びつけるので、私はしかし、このアプローチの最大のファンではありません。代わりに次のcontroller_action_layout_render_before_cms_page_view
にイベントオブザーバを経由してロジックを処理して行うために、より適切であるかもしれない:
if(Mage::app()->getRequest()->getParam('your_param_etc'))
{
$head = Mage::app()->getLayout()->getBlock('head');
if($head){
$head->setTitle('...')
->setKeywords('...')
->setDescription('...');
}
}
後者のアプローチのための私の好みは、このイベントは、コントローラのアクションにトリガされ、より論理的に接続されているということです要求オブジェクトと関連付けます。いずれのアプローチでもそのトリックが行われます。