Logo
Версия для печати

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

  • Автор  SeRbGa

Задача: сделать произвольные title в компоненте k2 joomla — в материалах

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

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

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

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

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

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

1

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

2

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

3

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

4

А теперь необходимо внести некоторые изменения в шаблон k2. Работать будем исключительно с шаблоном компонента, (иногда этот файл можно найти в разных местах - все зависит от ядра и фреймворка) Так что места могут быть разные:

например  - адресу /templates/ваш_joomla_шаблон/html/com_k2/default/item.php

например  - адресу /components/com_k2/templates/default/item.php

Ищите где он у вас.

5

открываем файл item.php добавляем следующий код, где-то  после строки 57 и скрипт заключаем в теги 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 (у меня оказалось 1) дополнительного поля содержащее наш новый title.

6

Если для материала не был прописан произвольный тайтл то будет выводится стандартный заголовок. Если прописан — выводится содержимое дополнительного поля.

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

Проеверяем - все работает!

Последнее изменениеВторник, 18 Февраль 2014 12:53
  • Оцените материал
    (3 голосов)
  • Опубликовано в Web coding
  • Прочитано 13664 раз
SeRbGa

SeRbGa

мечтатель

Сайт: www.serbga.ru

Оставить комментарий

SeRbGa