Рецепт был навеян мне решением из для темы - 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
подправил скрипт












