Рецепт был навеян мне решением из для темы - http://forum.jbzoo.c...kataloga-title/
Суть в том что если на категорию ссылаться через пункт меню Joomla, то заголовок категории будет перебиваться пунктом меню. Я говорю об этой опции.
Покопавшись в коде, я понял, что Zoo/JBZoo работает нормально. Дело в том что Joomla сама перебивает title. Ниже небольшое решение, как это можно победить
Открываем файл /media/zoo/applications/jbuniversal/framework/events/jsystem.php
И добавляем в функцию onBeforeCompileHead
$categoryId = $this->app->jbrequest->getSystem('category'); if ($categoryId > 0) { $category = $this->app->table->category->get($categoryId); if ($category) { $params = $category->getParams('site'); $title = $params->get('metadata.title') ? $params->get('metadata.title') : $category->name; if ($title) { $this->app->document->setTitle($this->app->zoo->buildPageTitle($title)); } $description = $params->get('metadata.description'); if ($description) { $this->app->document->setDescription($description); } $keywords = $params->get('metadata.keywords'); if ($keywords) { $this->app->document->setMetadata('keywords', $keywords); } } } $itemId = $this->app->jbrequest->getSystem('item'); if ($itemId) { $item = $this->app->table->item->get($itemId); if ($item) { $title = $item->getParams()->get('metadata.title'); $title = empty($title) ? $item->name : $title; $this->app->document->setTitle($this->app->zoo->buildPageTitle($title)); foreach (array('keywords', 'author', 'robots') as $meta) { if ($value = $item->getParams()->get('metadata.' . $meta)) { $this->app->document->setMetadata($meta, $value); } } } }
Функция onBeforeCompileHead сработает в последний момент, перед тем как скомпилировать HMTL для тега head, поэтому установит meta наверняка. Её могут перебить только специфические плагины.
Проверял на JBZoo 2.1.5
Прикрепленные файлы
Сообщение отредактировал SmetDenis: 28 January 2015 - 05:54
подправил скрипт