如何为整个站点加载元标记功能

时间:2011-04-29 11:57:10

标签: zend-framework

在我的网站中,我需要通过从数据库中获取元标记来为每个控制器设置元标记(元关键字,元描述)。

现在我需要编写一个函数,它将从DB获取相关的META内容并设置Meta标签取决于当时加载的控制器

但我无法得到能为它编写功能的地方。

我发现辅助函数headMeta()从每个View文件设置相同但我需要在所有控制器init()函数中重复相同的db操作。

任何人都可以帮忙解决我必须在控制器中编写的代码并查看文件请.....

谢谢。

1 个答案:

答案 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"