Как загрузить функции мета-тегов для всего сайта

#zend-framework

#zend-framework

Вопрос:

На моем сайте мне нужно установить мета-теги (мета-ключевые слова, мета-описание) по-разному для каждого контроллера, взяв его из базы данных.

Теперь мне нужно написать функцию, которая будет получать соответствующее МЕТА-содержимое из базы данных и устанавливать мета-теги в зависимости от того, какой контроллер загружается в этот момент

Но я не мог понять, где я могу написать функцию для этого.

Я нашел вспомогательную функцию headMeta (), чтобы установить то же самое для каждого файла представления, но мне, я думаю, нужно повторить ту же операцию с базой данных во всех функциях контроллера init ().

Кто-нибудь может помочь с кодом, который я должен написать в контроллере и просмотреть файлы, пожалуйста…..

Спасибо.

Ответ №1:

Это должно сработать, а не протестировано. Пожалуйста, измените имена классов на ваши пространства имен 🙂

 //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"