Дополнительный пункт меню в панели управления Joomla
Как и шаблоны, панель управления Joomla состоит из модулей разного характера. Вот только модули, созданные для шаблона можно ставить где угодно, а в панели всё по-другому. Как правило, программисты, создавая модули для административной части сайта делают их под какое-то конкретное место. Если же разместить их в случайном порядке, то страница панели, скорее всего, будет выглядеть криво. В этом нет ни чего удивительного, если хотите менять внешний вид целиком, придётся скачивать шаблоны для самой панели и ставить их по умолчанию. А что если мы не хотим таких больших перемен и нам достаточно изменить или добавить какой-то элемент? Именно этим мы сегодня и займёмся. Создадим дополнительный пункт в верхнем меню нашей панели Joomla 3. Возможности движка предлагают создать копию уже готового меню и изменить по усмотрению, но это слишком долго. Я предлагаю создать отдельный пункт при помощи модуля. Название нашего пункта мы сможем выбрать самостоятельно, а так же добавить туда собственные ссылки. Для работы использую Joomla 3.x и стандартный шаблон панели управления.
1. Создаём модуль Add Menu
Первым делом создадим папку с названием mod_add_menu. Обязательно должна быть написано mod в начале, так движок определяет, что внутри папки возможны файлы для установки в качестве расширения. Дополнительно создаём два файла mod_add_menu.xml и mod_add_menu.php (в их названии присутствие mod тоже обязательно). Вы можете воспользоваться любым текстовым редактором, у меня это NotePad++. Бросаем файлы в нашу папку:
Оба файла открываем в программе и вставляем в mod_add_menu.xml следующее:
XML код:
<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.6" client="administrator" method="upgrade"> <name>Add Menu</name> <author>WebDesign</author> <creationDate>august 2016</creationDate> <copyright>Copyright (C) 2016. All rights reserved.</copyright> <license>Public License</license> <authorEmail><a href="mailto:Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.<">Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.<</a>;/authorEmail> <authorUrl>www.author.ru</authorUrl> <version>1.0.0</version> <description>Дополнительный пункт в меню панели управления.</description> <files> <filename module="mod_addmenu">mod_add_menu.php</filename> </files> <config> <fields name="params"> <fieldset name="addmenu" label="Добавить меню"> <field name="textmenu" class="" type="text" default="" label="Название" description="Название пункта меню." /> <field name="texturl1" class="" type="text" default="" label="Текст ссылки 1" description="Название ссылки 1." /> <field name="menuPanel-Link1" type="url" default="" label="Установить ссылку 1" description="Вставте сюда url страницы." filter="string" /> <field name="texturl2" class="" type="text" default="" label="Текст ссылки 2" description="Название ссылки 2." /> <field name="menuPanel-Link2" type="url" default="" label="Установить ссылку 2" description="Вставте сюда url страницы." filter="string" /> <field name="texturl3" class="" type="text" default="" label="Текст ссылки 3" description="Название ссылки 3." /> <field name="menuPanel-Link3" type="url" default="" label="Установить ссылку 3" description="Вставте сюда url страницы." filter="string" /> <field name="texturl4" class="" type="text" default="" label="Текст ссылки 4" description="Название ссылки 4." /> <field name="menuPanel-Link4" type="url" default="" label="Установить ссылку 4" description="Вставте сюда url страницы." filter="string" /> <field name="texturl5" class="" type="text" default="" label="Текст ссылки 5" description="Название ссылки 5." /> <field name="menuPanel-Link5" type="url" default="" label="Установить ссылку 5" description="Вставте сюда url страницы." filter="string" /> </fieldset> </fields> </config> </extension>
Здесь я добавляю дополнительную вкладку на странице под настройки нашего меню (смотрите тег <fieldset>). Если вкратце, то создаю пять ссылок и заголовок. Более подробно о доступных полях поговорим в третьем пункте.
Остаётся написать код в файл mod_add_menu.php для вывода собственно самого меню:
PHP код:
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); if ($params->get('textmenu')){ $TextMenu = '' . $params->get('textmenu') . '';} if ($params->get('texturl1')){ $TextUrl1 = '' . $params->get('texturl1') . '';} if ($params->get('texturl2')){ $TextUrl2 = '' . $params->get('texturl2') . '';} if ($params->get('texturl3')){ $TextUrl3 = '' . $params->get('texturl3') . '';} if ($params->get('texturl4')){ $TextUrl4 = '' . $params->get('texturl4') . '';} if ($params->get('texturl5')){ $TextUrl5 = '' . $params->get('texturl5') . '';} ?> <div> <ul id="menu"> <li> <a data-toggle="dropdown" href="#"><?php echo $TextMenu ?></a> <ul> <li> <?php if ($params->get('menuPanel-Link1')){ echo '<a target="_blank" href="' . $params->get('menuPanel-Link1') . '">' . $TextUrl1 . '</a>';} else { echo $TextUrl1; } ?> <?php if ($params->get('menuPanel-Link2')){ echo '<a target="_blank" href="' . $params->get('menuPanel-Link2') . '">' . $TextUrl2 . '</a>';} else { echo $TextUrl2; } ?> <?php if ($params->get('menuPanel-Link3')){ echo '<a target="_blank" href="' . $params->get('menuPanel-Link3') . '">' . $TextUrl3 . '</a>';} else { echo $TextUrl3; } ?> <?php if ($params->get('menuPanel-Link4')){ echo '<a target="_blank" href="' . $params->get('menuPanel-Link4') . '">' . $TextUrl4 . '</a>';} else { echo $TextUrl4; } ?> <?php if ($params->get('menuPanel-Link5')){ echo '<a target="_blank" href="' . $params->get('menuPanel-Link5') . '">' . $TextUrl5 . '</a>';} else { echo $TextUrl5; } ?> </li> </ul> </li> </ul> </div>
Здесь сформировываю переменные на основании настроек из файла mod_add_menu.xml. Используя полученные переменные, создаю функции, а после заключаю их в стили, взятые из стандартного модуля меню. Проще говоря, используя стандартный шаблон панели, поэтому наши ссылки будут гармонично вписываться.
2. Устанавливаем модуль на Joomla
У нас в наличие уже полностью готовый модуль, который необходимо разместить в специальной папке на сервере. И так, папку mod_add_menu бросаем в директорию …/administrator/modules/:
Если папки и файлы созданы с подзаголовком mod в начале, то Joomla автоматически их распознаёт и добавляет на специальную страницу поиска. Переходим как раз на эту страницу в панели управления «Расширения – менеджер расширений – поиск».
Как вы видите, наш модуль сразу же нашёлся, ставим галочку и жмём «установить» слева вверху. Теперь открываем «Расширения – менеджер модулей», выбираем «Панель управления» в выпадающем меню и нажимаем «создать». Наш тип модуля будет на первом месте (называется Add Menu):
Заполняем заголовок, выставляем позицию «menu», по необходимости меняем доступ на «Super Users» и переходим на вкладку «Добавить меню».
3. Настраиваем
Смотрим на созданные ранее настройки в файле mod_add_menu.xml.
Тут всё просто, на картинке я заполнил по-своему:
Название – это название пункта меню. Если оставить пустым, а заполнить ссылки, сам пункт меню не появится. Точнее он будет загружен вместе со страницей, но вы его не увидите. Поэтому здесь обязательно заполняем, если хотим добавить к основному меню.
Текст ссылки 1-5 – имя текстовой ссылки.
Установить ссылку – вставить url страницы. Если оставить пустым, то имя текстовый ссылку всё равно будет показано. Если сделать наоборот и не прописывать имя, то ссылку вы всё равно не увидите.
Все поля заполнять не обязательно. Пишите ссылки, не пропуская строчек для заполнения. Если требуется, к примеру, всего две ссылки, то последние три просто не заполняете. Вообще количество ссылок и подпунктов меню можно изменить по собственному желанию в созданных нами файлах mod_add_menu.php и mod_add_menu.xml.
Как только заполните поля и сохранитесь, вы сразу же увидите наш пункт вверху, но стоять он будет слева. Модули в менеджере добавляются по алфавиту. По желанию меняем расстановку и убираем пункт «Справка» в модуле «Admin Menu».
Вот как будет смотреться:
Чтобы наши ссылки были внешне схожи с другими, я не стал заново создавать таблицу стилей, а просто использовал классы из основных пунктов и подпунктов меню. В данный момент использую стандартный шаблон панели управления, поэтому решил сэкономить время. Но если вы будете менять этот шаблон, то придётся переписывать значения в тегах файла mod_add_menu.php.
Заключение
Созданный нами модуль, как и все те, что находятся в Joomla, имеют стандартные параметры для настройки. Это такие как: доступ для пользователей, порядок расположения, дополнительные параметры и т.д. Всё это к тому, что вы можете создать абсолютно любые ссылки, и никто кроме вас их не увидит. Ещё одна важная деталь - модуль не реагирует на переход между страницами как стандартное меню, то есть он всегда активен. Если вы сейчас попытаетесь создать материал, то основные пункты верхнего меню автоматически отключатся, когда как наши ссылки будут доступны.
Соседние материалы | ||||
Форма обратной связи для Joomla своими руками | Создаём всплывающее окно авторизации для Joomla |