Как сделать произвольные 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-3

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

открываем файл item.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-category-k2

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

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

 

Запись опубликована в рубрике Joomla, SEO. Добавьте в закладки постоянную ссылку.

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

  1. myseolab говорит:

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

  2. devul говорит:

    приоритет имеют настройки меню, но если на материал не создано меню — тогда в самом материале.

  3. Руслан говорит:

    Решение интересное, но в некоторых случаях использование доп. полей нужно.
    Реще используется (я думаю) — Авторские права на изображение
    Можно ли както реализовать чтобы Title ,брался/выводился из заполненного поля — Авторские права на изображение?
    Было бы вообще шикарно.
    Заранее благодарю за ответ.

  4. Евгений говорит:

    Подскажите, в каком месте нужно прописать приведенный код? Пробовал разные варианты — эффекта не увидел. Версия компонента 2.6.5

  5. Евгений говорит:

    Так и не разобрался до конца с решением, хотя оно было бы неплохим.

    • admin говорит:

      в чем именно проблема возникает? прописываем в файле шаблона статьи, если не знаете какой используется — попробуйте echo сделать и найдете искомый.

  6. Юлия говорит:

    Уважаемый администратор!!! Спасибо за рецепт!!! Мучалась с одним сайтом, на котором по необъяснимым причинам не работало ни одно seo расширение!!! Здоровья, счастья, побольше трафика и денег!!!

  7. Den говорит:

    Что то не работает, вот такая ошибка на странице:
    Warning: Invalid argument supplied for foreach() in /home/doctorst/public_html/templates/theme1125/html/com_k2/default/item.php on line 44

    В 44 строке вот что:
    foreach($this->item->extra_fields as $item)

    Что делать? В чем может быть проблема?

  8. Алексей говорит:

    Здравствуйте! Решение отличное, но как быть с выводом полей в самом материале? Получается, что поле то как бы нужное, но выводтся и там где нужно и в статье, а там оно не нужно…
    Так же выходила ошибка, убрал & отсюда:
    $document = JFactory::getDocument();
    $config = JFactory::getConfig();
    В php совсем не силен.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *