Добавление типа меню для фронтенда в компоненте Joomla 4

Эта статья является частью учебника "Разработка компонента MVC для Joomla 4.x". Он предназначен для последующего руководства по программированию, поэтому, если вы не читали предыдущие части руководства, вам рекомендуется сделать это. Предыдущая статья: «Добавление представления фронтенда в компонент Joomla 4».

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Добавление пункта меню

В этой статье мы рассмотрим, как добавить пункт меню в наш компонент 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!

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

Перевод с английского:
https://docs.joomla.org/J4.x:Developing_an_MVC_Component/Adding_a_Menu_Type_to_the_Site_Part

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню