Encodera

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

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

Оглавление

Папки сайта

Чтобы писать расширения, нужно знать, куда 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_hellomodules/mod_hello
Плагин hello группы contentplugins/content/hello
Шаблон Cassiopeiatemplates/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 сама заменит #__ настоящей приставкой. Запрос вернёт идентификаторы и заголовки опубликованных статей.

Частая ошибка

Файлы ядра и чужих расширений править нельзя: первое же обновление сотрёт изменения. Свой код пишут только в своих расширениях. Вывод чужого модуля меняют переопределением макета в шаблоне, а поведение — плагином; оба приёма разобраны дальше в курсе.

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

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