Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Расширения и файл описания

Расширение — это папка с кодом и файлом описания в формате XML. Файл описания (манифест) сообщает Joomla, что это за расширение, как оно называется и какие файлы в него входят. Без него Joomla расширение не увидит.

Виды расширений

ВидЗначение typeИмяКуда устанавливается
Компонентcomponentcom_hellocomponents/com_hello и administrator/components/com_hello
Модульmodulemod_hellomodules/mod_hello
Плагинpluginplg_content_helloplugins/content/hello
Шаблонtemplatemythemetemplates/mytheme
Языковой пакетlanguageru-RUlanguage/ru-RU
Пакетpackagepkg_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, которую создаёт установщик. Пройдите шаг «Поиск» — и расширение появится.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.