Сеошники твердят, что заголовок статьи и содержимое тега title страницы должно отличаться. В редакторе пунктов меню Joomla есть возможность управления отображением заголовка в браузере. Но мы часто пользуемся блогами и списками статей на наших сайтах. И в этом случае title для каждой статьи берется из ее заголовка. Так что же делать, если нужен именно отличный от заголовка тайтл? — И, все же, выход есть.
В этой статье для решения проблемы я предлагаю прибегнуть к помощи редко используемых полей в редакторе статей на сайтах под Joomla. Каждый, кто работает с этой CMS знает, что таких полей не так уж и мало. Этот способ наименее затратный по времени реализации, не требует изменения кода движка или установки дополнительных расширений.
Предлагаю остановить выбор на поле «Ключ ссылки» с именем «xreference». Обычно, его редко используют. Но можно взять любое другое поле с подходящими параметрами. Главное, чтобы оно было текстовым и его можно было редактировать в ходе работы с контентом.
Если коротко, то суть задачи в следующем: нас интересует только модель «article» (category и прочее не обрабатываем, и все настраиваемые в меню заголовки там остаются, как есть); при отображении статьи дефолтный тег будет подменяться на наш только, если поле «Ключ ссылки» не пустое.
Для реализации нам потребуется только один файл — index.php шаблона сайта. В нем, в секции head, до того места, где подключается системный генератор содержимого данного блока (скрипты, метатеги, стили и т. п.) добавляем такой код:
<?php // Получаем параметр "view". Параметром title будем устанавливать // только "article", все остальное останется, как есть $view = JRequest::getVar('view'); if ($view=='article') { // Если view = "article": // Получаем ID материала для того, чтобы получить саму статью $article_id = JRequest::getInt('id'); // Получаем все содержимое материала по полученному ID $article = JControllerLegacy::getInstance('Content')->getModel('Article')->getItem($article_id); // Определяем переменную для title, обращаясь // к значению поля "Ключ ссылки" ($article->xreference) // Если значения нет - присваиваем переменной значение null $mytitle = (isset($article->xreference)&& !empty($article->xreference) )? $article->xreference : null; // Принудительно устанавливаем свой title только тогда, // когда соответствующая ему переменная не пуста if (!$mytitle == null) { $doc = JFactory::getDocument(); $doc->setTitle($mytitle); } } ?>
Заполняем поле «Ключ ссылки» любой статьи категории, которая выводится в виде блога или списка материалов и проверяем содержимое тайтла на сайте. При переходе по ссылке из блога или списка на статью, тайтл должен совпадать с текстом, которой вводили в поле.
Вот и вся реализация.
Ну, а тем, кто перешел на J3.x и регулярно обновляет движок, беспокоиться об этом не нужно. Разработчики предусмотрели возможность управления тайтлами для каждой статьи в редакторе. Теперь можно указывать этот параметр в секции настроек материала «Отображение» в поле «Заголовок страницы в браузере» (внизу).