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!
В следующей статье продолжим наращивать функционал нашего компонента ;)