Директивы шаблона CMS обрабатываются через фильтр шаблона (указанный в config.xml Mage_Cms), и это только для блока 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('...');
}
}
Мое предпочтение для последнего подхода заключается в том, что это событие инициируется в действии контроллера, которое более логически связано с объектом запроса. Любой подход сделает свое дело.