К списку «Проектирование модуля для Joomla 3.x»
Назначение модуля
Чтобы проектировать модуль нам надо определиться с тем, что он будет делать. Данный модуль будет являться скриптом для вывода портфолио пользователя сайта и будет иметь возможность работать с БД и управлять содержимым портфолио.
Базовый скелет модуля
Прежде, чем перейдем к интенсивному процессу разработки создадим скелет модуля и изучим его от А до Я, чтобы больше не отвлекаться на мелкие недопонятые вопросы. Данный скелет модуля будет иметь возможность устанавливаться в Joomla и удаляться из него, а дальше уже будем разъяснять какой файл для чего служит и рассмотри усложнение модуля в плане функциональных возможностей — будем учить по нарастающей.
Файлы и папки модуля
Корень модуля выглядит так, как показано на картинке ниже и далее каждый файл разъясняется
Следует отметить, что это не полный перечень файлов модуля, есть дополнительные, которые, в дальнейшем, будут добавляться по мере усложнения задачи
helper.php — т.н. помощник модуля, в котором реализуется главный класс модуля и делает фактическую работу в получении информации, которая будет отображаться в модуле (как правило, из базы данных или другого источника).
<?php class ModPortfolio{ //Поля главного класса public static $title = ""; public static $description = ""; public static $icon = ""; //Методы главного класса public static function view($param){ echo $param; } } ?>
mod_portfoio.php — самый главный файл. Это точка входа в наш модуль. Именно он будет первым запускаться и является, своего рода, контроллером связи между данными и видом.
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); require_once dirname(__FILE__) . '/helper.php'; //Выводим сообщение ModPortfolio::view("<br/>Контент модуля из контроллера...<br/>"); //Подключаем схему require( JModuleHelper::getLayoutPath( 'mod_portfolio') ); ?>
mod_portfoio.xml — это манифест нашего модуля, в котором будут параметры, настройки модуля. Этот файл так же регламентирует процесс установки модуля и процесс его правильного удаления из системы Joomla.
<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.0" client="site"> <name>WebSofter Module Portfolio. Stage 1</name> <author>David Amirkhanov</author> <creationDate>August 2016</creationDate> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <authorEmail>mail.websofter@gmail.com</authorEmail> <authorUrl>www.wsofter.com</authorUrl> <version>1.0.0</version> <description>Module Portfolio for Joomal CMS designed by David Amirkhanov</description> <files> <filename module="mod_portfolio">mod_portfolio.php</filename> <filename>index.html</filename> <filename>helper.php</filename> <folder>tmpl</folder> </files> <config> <fields name="params"> <fieldset name="basic"> <field name="title" type="text" label="Заголовок" description="Заголовок проекта" required="true" size="30" validate="" /> <field name="description" type="editor" default="" label="Описание" description="Описание проекта"/> <field name="icon" type="file" label="Иконка" description="Иконка проекта" accept="images/*"/> </fieldset> </fields> </config> </extension>
index.html — кладется в каждую папку, которую вы создаете, чтобы левый пользователь не мог зайти в каталог введя его адрес в браузере.
<!DOCTYPE html> <html> <head> <title>Пусто</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div>Вам сюда нельзя</div> </body> </html>
tmpl — в этой папке лежат файлы-шаблоны, стили и скрипты, они отвечают за внешний вид модуля и ее динамическое оформление. Здесь наш HTML код с сопутствующим оформлением.
tmpl/default.php — этот файл является видом по умолчанию. Т.е. если вы не указываете какой-то конкретный шаблон, запускается default.php, который распознается системой, а его именование стандартное и задокументированное.
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); ?> <article style="background-color: #cccccc; border:1px solid silver;"> Контент модуля из шаблона... <br/> <button id="mod-portfolio-btn">Кнопка</button> </article>
Установка…
На данный момент модуль не делает ничего особенно ни с клиентской и ни с администраторской части, а просто выводит сообщение, если мы настроим его на вывод через панель управления админа
а со стороны клиента
В дальнейшем усложним задачу и добавим дополнительный функционал. Данный шаг проекта можно скачать по ссылке mod_portfolio_v1.0.0_stage_1.zip.