Перейти к содержанию

Все разделы сайта

Написать о задаче

Timealias: адреса статей Joomla 6, которые не зависят от заголовка

Плагин Timealias даёт каждому новому материалу Joomla 6 алиас-метку времени вида 20261006-053650 — по часовому поясу сайта. Адрес статьи получается коротким, одинаковым по форме и не меняется, сколько бы ни правили заголовок.

Обложка новости о плагине Timealias: алиас-метка времени вместо транслита заголовка

Алиас в Joomla — последняя часть адреса материала, по которой Joomla находит статью: в /news/20261006-053650 это 20261006-053650. Обычно его делают из заголовка транслитом, и у этого способа две беды. Заголовок правят после публикации — и либо адрес расходится с заголовком, либо его меняют и ломают ссылки, уже разошедшиеся по мессенджерам. А кириллический заголовок превращается в длинную транслитерацию, которую никто не прочтёт.

Метка времени снимает обе беды: адрес короткий, одной формы для всех статей, не зависит от алфавита заголовка и не меняется никогда.

Как работает

  • Только при создании. Правка существующей статьи алиас не трогает, а «Сохранить как копию» даёт копии свежую метку.
  • Время сайта, а не сервера. Метка берётся по часовому поясу из общих настроек Joomla. Часы серверов обычно идут по UTC — всемирному координированному времени, и без этой поправки статья, написанная в Астане в половине десятого утра, получила бы в адрес половину пятого.
  • Без столкновений. Ядро требует, чтобы алиас был уникален в категории, и отказывается сохранять дубликат. Если две статьи созданы в одну секунду, вторая получит -2, третья — -3; учитываются и материалы в корзине.
  • Все пути создания: панель управления, REST API и форма на сайте. Категории, пункты меню и другие компоненты плагин не трогает.
  • Заданный алиас главнее. Алиас, вписанный вручную или пришедший при импорте, по умолчанию сохраняется; метка ставится, только когда поле пустое. Это переключается в настройках.

Тонкость, ради которой плагин написан аккуратно

При сохранении из формы и через API ядро само подставляет в пустое поле алиаса транслит заголовка — раньше, чем срабатывает любой плагин. Поэтому Timealias смотрит не на поле в момент сохранения, а на то, что пришло на самом деле: поле формы, тело запроса API или данные, переданные модели напрямую. Так он отличает пустое поле от заполненного.

Импорт старых статей

Уже опубликованные статьи плагин не трогает. Импорт через модель Joomla или REST API плагин видит как создание: старый алиас сохранится, и прежние адреса не сломаются. Прямую запись в базу, например SQL-дамп, плагин не видит вовсе. Для большой миграции самый осторожный путь — выключить плагин на время импорта.

Установка

Нужны Joomla 6 и PHP 8.3 и новее; проверено на Joomla 6.1.4 с MariaDB 10.11. Архив ставится обычным установщиком, а второй архив можно распаковать в корень сайта через FTP и найти плагин через «Обнаружить». Лицензия — GPL.

Все модули и плагины на webmarka.kz

Список использованных источников

  1. Timealias — выпуск на GitHub
  2. plg_content_timealias — репозиторий на GitHub