Папки сайта
Чтобы писать расширения, нужно знать, куда Joomla кладёт файлы. Структура папок одинакова на любом сайте, поэтому путь из урока всегда совпадёт с путём у вас.
Корень сайта
joomla.test/
├── administrator/ панель управления
├── api/ веб-сервисы (API)
├── cache/ кеш
├── cli/ консольная программа joomla.php
├── components/ компоненты сайта
├── language/ переводы сайта
├── layouts/ общие макеты
├── libraries/ ядро Joomla
├── media/ стили, скрипты и картинки расширений
├── modules/ модули сайта
├── plugins/ плагины, разложенные по группам
├── templates/ шаблоны оформления сайта
├── tmp/ временные файлы
├── configuration.php настройки сайта
└── index.php точка входа сайтаЛюбой запрос посетителя приходит в index.php. Он запускает Joomla, а та решает, какой компонент покажет страницу.
Сайт и администратор
В Joomla два приложения: сайт (site) и панель управления (administrator). У панели своя точка входа и свои папки с теми же названиями:
administrator/
├── components/ компоненты панели
├── language/ переводы панели
├── modules/ модули панели
├── templates/ шаблоны панели
└── index.php точка входа панелиПоэтому у компонента обычно две половины. Например, статьи — это компонент com_content:
| Папка | Что в ней |
|---|---|
components/com_content | Страницы для посетителей: статья, список категории |
administrator/components/com_content | Экраны панели: список статей, форма редактирования |
Слово «клиент» в документации и в файлах XML означает именно это: client="site" или client="administrator".
Где что искать
| Нужно найти | Папка |
|---|---|
Модуль сайта mod_hello | modules/mod_hello |
Плагин hello группы content | plugins/content/hello |
| Шаблон Cassiopeia | templates/cassiopeia |
| Стили и скрипты модуля | media/mod_hello |
| Классы ядра | libraries/src |
Папка libraries/src полезна как справочник: класс Joomla\CMS\Language\Text лежит в файле libraries/src/Language/Text.php. Править там ничего нельзя.
Файл настроек
configuration.php содержит класс JConfig с настройками: данные базы, название сайта, режим отладки. Его записывает форма «Система → Общие настройки», вручную его правят редко — например, после переноса сайта.
Таблицы базы
Имена таблиц начинаются с приставки, выбранной при установке, например abc12_content. В коде вместо приставки пишут #__:
SELECT id, title FROM #__content WHERE state = 1;Joomla сама заменит #__ настоящей приставкой. Запрос вернёт идентификаторы и заголовки опубликованных статей.
Частая ошибка
Файлы ядра и чужих расширений править нельзя: первое же обновление сотрёт изменения. Свой код пишут только в своих расширениях. Вывод чужого модуля меняют переопределением макета в шаблоне, а поведение — плагином; оба приёма разобраны дальше в курсе.