Статьи, приемы, хитрости и Уроки по Photoshop, Illustrator, Web дизайну и кодингу.

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

Задача: сделать произвольные 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
  • Прочитано 13609 раз
SeRbGa

SeRbGa

мечтатель

Сайт: www.serbga.ru

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

Комментарии  

SeRbGa
0 #9 SeRbGa 28.01.2015 22:09
Отключить вывод доп. Полей в настройках материала или категории, либо посмотреть шаблон к2 и закомментироват ь строку с выводом доп. полей- нужно проверять.
contra87
0 #8 contra87 28.01.2015 21:48
Работает, но также тайтл выводится в доолнительной информации как уБрать подскажите ?
SeRbGa
0 #7 SeRbGa 17.11.2014 11:31
проверял на тестовом серваке joomla 3.3.4 , к2 версии 2.6.8 все работает.
Como
0 #6 Como 17.11.2014 11:18
$extrafields = array();
сразу выдает ошибку по номеру этой строке в документе ???
К2 версии 2.6
Игорь
+1 #5 Игорь 16.11.2014 12:23
К сожалению у меня не работает выдает ошибку :
Invalid argument supplied for foreach() in
сайт.ru/templates/тема/html/com_k2/templates/default/item.php on line 548
SeRbGa
+1 #4 SeRbGa 31.07.2014 12:01
создаем новое и используем его ID для вывода (например $extrafields[1] ) - другие поля в выводе участвовать не будут.
Раис
+1 #3 Раис 23.07.2014 12:01
А если дополнительные поля уже используются для другого???
SeRbGa
+1 #2 SeRbGa 26.02.2014 18:17
в меню Компоненты -> K2 -> Доп. поля и там самый крайний столбец.
F_Felix
+1 #1 F_Felix 26.02.2014 18:15
А где именно посмотреть ID дополнительного поля?

You have no rights to post comments

Наверх

Популярные статьи

  • 1
  • 2
  • 3
  • 4

последние комментарии

ON-Line Блог SeRbGa.ru предоставляет самую свежую и актуальную информацию для веб-дизайнеров и разработчиков в виде тематических материалов, уроков созданных собственноручно, а так же переводов статей и новостей, полученных с зарубежных информационных ресурсов.

Копирование материалов сайта разрешено только с указанием активной индексируемой гиперссылки на данный сайт!

ДИСКЛЕЙМЕР/DISCLAIMER:

Я сам вдохновляюсь материалами, которые предлагаются вам на обозрение, будь то интересные руководства или полезные и впечатляющие подборки (дизайнов, шаблонов, макетов и т.д.), и по возможности всегда сохраняется ссылка на источники, и сообщается  автор изображений, использованных в подборках или руководствах. Зачастую, ссылка на источник не ведёт напрямую к автору шедевра, но если кто-то захочет использовать какие-либо изображения, графические элементы, исходники, которые здесь предоставлены, то единственное требование, выставленное к перепосту, заключается в сохранении ссылки на источник, а также соблюдение условий лицензионного соглашения (если таковое имеется). Если кто-то желает модифицировать тот или иной продукт, изменить его, подкорректировать, то ему придется самостоятельно искать настоящего автора материала.