У Joomla 6 (як і в 4 та 5) підхід до роботи з метаданими став більш структурованим. Замість прямого звернення до методів "старого стилю", ми працюємо з об'єктом WebAssetManager або безпосередньо через об'єкт документа, але з урахуванням нових стандартів.

1. Стандартний вивід у файлі index.php

Якщо тобі потрібно просто вивести тег <title> у секції <head>, ти, як і раніше, використовуєш стандартну конструкцію, яка рендерить усі метадані (включаючи заголовок), додані системою:

<jdoc:include type="metas" />

Цей рядок автоматично виведе сформований системою заголовок: <title>Заголовок сторінки - Назва сайту</title>.

2. Як отримати або змінити Title через PHP

Якщо ж тобі потрібно отримати текст заголовка в змінну або змінити його прямо в шаблоні (наприклад, для власної логіки), чистий PHP-код тепер виглядає так:

<?php
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
// Отримуємо об'єкт документа
$doc = Factory::getApplication()->getDocument();
// 1. Отримати поточний заголовок
$currentTitle = $doc->getTitle();
// 2. Встановити новий заголовок
$doc->setTitle('Мій новий крутий заголовок');
?>

Що змінилося?

Насправді метод getTitle() нікуди не зник, він все ще працює. Проте змінилася "внутрішня кухня":

  • Namespaces: Тепер обов'язково використовувати use Joomla\CMS\Factory;.
  • Порядок виклику: В Joomla 6 заголовок часто формується компонентом або пунктом меню. Якщо ти змінюєш його в шаблоні через setTitle, це перепише все, що було встановлено раніше.

3. Робота з назвою сайту

В Joomla 6 в налаштуваннях можна вказати, чи додавати назву сайту до заголовка (зліва чи справа). Якщо ти хочеш вручну керувати цим у шаблоні, можна звернутися до конфігурації:

<?php
$app = Factory::getApplication();
// Отримуємо назву сайту з глобальних налаштувань
$sitename = $app->get('sitename');
// Отримуємо налаштування: чи виводити назву сайту в title
$sitename_pagetitles = $app->get('sitename_pagetitles', 0);
if ($sitename_pagetitles == 1) {
// Назва сайту ПЕРЕД заголовком
$doc->setTitle($sitename . ' - ' . $doc->getTitle());
} elseif ($sitename_pagetitles == 2) {
// Назва сайту ПІСЛЯ заголовка
$doc->setTitle($doc->getTitle() . ' - ' . $sitename);
}
?>

Порада для професіоналів:

В Joomla 6 для складних маніпуляцій з метаданими (OpenGraph, Twitter Cards) тепер рекомендується використовувати сервіс Metadata Manager, але для звичайного title методу $doc->setTitle() цілком достатньо.