在我的网站中,我需要通过从数据库中获取元标记来为每个控制器设置元标记(元关键字,元描述)。
现在我需要编写一个函数,它将从DB获取相关的META内容并设置Meta标签取决于当时加载的控制器
但我无法得到能为它编写功能的地方。
我发现辅助函数headMeta()从每个View文件设置相同但我需要在所有控制器init()函数中重复相同的db操作。
任何人都可以帮忙解决我必须在控制器中编写的代码并查看文件请.....
谢谢。
答案 0 :(得分:2)
这应该有效,而不是经过测试。请将类名更改为命名空间: - )
//layout.phtml
<?php echo $this->headMeta(); ?>
//My_Controller_Plugin_HeadMeta.php
class My_Controller_Plugin_HeadMeta extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$controller = $this->getControllerName();
$db = Zend_Db_Table_Abstract::getDefaultAdapter();
$layout = Zend_Layout::getMvcInstance();
$view = $layout->getView();
// do your db stuff here
// db results
$results = array();
foreach ($results as $result) {
$view->headMeta()->appendName('keywords', $result);
}
}
}
//applications.ini
resources.frontController.plugins.0 = "My_Controller_Plugin_HeadMeta"