Как сделать произвольные title в компоненте k2 joomla — в записях и категориях

Красивые title и правильные url всегда были проблемой CMS Joomla, и новые версии j 2.5 и 3 ситуацию не исправляют. На малопосещаемых сайтах проблему решают установкой sef расширений типа sh404 или artio, но сайтов с посещаемостью 4х и более значным числом это неприемлемый вариант.

Сторонние sef компоненты дают слишком большую и не оправданную нагрузку, да и проблем прибавляют немало. Поэтому я рассматриваю только варианты «чистого кода». Предлагаемая мной модификация не затрагивает файлов движка, а значит обновления будут проходить безболезненно.

Как сделать произвольные title для материалов k2

Работать с произвольным title будем с помощью дополнительных полей k2.

Стандартный тайтл любого материала одинаков с названием этого материала. Что не есть хорошо с точки зрения seo да и юзабилити в общем, исправляем ситуацию.

Создаем группу дополнительных полей и называем её к примеру allseo.

Создаем дополнительное поле в этой группе. Тип текстовый, значение по умолчанию пустое.

k2seo-title

Теперь необходимо назначить всем категориям k2, в записях которых требуются произвольные тайтлы, эту группу дополнительных полей.

setitle-2

Далее открываем или создаем материал, в которым мы хотим сделать произвольный title. В вкладке дополнительные поля видимо наше поле seotitle, заполняем его в соответствии с требуемым запросом ну или просто как душе угодно и сохраняем материал.

seo-title-33

А теперь необходимо внести некоторые изменения в шаблон k2. Что бы при последующих обновлениях у нас не возникло проблем работать будем исключительно с шаблоном вынесенным из компонента и расположенным по адресу /templates/ваш_joomla_шаблон/html/com_k2/default

открываем файл item.php добавляем следующий код:
php
// получаем дополнительные поля материала K2
$extrafields = array();
foreach($this->item->extra_fields as $item)
{
$extrafields[$item->id] = $item->value;
}
$document = & JFactory::getDocument();
$config = & JFactory::getConfig();
if ($extrafields[1]) {
$curtitle = $extrafields[1];
} else {
$curtitle = $document->title;
}
$document->setTitle( $curtitle );

В строке $curtitle = $extrafields[1]; указываем id дополнительного поля содержащее наш новый title. Если для материала не был прописан произвольный тайтл то будет выводится стандартный заголовок. Если прописан — выводится содержимое дополнительного поля.

Узнать id дополнительного поля можно в админке Joomla, в списке дополнительных полей есть специальная колонка показывающая id поля.
Как назначить произвольный title категории k2

Что бы установить произвольный тайтл отличающийся от названия категории необходимо создать пункт меню для этой категории, в котором в дополнительных свойствах указать «Заголовок страницы в браузере».

Пункты меню желательно создавать для всех категорий, это позволит более гибко настраивать вывод условий и модулей на сайте.

На сегодня это всё. Да прибудет с вами трафик благодаря произвольным title joomla.