Расширения и файл описания
Расширение — это папка с кодом и файлом описания в формате XML. Файл описания (манифест) сообщает Joomla, что это за расширение, как оно называется и какие файлы в него входят. Без него Joomla расширение не увидит.
Виды расширений
| Вид | Значение type | Имя | Куда устанавливается |
|---|---|---|---|
| Компонент | component | com_hello | components/com_hello и administrator/components/com_hello |
| Модуль | module | mod_hello | modules/mod_hello |
| Плагин | plugin | plg_content_hello | plugins/content/hello |
| Шаблон | template | mytheme | templates/mytheme |
| Языковой пакет | language | ru-RU | language/ru-RU |
| Пакет | package | pkg_hello | Несколько расширений в одном архиве |
Имя расширения пишут строчными латинскими буквами. Приставки com_, mod_, plg_ обязательны: по ним Joomla находит папки и языковые файлы.
Файл описания
Манифест лежит в корне расширения. Вот самый короткий манифест модуля — файл modules/mod_hello/mod_hello.xml:
<?xml version="1.0" encoding="UTF-8"?>
<extension type="module" client="site" method="upgrade">
<name>mod_hello</name>
<author>Анна Иванова</author>
<version>1.0.0</version>
<description>Модуль с приветствием</description>
<namespace path="src">My\Module\Hello</namespace>
<files>
<folder module="mod_hello">services</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
</extension>Этот файл пока ничего не выводит: он только описывает модуль, который появится в следующем уроке.
Что означают теги
| Тег или атрибут | Назначение |
|---|---|
type | Вид расширения |
client | Для сайта (site) или для панели (administrator) |
method="upgrade" | Разрешает ставить новую версию поверх старой |
name | Системное имя расширения |
version | Номер версии — по нему работают обновления |
namespace | Пространство имён классов и папка, где они лежат |
files | Папки и файлы, которые входят в расширение |
Имя файла манифеста зависит от вида: у модуля оно совпадает с именем модуля (mod_hello.xml), у плагина и компонента — имя без приставки (hello.xml), у шаблона — всегда templateDetails.xml.
Пространство имён
В теге namespace вы один раз придумываете имя: Поставщик\Вид\Название. В курсе поставщик называется My, в настоящем проекте поставьте название своей компании. Joomla свяжет это имя с папкой src и будет сама находить классы — подключать файлы через require не нужно.
Установка архивом
Папку расширения упаковывают в ZIP так, чтобы манифест лежал в корне архива. Архив загружают в панели: «Система → Установка → Расширения», вкладка «Загрузить файл пакета». Так расширения ставят пользователи.
Установка через поиск
При разработке удобнее другой путь: положить папку сразу на её место, например modules/mod_hello, открыть «Система → Установка → Поиск» и нажать «Найти». Joomla покажет найденное расширение — отметьте его и нажмите «Установить». После этого файлы можно править на месте, и изменения видны сразу.
Список установленного — в разделе «Система → Управление → Расширения».
Частая ошибка
Файлы скопировали в папку modules, а модуля в панели нет. Копирование — ещё не установка: Joomla узнаёт о расширении только из записи в таблице #__extensions, которую создаёт установщик. Пройдите шаг «Поиск» — и расширение появится.