У Joomla 6 (як і в 4 та 5) підхід до роботи з метаданими став більш структурованим. Замість прямого звернення до методів "старого стилю", ми працюємо з об'єктом WebAssetManager або безпосередньо через об'єкт документа, але з урахуванням нових стандартів.
1. Стандартний вивід у файлі index.php
Якщо тобі потрібно просто вивести тег <title> у секції <head>, ти, як і раніше, використовуєш стандартну конструкцію, яка рендерить усі метадані (включаючи заголовок), додані системою:
<jdoc:include type="metas" />Цей рядок автоматично виведе сформований системою заголовок: <title>Заголовок сторінки - Назва сайту</title>.
2. Як отримати або змінити Title через PHP
Якщо ж тобі потрібно отримати текст заголовка в змінну або змінити його прямо в шаблоні (наприклад, для власної логіки), чистий PHP-код тепер виглядає так:
<?phpdefined('_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() цілком достатньо.