Предыдущая статья: Добавление представления фронтенда в компонент 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" (Новый пункт меню):

Тестирование пункта меню компонента Joomla 4

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

список всех доступных типов пунктов меню Joomla 4, собранных в категории

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

Видите, как это было просто создать пункт меню со ссылкой на самописный компонент Joomla 4!

В следующей статье продолжим наращивать функционал нашего компонента ;)