2012-02-02 59 views
1

如何爲cms頁面動態設置元數據(描述,標題,關鍵字)?元數據應根據URL中的參數生成(例如:?part=light)。Magento CMS頁面設置動態元數據

我已經嘗試將{{block type="myblock"}}放置在Meta Data選項卡的關鍵字中,但是這並未評估。

我可以把這個{{block type="myblock"}}放在內容中,當cms頁面顯示時它會調用我的塊。從塊我可以檢查URL是什麼,並基於創建的元數據,但我不知道如何訪問我的塊的CMS頁頭塊。

回答

2

CMS模板指令通過模板過濾器(在Mage_Cms config.xml中指定)進行處理,並且僅用於cms/page塊。見Mage_Core_Model_Email_Template_Filter(不是拼寫錯誤)。

有很多方法可以做到這一點。一種可能的方法是觀察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('...'); 
    } 
} 

我對後者接近傾向是,這個事件被觸發控制器中的作用,這是比較邏輯連接與請求對象。這兩種方法都可以做到這一點。