Куда идем?

В Joomla есть особенность. При создании материала, Title страницы будет таким же, как и его (материала) название. Отдельно задать Title страницы в настройках материала нельзя. В этом кейсе я расскажу, как можно легко исправить это недоразумение.

В новых версиях Joomla всё стало проще. Теперь задать уникальный Title для материала можно в настройках этого материала на вкладке Отображение. Опция называется Заголовок страницы в браузере и расположена в самом конце списка опций. Вся дальшейшая информация уже неактуальна.

Если вы хорошо разбираетесь в Joomla, то, вероятно, знаете, что уникальные и отличающиеся Title и H1 можно задать для статьи на сайте, если привязать эту статью к пункту меню. Этот метод хорошо использовать, когда у вас всего несколько статей. Но что делать, если статей десятки или сотни? Создавать для каждой отдельный пункт меню неудобно.

Примечание: Начиная с версии 3.7 в настройках материала, на вкладке "Отображение", появилось поле "Заголовок страницы в браузере". Для изменения Title вы можете использовать это поле, а не дальшейший способ из статьи. Дальнейший способ отличается тем, что будет переопределять Title даже тогда, когда материал привязан к пункту меню.

Благодаря тому, что в Joomla 3.7 появились настраиваемые поля, мы можем создать дополнительное поле для материалов, и настроить его так, чтобы в нем можно было задать Title для страницы материала.

Порядок действий следующий:

  1. Создаем настраиваемое поле для Title в материалах Joomla
  2. Переопределяем макет материала Joomla в используемый шаблон
  3. Вносим изменения в макет

Теперь про каждый пункт подробнее.

1. Создаем настраиваемое поле для Title в материалах Joomla

Переходим в «Материалы –> Поля» и нажимаем кнопку «Создать»:

Перед вами откроется форма создания нового дополнительного поля. Заполняем ее следующим образом:

Создаем настраиваемое поле

На вкладке «Основные» задаем:

  • Тип: Текст
  • Категория: Все
  • Имя: custom-title
  • Название: На ваш выбор
  • Обязательно: Нет
  • Фильтр: Текст
  • Максимальная длина: Здесь можно ничего не вводить, либо ввести значение, длиннее которого Title будет задать нельзя (удобно для SEO, т.к. максимальная длина Title в поисковых системах ограничена)

На вкладке «Параметры» задаем:

  • Показать в: Оба
  • Автоматическое отображение: Не показывать автоматически

После этого сохраняем поле, и видим его в списке:

Созданное поле

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

Поле для установки пользовательского Title

Если после создания дополнительного поля вы не видите его в форме редактирования материала, убедитесь, что:

1) У вас активирована опция: «Общие настройки –> Материалы –> Вкладка «Интеграция» –> Включить настраиваемые поля»

Активация настраиваемых полей в Joomla

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 для страницы этого материала:

Разные заголовок и Title страницы

P.S.: Учитывайте одну важную особенность. Используя этот прием, вы не сможете больше переопределить Title в настройках пункта меню, если привяжете к нему статью. Дело в том, что код, который написан выше, имеет наивысший приоритет для установки Title.

P.P.S.: По умолчанию заголовки статей показываются в Joomla в теге H2. Если вы хотите изменить их на H1, смотрите кейс: Как сделать заголовки материалов Joomla в теге H1

Засим благодарю за внимание и желаю успехов в продвижении ваших сайтов на Joomla.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
0
А зачем, если у материала на вкладке "Отображение" в самом низу есть поле "Заголовок страницы в браузере" в котором и указывается Title?
0
Виктор, да, вы правы. В одной из новых версий Joomla появилась такая возможность, так что данный кейс теперь неактуален.
0
Вопрос другого плана, если я хочу сделать такую конструкцию
{field 5} + Title
ТО есть я хочу к Заголовку статьи, через дополнительное поле, прикрутить еще какую то фразу.
Цель такова, я хочу менять стили, для разных частей тайтла, к примеру "Индивидуальный предприниматель Отрыжкин Е.Н." ,где первые 2 слова я хочу сделать тонким шрифтом, а Имя толстым и изменить цвет...
Как такое реализовать?
0
Алексей, Title не подразумевает возможность влиять на стили. Это текстовое поле.

А вообще, если нужно прикрутить доп. поле к Title, то нужно использовать setTitle в коде. Дальше нагуглите пример. Но это не имеет смысла, т.к. в настройках материала есть поле, в котором вы можете задать уникальный Title для этой страницы.