Паттерн «фабрика» используется в Joomla 5 для создания различных объектов. Давайте разберёмся как использовать фабрику в своих расширениях.

Joomla *
Cистема управления содержимым (CMS)
Новости
Joomla 6 в разработке. Чего ожидать?

Следующее поколение Joomla уже в работе! С каждой новой версией наша любимая CMS становится лучше и лучше. Наступило время для беседы с релиз-менеджерами Joomla 6: Гарри Баркли и Филом Уолтоном.
Учимся использовать Dependency Injection Containers (DI контейнеры) в Joomla 5
В Joomla с версии 4.x используются Dependency Injection Containers (DI контейнеры). В этой статье я на простом примере попробую показать как их использовать в своих расширениях.
Логирование действий пользователя в Joomla. Создание плагина Actionlog

На вашем сайте, внутреннем портале, в интернет-магазине кто-то что-то сделал, а потом всё сломалось: сайт открывается криво (или не открывается вообще?), перестали работать фоновые задачи в планировщике, установились неправильные скидки всем пользователям на все товары... Предположим, что с безопасностью у вас всё хорошо: Joomla свежая, актуальная, расширения - тоже. Да и в логах сервера и логах Joomla тоже чисто... Тогда остаётся ещё один источник информации - Лог действий пользователей Joomla. Основная его задача - помочь быстро найти кому настучать по рогам причину и устранить её.
Всё, что связано с действиями в админке - может логироваться: от обновления системы и компонентов, изменения настроек до редактирования и сохранения конкретных элементов (статьи, товары, категории и т.д.) и загрузки файлов в медиа менеджере. Лично мне нередко этот функционал помогал найти тех контент-менеджеров, кто дублирует названия товаров, создавая дубли и тем самым негативно влияя на SEO. Или же вдруг обнаруживается недозаполненная, но опубликованная карточка товара, которой не должно было быть, но она появилась. И ладно если б это был единичный случай...
Joomla 4 Rest API: создаем свои JSON-эндпоинты с нуля
Перевод материала из официальной документации Joomla по разработке кастомного Rest API в Joomla 4. Вы узнаете как зарегистрировать эндпоинт с помощью плагина группы webservices
и настроить API-часть компонента для обработки запросов и отправки JSON-ответов.
Joomla-дайджест. 1-й квартал 2025 года

После долгого перерыва читайте все главные новости из мира Joomla с момента выхода Joomla 5.2.0 (15 октября 2024 года) в одной статье. Но для удобства в названии ограничимся первым кварталом 2025 года. Традиционно наш дайджест обозревает новости, расширения, шаблоны и статьи из мира Joomla.
Обзор MVCFactory в Joomla 5
Рассмотрим процесс создания объектов моделей, представлений и контроллеров с помощью класса MVC фабрика в Joomla 5.
Добавляем свои переменные в шаблоны писем Joomla 5+

Расширяем стандартный функционал шаблонов писем CMS Joomla. Добавляем к переменным (шорт-кодам) шаблонов писем поля пользователей.
Триггеры ядра Joomla при CRUD-операциях

CRUD - аббревиатура основных операций с данными: создание (Create), чтение (Read), изменение (Update) и удаление (Delete). Практически все действия на сайте как в админке, так и пользовательской части можно описать этими действиями. Разработчикам при создании функционала часто в какие-то моменты этих действий нужно проделать некие действия с участием данных или без них.
Как найти нужное событие для своего плагина в Joomla подскажет эта статья.
Как добавить свой повторяемый элемент интерфейса в класс HTMLHelper Joomla 4+

В API Joomla есть полезный инструмент - класс HTMLHelper. Он выводит HTML-элементы интерфейса с нужными параметрами: модальные окна, аккордеоны, табы, изображения и т.д. Для рендера мы передаём все нужные данные: заголовки окон, содержимое табов, атрибуты изображений.
Плюс использования HTMLHelper в Joomla - это его универсальность, оторванность от контекста, возможность использования логики при рендере в зависимости от вводных данных, его можно использовать везде. Но что если нам нужно создать свой собственный класс?..
Пишем класс для «Result»-события Joomla
Это продолжение статьи «Каждому событию Joomla — свой класс». В нём я расскажу как создать класс события, которое должно возвращать какой-либо результат.
Как добавить свой таб или поле в интерфейс Joomla с помощью плагина. «Joomla way»

