2012-02-02 13 views
1

cmsページダイナミクスのメタデータ(説明、タイトル、キーワード)の設定方法は?メタデータは、URLのパラメータ(例:?part=light)に応じて生成する必要があります。Magento CMSのページ設定ダイナミックメタデータ

私は{{block type="myblock"}}を[メタデータ]タブのキーワードに配置しようとしましたが、これは評価されません。

これは{{block type="myblock"}}をContentに入れることができ、cmsページが表示されたらブロックを呼び出します。ブロックからは、URLが何であるかを確認してメタデータを作成することができますが、ブロックからCMSページのヘッドブロックにアクセスする方法はわかりません。

答えて

2

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('...'); 
    } 
} 

後者のアプローチのための私の好みは、このイベントは、コントローラのアクションにトリガされ、より論理的に接続されているということです要求オブジェクトと関連付けます。いずれのアプローチでもそのトリックが行われます。

関連する問題