Эта статья является частью учебника "Разработка компонента 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. Дальше будем делать его полезным.
» продолжение тут «
Видео по теме «Начало разработки базового компонента для Joomla 4.x»
Перевод с английского:
https://docs.joomla.org/J4.x:Developing_an_MVC_Component/Developing_a_Basic_Component
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)