004 Добавление типа меню для фронтенда в компоненте Joomla 4
Предыдущая статья: Добавление представления фронтенда в компонент Joomla 4.
Добавление пункта меню
В этой статье мы рассмотрим, как добавить пункт меню в наш компонент Hello World. Это очень простой процесс, в котором мы создаем файл конфигурации меню вместе с нашим шаблоном страницы с соответствующим именем. Затем этот файл будет прочитан системой меню Joomla, и наша страница станет доступной целевой ссылкой.
Давайте продолжим и создадим необходимый файл конфигурации для нашего шаблона "Hello World":
site/tmpl/hello/default.xml
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="Hello World!">
<message><![CDATA[My first Joomla! page]]></message>
</layout>
</metadata>
helloworld.xml
Дописывать новые данные в файл манифеста компонента Joomla 4 не нужно, т.к. новый файл находится в уже описанной папке /site. Необходимо лишь, как всегда, обновить номер версии нашего расширения для того, чтобы Joomla 4 поняла, что загружаемый пакет содержит обновлённый набор данных и переписала файлы, находящиеся в архиве пакета компонента.
<?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.3</version>
<!-- Описание является необязательным и по умолчанию используется имя сомпонента -->
<description>
A hello world component!
</description>
<!-- Это пространство имен PHP, в котором организован
код расширения. Он должен следовать этому формату:
Vendor\Component\ComponentName
"Vendor" может быть названией компании или вашим собственным именем
Раздел "ComponentName" ДОЛЖЕН соответствовать имени, используемому
везде для вашего компонента. Каким бы ни было имя этого XML-файла,
пространство имен должно совпадать (заглавные/прописные буквы не учитываются).
-->
<namespace path="src/">JohnSmith\Component\HelloWorld</namespace>
<files folder="site/">
<folder>src</folder>
<folder>tmpl</folder>
</files>
<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>
Обратите внимание на строку 14.
Тестирование пункта меню
Заархивируйте папку с файлами компонента и установите расширение, как и раньше (см. предыдущие статьи). После этого в админке Joomla 4 разверните раздел "Menus" (Меню) в левом меню и нажмите значок со знаком плюс рядом с Main Menu. Это откроет опцию "New Menu Item" (Новый пункт меню):

Здесь есть много вариантов, но два, которые нас волнуют, - это имя ссылки и ее тип. Кликните по ссылке "Hello World", а затем выберите тип элемента меню. Вы увидите список всех доступных типов пунктов меню, собранных в категории.

Вы должны увидеть наш компонент "Hello World" как новую категорию. Разверните эту категорию, и появится наш новый тип ссылки. Продолжайте и выберите его, а затем сохраните пункт меню. Перейдите к пользовательской части сайта Joomla 4, и вы увидите, что в главном меню появится ссылка "Hello World". Нажав на него, вы попадете на страницу "Hello World", которую мы создали в предыдущей статье.
Видите, как это было просто создать пункт меню со ссылкой на самописный компонент Joomla 4!
В следующей статье продолжим наращивать функционал нашего компонента ;)