Задачи могут быть самые разные: поле аватара для пользователя в com_users
, дополнительный таб в форму редактирования материала, поле связи одной сущности с другой и т.д. Сразу оговорюсь, что бывает и "non-Joomla way" - то есть подходы, которые не предполагаются ядром CMS, но при этом и явно не запрещаются. Сейчас речь пойдёт о традиционном.
Каждому событию Joomla — свой класс
В посте Заменяем устаревший метод CMSApplicationInterface::triggerEvent в Joomla 5.1.4 я вскольз упоминал собственные классы событий. Теперь я хочу рассказать о них подробнее.
Ближайшие события
Как событие Joomla назовёшь, так оно и триггернётся?
— Нет! Вы, конечно, можете называть события как угодно и вызывать откуда угодно, но правильно составленные имена событий не будут требовать заучивания, они как будто сами будут печататься на экране.
Как же следует именовать события в своих компонентах? — Так, чтобы они читались как полноценные предложения, а для этого надо разобраться с их структурой.
Подключение сторонних PHP библиотек в Joomla

PHP библиотеки удобны тем, что к ним можно обращаться из любого места Приложения: из плагина, модели компонента, модуля и т.д. В случае, если подобную задачу кто-то уже решал и оформил в виде библиотеки (и даже обновляет её) - имеет смысл подключить в свою Joomla эту библиотеку. Например, вам для разработки способа оплаты интернет-магазина нужна официальная библиотека платёжного агрегатора. Или вас устраивает официальный PHP SDK какой-нибудь CRM.
Как запустить email- и SMS уведомления на Joomla с использованием API

В цифровом маркетинге коммуникация с клиентами играет ключевую роль в успехе бизнеса. Хотя email-уведомления остаются мощным инструментом, SMS приобретают все большее значение благодаря оперативности и высокому уровню прочтения. В этом руководстве сосредоточимся на интеграции email- и SMS-уведомлений в Joomla с использованием API Exolve и ряда других средств.
Как починить пагинацию в своих расширениях для Joomla 5.1.3+. Backwards breaking changes

Это информация о возможном сломе обратной совместимости в классе Pagination
Joomla 5.1.3+. Релиз 5.1.3 был связан с закрытием уязвимостей (см. Joomla 5.1.3 and 4.4.7 Security and Bug Fix Release), в нём был изменён подход к генерации ссылок для страниц пагинации. Из‑за этого могут перестать работать ссылки страниц пагинации в сторонних компонентах Joomla. В компонентах ядра ошибки работы пагинации были исправлены в релизе 5.1.4.
Первый плагин/модуль для админки joomla 4, свежие впечатления, субъективное мнение
После плагин на вордпресс решили написать такой же плагин для joomla, вроде как вторая по популярности система.
Анатомия умного поиска в Joomla 5. Создание плагина

Исторически в ядре Joomla существовало 2 компонента поиска: просто "поиск" и "умный поиск" (smart search). Простой поиск был в составе ещё Joomla 1.x и с тех пор существенно не менялся, а начиная с Joomla 4 был исключен из состава ядра. Начиная с Joomla 2.5 в число штатных был включен компонент Умного поиска (smart search) - com_finder
, главным отличием которого от простого поиска стала индексация контента. Как создать плагин для умного поиска Joomla расскажет эта статья.
Улучшение производительности Joomla 4. Часть I

Joomla 4 существенно улучшена по сравнению с Joomla 3. Прямо из коробки вы получаете очень быструю CMS с встроенной поддержкой структурированных данных (которые, ранее назывались «микроданными»), а также несколько вариантов кэширования, подходящих для любой сферы применения, от легковесных персональных сайтов до массивных, нагруженных порталов.
Cтарые версии, Joomla имели неоправданно плохую репутацию медленной и плохой для SEO CMS. Но теперь это далеко от истины. Joomla 4 без каких либо сторонних расширений превосходит своих конкурентов, даже если они используют специально созданные сторонние расширения.
В этой серии статей мы обсудим как оптимизировать Joomla 4 чтобы ещё больше улучшить её производительность и как избежать всех ловушек, когда разрабатываете сайт для себя или клиента. Наша цель — сайт, привлекательный как для поисковых систем, так и для реальных посетителей.