Как сделать разные Title и Заголовок в K2 Joomla

Делаем разные «Title» и заголовок в K2 Joomla

Компонент K2, отличный помощник для наполнения контентом сайта или блога. И все же, есть один минус, а именно невозможность сделать разные Title и заголовок в K2 Joomla.

Читайте статью до конца и узнаете как, буквально за 10 минут, можно хакнуть компонент и внедрить недостающую функцию.

Если вы не особо осведомлены в SEO, то скорее всего зададитесь вопросом: «Зачем делать разные title и заголовки?». В то время как опытные сеошники, знают, что поисковики разделяют котлеты от мух.

Заголовки в K2, выводятся на странице сайт в «H1», что правильно. И так же правильно то, что «Title» должен включать в себя заголовок, но не быть скопирован в него.

При написании статей для сайта или блога, тег «Title» должен включать разбавленный и заточенный под поисковый запрос заголовок.

Существует три пути решения проблемы:

  1. Найти подходящий плагин с функцией разбивки заголовка и title.
  2. Заказать на фрилансе доработку компонента.
  3. Самостоятельно внедрить интересующий PHP код.

Как вы понимаете, мой путь 3-ий и делать буду следующее:

  1. Создам новую группу с дополнительными полями.
  2. В группе создам доп. полей отвечающее за вывод «Title».
  3. Привяжу группу доп. полей к интересующей категории.
  4. В самом материале (либо статье), добавлю нужный «Title» в дополнительное поле.
  5. Изменю шаблон вывода материалов K2.

Создание новой группы с дополнительными полями

Создадим новую группу, куда будем помещать дополнительное поле с тегом «Title». Для этого:

  1. Переходим в «Компоненты» → «K2» → «Группа доп. полей». Создаем группу доп полей в K2 Joomla
  2. Нажимаем «Создать» и придумываем название. В моем случае, решил назвать «SEO».

Придумываем название для новой группы K2 Joomla

Создание доп. поля отвечающего за вывод «Title»

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

  1. Выбираем «Компоненты» → «K2» → «Доп. поля». Переходим в доп. поля для создания Title
  2. Кликаем по кнопке «Создать» и заполняем форму:
  • Наименование: Придумайте название для создаваемого поля.
  • Псевдоним: Пропишите псевдоним для поля, он будет нужен дальше.
  • Опубликовано: Активируйте кнопку «Да», что это поле отображалось.
  • Группа: Выберите группу, в которую будет добавлено данное доп. поле (в нашем случае «SEO»).
  • Тип: Установите значение «Текстовое поле».
  • Обязательный: Выберите, будет ли это поле обязательным или нет.
  • Значение по умолчанию: Если необходимо, можно задать значение, которое будет отображаться по умолчанию, при создании нового материала.

Заполняем форму нового дополнительного поля в K2 Joomla

  1. Возвращаемся обратно в список доп. полей и запишем ID только что созданного поля. Этот ID будет необходим при добавлении PHP кода в шаблон сайта.

ID дополнительного поля отвечающего за вывод Title в K2 Joomla

Привязываем группу доп. поле к категории

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

  1. Переходим в «Компоненты» → «K2» → «Категории».
  2. Открываем ту категорию, в которой должно работать внедрение «Title»
  3. В поле «Связанная группа доп. полей», выберем нашу группу «SEO».

Привязываем группу доп. полей к категории в K2 Joomla

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

А в «Опции отображения материала», наоборот нужно показать доп. поля.

Создаем разные «Title» и заголовок материала K2 в доп. полях

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

  1. Перейдем в «Компоненты» → «K2» → «Материалы» и создадим новый.
  2. Выбираем в пункте «Категория», ту, к которой привязывали группу доп. полей.
  3. Переходим во вкладку «Доп. поля». Здесь появится поле для ввода «SeoTitle». Сюда вводим то, что должно быть в теге «Title».

Заполняем Title разные с заголовком в K2 Joomla

С админкой все. Осталось изменить вывод в шаблоне.

Изменяю шаблон вывода материалов K2

Файлы K2 шаблона в Joomla, располагаются по адресу: «templates/ваш_шаблон/html/com_k2/default». Если у вас несколько шаблонов K2, то папка «default» может называться иначе.

В этой папке, нас интересует файл «item.php». Скачиваем его на компьютер и, из любого редактора, открываем для редактирования.

Первое что нам нужно, это добавить код вывода поля «Title» из материала. Для этого, добавляем следующее:

<?php
// получаем дополнительные поля материала K2
$extrafields = array();
foreach($this->item->extra_fields as $item)
{
$extrafields[$item->id] = $item->value;
}
$document = & JFactory::getDocument();
$config = & JFactory::getConfig();
if ($extrafields[31]) {
$curtitle = $extrafields[31];
} else {
$curtitle = $document->title;
}
$document->setTitle( $curtitle );
?>

Обратите внимание на $extrafields[31]. Вместо цифры «31» следует ввести тот ID, который был присвоен дополнительному полю. Выше об этом упоминалось.

У себя добавил после строчек:

$renderer = $doc->loadRenderer('modules'); // задаем рендер как функцию рендерить модули
$options = array('style' => 'xhtml'); // а опции лишь стиль
?>

Но, особой разницы куда добавлять, нет.

После этого, на страницу вашего материала, уже будет выводится разные «Title» и заголовки в K2 Joomla. Но есть еще один нюанс, который может не всем понравится.

В шаблон есть строчка вывода названия доп. поля и, соответственно, значения: <h3><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></h3>. Совершенно не правильно выводить в тексте то, что выводится в «Title», поэтому с этой строчкой нужно что то делать.

Промерно на строчке 266, расположен код вывода доп. полей:

<?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): ?>
<!-- Item extra fields -->
<div class="itemExtraFields">
<h3><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></h3>
<ul>
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value != ''): ?>
<li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<?php if($extraField->type == 'header'): ?>
<h4 class="itemExtraFieldsHeader"><?php echo $extraField->name; ?></h4>
<?php else: ?>
<span class="itemExtraFieldsLabel"><?php echo $extraField->name; ?>:</span>
<span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<div class="clr"></div>
</div>
<?php endif; ?>

Мне он больше не нужен, поэтому заменю его на этот:

<?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): ?>
<!-- Item extra fields -->
<?php if($extraField->id === 31): ?>
<div class="itemExtraFields">
<h3><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></h3>
<ul>
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value != ''): ?>
<li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<?php if($extraField->type == 'header'): ?>
<h4 class="itemExtraFieldsHeader"><?php echo $extraField->name; ?></h4>
<?php else: ?>
<span class="itemExtraFieldsLabel"><?php echo $extraField->name; ?>:</span>
<span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<div class="clr"></div>
</div>
<?php endif; ?>
<?php endif; ?>

Не забудьте в строчке <?php if($extraField->id === 31): ?> изменить «31» на ID вашего доп. поля.

На этом все. Вот таким не хитрым способом, получилось сделать разные «Title» и заголовок в K2 Joomla. Кому нужно, пользуйтесь.

Изучаете HTML и CSS? Пройдите курс от профессионального программиста!
Делаем разные «Title» и заголовок в K2 Joomla: 2 комментария
Добавить комментарий