002 Начало разработки базового компонента для Joomla 4.x
Предыдущая статья: Введение в разработку компонента MVC для Joomla 4.x
- Ваш первый компонент для Joomla 4.x
- Содержимое файлов компонента для Joomla 4.x
- Установка компонента в CMS Joomla 4.x
- Тестирование компонента CMS Joomla 4.x
- Видео по теме «Начало разработки базового компонента для Joomla 4.x»
Ваш первый компонент для Joomla 4.x
В этой статье мы расскажем о том, как создать и установить базовый компонент Joomla 4, который мы изобретательно назовем компонентом "Hello World".
Для начала необходимо сначала нужно создать каталог (папку) для компонента "Hello World" у себя на локальном компьютере. Этот каталог может находиться в любом месте вашей файловой системы. Для этого примера мы назовем каталог com_helloworld
, потому что именно так выглядит каталог компонентов, когда он находится внутри Joomla. (Префикс com
означает "компонент".)
Далее, внутри этого каталога нам нужно создать несколько файлов. Создайте следующие файлы в нём. При создании файлов добавьте исходный код для каждого файла, который можно найти ниже в разделе Содержимое файлов компонента для Joomla 4.x.
helloworld.xml
- Файл XML-манифеста, который сообщает Joomla 4, как установить наш компонент.
admin/services/provider.php
- Поясняет Joomla 4, как инициализировать компонент
admin/src/Controller/DisplayController.php
- Контроллер MVC для страницы "Hello World", с которой мы начнем.
admin/src/View/Hello/HtmlView.php
- Представление (вид) MVC для страницы "Hello World", с которой мы начнем.
admin/tmpl/hello/default.php
- Шаблон HTML/PHP для страницы "Hello World"
Содержимое файлов компонента для Joomla 4.x
helloworld.xml
Это файл манифеста, который описывает компонент и его конфигурацию для Joomla 4. Он используется во время установки компонента в систему CMS Joomla для копирования файлов компонента в правильные места, запуска установки базы данных, настройки пространства имен PHP компонента и так далее.
<?xml version="1.0" encoding="utf-8"?> <extension type="component" method="upgrade"> <!-- атрибут 'version' для тега расширения больше не используется --> <name>Hello World</name> <!-- Следующие элементы являются необязательными и не содержат ограничений на форматирование --> <creationDate>May 2021</creationDate> <!-- Фиктивный автор, не стесняйтесь заменять его в любом месте, где вы его видите --> <author>John Smith</author> <authorUrl>https://mb4.ru</authorUrl> <copyright>Пётр Васечкин</copyright> <license>GPL v3</license> <!-- Строка 'version' записывается в таблицу компонентов --> <version>0.0.1</version> <!-- Описание является необязательным и по умолчанию используется имя сомпонента --> <description> A hello world component! </description> <!-- Это пространство имен PHP, в котором организован код расширения. Он должен следовать этому формату: Vendor\Component\ComponentName "Vendor" может быть названией компании или вашим собственным именем Раздел "ComponentName" ДОЛЖЕН соответствовать имени, используемому везде для вашего компонента. Каким бы ни было имя этого XML-файла, пространство имен должно совпадать (заглавные/прописные буквы не учитываются). --> <namespace path="src/">JohnSmith\Component\HelloWorld</namespace> <administration> <!-- Ссылка, которая появится в меню админки Joomla "Components" --> <menu link="index.php?option=com_helloworld">Hello World</menu> <!-- Список файлов и папок для копирования. Обратите внимание на атрибут "folder". Это имя папки в пакете компонентов для копирования в CMS Joomla 4. --> <files folder="admin/"> <folder>services</folder> <folder>src</folder> <folder>tmpl</folder> </files> </administration> </extension>
admin/services/provider.php
Это специальный файл, который сообщает Joomla 4, как инициализировать компонент - какие услуги ему требуются и как они должны предоставляться.
<?php defined('_JEXEC') or die; use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface; use Joomla\CMS\Extension\ComponentInterface; use Joomla\CMS\Extension\MVCComponent; use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory; use Joomla\CMS\Extension\Service\Provider\MVCFactory; use Joomla\CMS\MVC\Factory\MVCFactoryInterface; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; return new class implements ServiceProviderInterface { public function register(Container $container): void { $container->registerServiceProvider(new MVCFactory('\\JohnSmith\\Component\\HelloWorld')); $container->registerServiceProvider(new ComponentDispatcherFactory('\\JohnSmith\\Component\\HelloWorld')); $container->set( ComponentInterface::class, function (Container $container) { $component = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class)); $component->setMVCFactory($container->get(MVCFactoryInterface::class)); return $component; } ); } };
admin/src/Controller/DisplayController.php
Контроллер MVC для нашего первого представления "hello". По мере усложнения нашего компонента контроллер страницы будет обрабатывать выбор моделей, отправку форм и так далее. Здесь он просто устанавливает свое представление по умолчанию, а остальное оставляет своему родителю.
<?php namespace JohnSmith\Component\HelloWorld\Administrator\Controller; defined('_JEXEC') or die; use Joomla\CMS\MVC\Controller\BaseController; /** * @package Joomla.Administrator * @subpackage com_helloworld * * @copyright Copyright (C) 2021 John Smith. All rights reserved. * @license GNU General Public License version 3; see LICENSE */ /** * Контроллер по умолчанию компонента HelloWorld * * @package Joomla.Administrator * @subpackage com_helloworld */ class DisplayController extends BaseController { /** * Представление по умолчанию для метода отображения. * * @var string */ protected $default_view = 'hello'; public function display($cachable = false, $urlparams = array()) { return parent::display($cachable, $urlparams); } }
admin/src/View/Hello/HtmlView.php
Это объект представления (вида) MVC для нашей первой страницы. Задача объекта представления заключается в выполнении работы по настройке шаблона представления - выборе макета, извлечении Javascript, создании панелей инструментов и т.д.. Чтобы просто загрузить нашу страницу "hello world", мы делегируем работу по инициализации представления Joomla 4.
<?php namespace JohnSmith\Component\HelloWorld\Administrator\View\Hello; defined('_JEXEC') or die; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; /** * @package Joomla.Administrator * @subpackage com_helloworld * * @copyright Copyright (C) 2021 John Smith. All rights reserved. * @license GNU General Public License version 3; see LICENSE */ /** * Основной вид в админке "Hello World" */ class HtmlView extends BaseHtmlView { /** * Отображение основного вида "Hello World" * * @param string $tpl Имя файла шаблона для анализа; автоматический поиск путей к шаблону. * @return void */ function display($tpl = null) { parent::display($tpl); } }
admin/tmpl/hello/default.php
Этот файл содержит шаблон для страницы. Он используется для визуализации страницы с использованием настроек, выполняемых объектом представления.
Если для представления не требуется конкретный макет, Joomla 4 загрузит шаблон в default.php
файл, вот почему мы используем это имя файла.
<?php /** * @package Joomla.Administrator * @subpackage com_helloworld * * @copyright Copyright (C) 2021 John Smith. All rights reserved. * @license GNU General Public License version 3; see LICENSE */ // Нет прямого доступа к этому файлу defined('_JEXEC') or die('Всем кыш! =D'); ?> <h2>Hello world!</h2>
Установка компонента в CMS Joomla 4.x
Создайте .zip
- файл каталога com_helloworld
, включив сам каталог и убедитесь, что структура каталогов сохранена.
- Используя свой веб-браузер, перейдите в панель администратора Joomla 4 вашего сайт. Адрес будет
<домен>/administrator/
. Например:https://mb4.ru/administrator/
- В левом меню админки Joomla 4 нажмите на ссылку "System" (Система).
- Там в поле "Install" (Установка) кликните по ссылке "Extensions" (Расширения).
- На вкладке "Upload Package File" (Загрузить файл пакета) найдите и выберите только что созданный zip-файл с вашего компьютера.
Далее Joomla 4 должна автоматически обработать установку компонента, и вы получите сообщение о том, была ли она успешной или нет.
Тестирование компонента CMS Joomla 4.x
После успешной установки компонента нажмите на раздел "Components" (Компоненты) меню слева в панели администратора. Теперь вы должны увидеть новую ссылку в этом разделе с надписью "Hello World". Это ссылка, подробно описанная в файле манифеста компонента. Если вы нажмете на нее, вы увидите страницу "Hello World!".
Поздравляю! Вы создали свой первый компонент Joomla 4. Дальше будем делать его полезным.
» продолжение тут «