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