Давным давно, ещё на j1.5, стала задача добавить кастомный тег <title> в категории. Было потрачено пару дней на поиск расширений, которые в итоге не работали или работали через раз. В итоге я понял, что все придется делать самому. Разобрался в исходинках я буквально за пол часа, все сделал и забыл.
Недавно с хостинга пришло письмо счастья о том, что мой сайт заблочили потому что версия j устарела. Пришлось переделывать сайт на j3.2 и я снова столкнулся с проблемой кастомного тайтла. Я был удивлен, что до сих пор нет готового бесплатного решения без использования всяких sef404 и т.д. Пришлось заново разбираться. Пару часов и ВУАЛЯ. А сегодня вышла новая версия K2, которую я успешно обновил и потерял свой тайтл. В результате я решил создать сию тему, чтобы облегчить жизнь людям (включая себя), которые тоже используют кастомный тайтл в категориях K2.
Итак приступим:
1. Наш кастомный тайтл должен где-то храниться.
1.1 Заходим в базу данных сайта (например через phpMyAdmin).
1.2 Находим таблицу категорий:
<prefix>_k2_categories (префикс у всех разный).
1.3 Добавляем в эту таблицу новое поле
customtitle, например после поля
name. Тип поля выбираем varchar, размер 255. Больше ничего не меняем.
2. С базой закончили. Теперь нужно добавить поле в админку категорий.
2.1 Открываем файл
administrator/components/com_k2/views/category/tmpl/default.php2.2 Видим там таблицу наших полей для заполнения категории. Добавляем код нашего поле. Я добавил после поля name (заголовок категории)
<tr>
<td class="adminK2LeftCol">
<label for="customtitle">Custom title</label>
</td>
<td class="adminK2RightCol">
<input class="text_area k2TitleBox" type="text" name="customtitle" value="<?php echo $this->row->customtitle; ?>" maxlength="250" />
</td>
</tr>
Теперь мы можем сохранять наш customtitle поле прямо из админки.
3. Осталось только устанавливать наш тайтл в тег <title> вместо стандартного
3.1 Открываем файл
components/com_k2/views/itemlist/view.html.phpи заменяем:
// Set title
$title = $category->name;
на
// Set title
$title = $category->customtitle=='' ? $title = $category->name : $title = $category->customtitle;
Готово!
Внимание! После обновления K2 вам придется заново проделывать пункты 2 и 3
Если вы хотите сделать кастомный тайтл и в материалах, то все делается аналогично, я думаю по примеру разобраться можно.
Надеюсь кому-нибудь эта статья пригодится.
Было бы не плохо закрепить её.
Спасибо за внимание.