В Joomla есть особенность. При создании материала, Title страницы будет таким же, как и его (материала) название. Отдельно задать Title страницы в настройках материала нельзя. В этом кейсе я расскажу, как можно легко исправить это недоразумение.
В новых версиях Joomla всё стало проще. Теперь задать уникальный Title для материала можно в настройках этого материала на вкладке Отображение. Опция называется Заголовок страницы в браузере и расположена в самом конце списка опций. Вся дальшейшая информация уже неактуальна.
Содержание
Если вы хорошо разбираетесь в Joomla, то, вероятно, знаете, что уникальные и отличающиеся Title и H1 можно задать для статьи на сайте, если привязать эту статью к пункту меню. Этот метод хорошо использовать, когда у вас всего несколько статей. Но что делать, если статей десятки или сотни? Создавать для каждой отдельный пункт меню неудобно.
Примечание: Начиная с версии 3.7 в настройках материала, на вкладке "Отображение", появилось поле "Заголовок страницы в браузере". Для изменения Title вы можете использовать это поле, а не дальшейший способ из статьи. Дальнейший способ отличается тем, что будет переопределять Title даже тогда, когда материал привязан к пункту меню.
Благодаря тому, что в Joomla 3.7 появились настраиваемые поля, мы можем создать дополнительное поле для материалов, и настроить его так, чтобы в нем можно было задать Title для страницы материала.
Порядок действий следующий:
- Создаем настраиваемое поле для Title в материалах Joomla
- Переопределяем макет материала Joomla в используемый шаблон
- Вносим изменения в макет
Теперь про каждый пункт подробнее.
1. Создаем настраиваемое поле для Title в материалах Joomla
Переходим в «Материалы –> Поля» и нажимаем кнопку «Создать»:
Перед вами откроется форма создания нового дополнительного поля. Заполняем ее следующим образом:
На вкладке «Основные» задаем:
- Тип: Текст
- Категория: Все
- Имя: custom-title
- Название: На ваш выбор
- Обязательно: Нет
- Фильтр: Текст
- Максимальная длина: Здесь можно ничего не вводить, либо ввести значение, длиннее которого Title будет задать нельзя (удобно для SEO, т.к. максимальная длина Title в поисковых системах ограничена)
На вкладке «Параметры» задаем:
- Показать в: Оба
- Автоматическое отображение: Не показывать автоматически
После этого сохраняем поле, и видим его в списке:
Если всё сделано правильно, то при создании новой статьи или при изменении существующей, вы увидите вкладку «Поля» на которой будет наше созданное поле с возможностью указания пользовательского заголовка Title.
Если после создания дополнительного поля вы не видите его в форме редактирования материала, убедитесь, что:
1) У вас активирована опция: «Общие настройки –> Материалы –> Вкладка «Интеграция» –> Включить настраиваемые поля»
2) Плагины дополнительных полей активированы в менеджере плагинов.
3) Вы используете Joomla 3.7 или выше.
2. Переопределяем макет материала Joomla в используемый шаблон
Теперь, когда у нас есть возможность ввода Title в форме редактирования материала, нужно чтобы Title был виден на сайте. Для этого нам нужно внести некоторые исправления в макет материала Joomla. Хаков не будет, т.к. этот макет переопределяется в шаблон Joomla.
Для переопределения макета материала, копируем файл:
/components/com_content/views/article/tmpl/default.php
в папку:
/templates/ВАШ_ШАБЛОН/html/com_content/article/
и вносим все дальнейшие изменения уже там.
3. Вносим изменения в макет
В скопированном файле нам нужно внести следующие изменения:
Найдите строчку (~24):
JHtml::_('behavior.caption');
и вставьте после нее:
//Получаем данные настраиваемых полей в удобном виде----------------------------
foreach($this->item->jcfields as $jcfield) {
$this->item->jcFields[$jcfield->name] = $jcfield;
}
//------------------------------------------------------------------------------
// Если задан пользовательский Title, устанавливаем его для страницы
if ($this->item->jcFields['custom-title']->rawvalue) {
$document = JFactory::getDocument();
$document->setTitle($this->item->jcFields['custom-title']->rawvalue);
}
//------------------------------------------------------------------------------
На этом всё. Теперь, если всё сделано правильно, когда вы будете вводить в созданное дополнительное поле материала текст, он автоматически будет становиться тегом Title для страницы этого материала:
P.S.: Учитывайте одну важную особенность. Используя этот прием, вы не сможете больше переопределить Title в настройках пункта меню, если привяжете к нему статью. Дело в том, что код, который написан выше, имеет наивысший приоритет для установки Title.
P.P.S.: По умолчанию заголовки статей показываются в Joomla в теге H2. Если вы хотите изменить их на H1, смотрите кейс: Как сделать заголовки материалов Joomla в теге H1
Засим благодарю за внимание и желаю успехов в продвижении ваших сайтов на Joomla.
{field 5} + Title
ТО есть я хочу к Заголовку статьи, через дополнительное поле, прикрутить еще какую то фразу.
Цель такова, я хочу менять стили, для разных частей тайтла, к примеру "Индивидуальный предприниматель Отрыжкин Е.Н." ,где первые 2 слова я хочу сделать тонким шрифтом, а Имя толстым и изменить цвет...
Как такое реализовать?
А вообще, если нужно прикрутить доп. поле к Title, то нужно использовать setTitle в коде. Дальше нагуглите пример. Но это не имеет смысла, т.к. в настройках материала есть поле, в котором вы можете задать уникальный Title для этой страницы.