Название «Joomla!» фонетически идентично слову «Jumla», которое в переводе с языка суахили означает «все вместе» или «единое целое», что отражает подход разработчиков и сообщества к развитию системы.[6]
Система управления содержимым Joomla! является ответвлением широко известной CMS Mambo. Команда независимых разработчиков отделилась от проекта Mambo по причине несогласия в экономической политике. 16 сентября 2005 года в свет вышла первая версия Joomla!, являющаяся по сути переименованной Mambo 4.5.2.3 и включающая в себя исправления найденных на тот момент ошибок и уязвимостей.
К лету 2008 года по числу ежедневных скачиваний Joomla! заняла второе место после WordPress со значительным отрывом от других подобных систем.[7]
Версия 1.0 считается устаревшей, её официальная поддержка прекращена 1 июля 2009 года.
Поддержка версии 1.6 прекращена 19 августа 2011 года.
Поддержка версии 1.7 прекращена 24 февраля 2012 года.[8]
Поддержка версии 1.5 прекращена 27 сентября 2012 года.
Поддержка версии 2.5 продолжалась до конца 2014 года.
Поддержка версии 3.x прекращена 17 августа 2023 года.
В августе 2022 года в связи с выходом Joomla 4.0 и возникшей в международном сообществе разработчиков Joomla дискуссии на GitHub был опубликован[9][10] скорректированный выпуска релизов Joomla[11][12], согласно которому у каждой мажорной версии 2 года длится фаза активного развития и ещё 2 года - исправление ошибок и патчи безопасности.
CMS Joomla! включает в себя минимальный набор инструментов при начальной установке, который дополняется по мере необходимости. Это снижает загромождение административной панели ненужными элементами, а также снижает нагрузку на сервер и экономит место на хостинге.
Joomla! позволяет отображать интерфейс фронтальной и административной части на любом языке. Каталог расширений содержит множество языковых пакетов, которые устанавливаются штатными средствами администрирования. Доступны пакеты русского, украинского, белорусского и ещё некоторых языков постсоветского пространства.[14]
Следует отдельно говорить о возможностях Joomla! с точки зрения наполнения сайта (контент-менеджмента), администрирования и возможностях для разработчика.
Создание неограниченного количества текстов (материалов в терминологии Joomla!), распределенных по неограниченному количеству категорий. Версионность материалов с возможностью вернуться к предыдущим сохранённым версиям.
Гибкая система создания и управления меню позволяет создавать навигацию по сайту самых разных уровней сложности.
Компонент «Контакты» позволяет отображать расширенные контактные данные пользователей, группировать контакты в категории разного уровня вложенности. Для каждого пользователя можно отображать форму обратной связи.
Компонент «Баннеры» является простой системой показа рекламных баннеров и ссылок на сайте.
Компонент «Ленты новостей» позволяет отображать данные RSS потоков из других источников.
Компонент «Теги» позволяет связывать различные сущности (материалы, контакты и т.д.) сайта с помощью тегов, организуя горизонтальную структуру сайта.
Компонент «Умный поиск» предназначен для индексации контента сайта и даёт возможность пользователям искать по сайту с учётом словоформ.
Права доступа пользователей сайта разделяются на группы и уровни доступа и в целом являются реализацией паттерна ACL. Реализован функционал многофакторной аутентификации. Пользователи сайта имеют возможность авторизовываться, редактировать свои данные, получать доступ к разделам сайта для зарегистрированных пользователей (согласно настройкам прав доступа).
Встроенная в Joomla версия сайта для слабовидящих, соответствующая стандарту WCAG 2.1. Для материалов Joomla! имеется инструмент проверки доступности для слабовидящих, который подскажет необходимые исправления для соответствия стандартам.
Плагины микроразметки Schema.org в составе Joomla! автоматически размечают страницы сайта для предоставления поисковикам более понятной и структурированной информации, которая может влиять на ранжирование в поисковой выдаче.
Возможно включить и настроить Workflow для материалов («Процессы» в терминологии Joomla!), подразумевающие многоэтапную работу, согласование текста и процесс публикации[17][18].
Для каждой динамической страницы можно создать свои заголовок (тег title) и описание (meta description) в целях более высокого ранжирования в поисковых системах.
Начало и окончание публикации любых материалов, категорий, модулей можно запрограммировать по календарю. Таким же образом можно реализовать отложенные публикации, установив дату из будущего.
Возможность ограничить доступ к определённым разделам сайта только для зарегистрированных пользователей, доступ как к разделу, так и к определённому материалу с точностью до конкретной связи материал↔пользователь.
Настраиваемые схемы расположения элементов по позициям шаблона.
Автоматическая проверка новых версий установленных расширений. Отображение changelog прямо в панели админстратора позволяет просмотреть список изменений непосредственно перед обновлением (при условии, что разработчик расширения задействует этот механизм).
Возможность создания не одной, а нескольких форм обратной связи для каждого контакта;
ЧПУ — «человекопонятный URL», например, «example.com/news/2011/»;
Более 6000 (по состоянию на 07.08.2024) готовых расширений (http://extensions.joomla.org). С их помощью сайт на Joomla! легко становится интернет-магазином, каталогом, доской объявлений, социальной сетью, учебным порталом и т.д.
Система шаблонов позволяет легко изменять внешний вид сайта: расположение модулей, шрифты и другое. Можно предоставить пользователям выбирать одно из нескольких отображений. В сети существует огромный выбор готовых шаблонов, как платных, так и бесплатных. Также существует программное обеспечение для самостоятельного создания оригинальных шаблонов. Шаблон сайта можно назначить как всему сайту, так и конкретному пункту меню. Таким образом вы можете сделать различное оформление разным разделам сайта. Joomla! имеет функционал создания дочерних шаблонов.
Предусмотрены настраиваемые схемы расположения модулей, включая левый, правый, центральный и любое другое произвольное положения блока. При желании содержимое модуля можно включить в содержимое текста. Например, выражение {loadposition position_name}, введённое (вместе с фигурными скобками) в произвольное место в статье, выведет содержимое модуля, которому задана позиция вывода как «position_name».
Переключение светлой и тёмной темы оформления панели администратора.
Функциональность можно увеличивать с помощью дополнительных расширений (компонентов, модулей, плагинов, библиотек).
К преимуществам системы можно отнести то, что все компоненты, модули, плагины и шаблоны можно написать самому, разместить их в структурированном каталоге расширений или отредактировать существующее расширение по своему усмотрению.
Происходит регулярный выход обновлений. Существует публичный «баг-трекер» (система отслеживания ошибок). Основная работа с пользователями командой разработчиков ведётся в GitHub репозитории Joomla!. В нём можно оставить пожелания по расширению функциональности, оставить замечания по поводу работы CMS, которые впоследствии изучаются её разработчиками, при необходимости включающими в очередное обновление Joomla! исправления, решающие те или иные проблемы.
Встроенная мультиязычность - возможность создания языковых версий сайта.
Функционал пользовательских полей Joomla, который позволяет добавлять различные типы данных к сущностям компонентов Joomla. Таким образом с помощью штатного компонента материалов можно создать простой каталог товаров или услуг.
Создание собственного расширения осуществляется посредством написания плагина на языке PHP с использованием для взаимодействия API Joomla!.
Архитектурно Joomla! является монолитом - ядром, к которому присоединяются расширения. В Joomla существует 7 типов расширений:
шаблон - включает в себя вёрстку сайта, переопределения макетов, а так же может содержать некоторые параметры отображения в параметрах стилей шаблонов.
компонент - нужен для CRUD операций - создания, отображения, редактирования и удаления данных.
модуль - выводит некоторые данные в позиции шаблона, например, новые или популярные статьи, просмотренные товары, форма входа на сайт, форма обратной связи, форма поиска и т.д. Модуль может брать данные для отображения из какого-либо компонента, своих параметров или внешнего источника.
плагин - в процессе работы Приложения Joomla! вызываются события (Event Dispatching). По этим вызовам срабатывают плагины, получая возможность изменять данные или выполнять некую работу на лету. Например, добавить кнопку в панель управления, получить данные по ajax, обработать содержимое страницы регулярным выражением и т.д.
библиотека - некий набор функций и методов, который может одновременно использоваться в разных расширениях сайта: в плагине, модуле и компоненте. Например, библиотека для подключения и отправки данных во внешнюю CRM систему.
файл - любой PHP код в файле или нескольких файлах, который по каким-то причинам не получилось оформить надлежащим образом в одно из расширений Joomla!.
пакет - может включать в себя несколько типов расширений для одновременной установки и обновления. Например, пакет может содержать модуль и плагин или плагин и библиотеку. Установка, обновление, удаление может производиться сразу пакетно со всеми расширениями, входящими в данный пакет.
Функционал создания переопределений макетов в шаблоне является одной из основных особенностей Joomla!. Он позволяет скопировать часть стандартного отображения какого-либо расширения Joomla! в папку с вашим разрабатываемым шаблоном и изменить его HTML-вёрстку так, как необходимо, не опасаясь, что при следующем обновлением движка внесённые изменения будут утеряны.
Начиная с Joomla! 4 под капот вошёл Joomla! Framework, который многие годы был отдельным проектом. Это полноценный PHP фреймворк, похожий на Laravel, Yii и другие, который можно использовать и вне Joomla! CMS.
Развитая система плагинов и событий для них[20]. С помощью плагинов можно обрабатывать содержимое текста сайта перед выводом, добавлять элементы панели управления или пользовательской части, предоставлять контент для индексации умным поиском, добавлять команды в CLI интерфейс Joomla, реализовывать различные интеграции со внешними системами и многое другое.
Начиная с версии 4.0 добавлена поддержка веб-сервисов в виде REST, компонент организации рабочих процессов и возможность шаблонизировать электронные письма сайта.
Для версий 1.6, 1.7 и 2.5 требуются, как минимум, Apache 2.0, PHP 5.2.4 и MySQL 5.0.4.[21]
Для версии 3.x требуются PHP 5.3.10+ (Magic Quotes GPC off), MySQL 5.1+ (с поддержкой InnoDB), Apache 2.x+ (с модулями mod_mysql, mod_xml, и mod_zlib)[21]
Для версии 4.x требуются PHP 7.2.5+, MySQL 5.6+ (с поддержкой InnoDB), Apache 2.x+ (с модулями mod_mysql, mod_xml, и mod_zlib)[21][22]
Для версии 5.x требуются PHP 8.1.+, MySQL 8+ (с поддержкой InnoDB) / MariaDB 10.4+ / PostgreSQL 12+, Apache 2.4+ (с модулями mod_mysql, mod_xml, и mod_zlib) / Nginx 1.21+ / Microsoft IIS 10+ [21][22]
Перечисленные выше расширения являются продуктами, которые имеют множество плагинов, модулей и прочих дополнений, позволяющие расширить стандартную функциональность компонента дополнительными возможностями, открывая простор для гибкой настройки Интернет-магазина на Joomla под те или иные задачи.