Оценок пока нет Создание простого модуля для Joomla 3.x

К списку «Проектирование модуля для Joomla 3.x»

Назначение модуля

Чтобы проектировать модуль нам надо определиться с тем, что он будет делать. Данный модуль будет являться скриптом для вывода портфолио пользователя сайта и будет иметь возможность работать с БД и управлять содержимым портфолио.

Базовый скелет модуля

Прежде, чем перейдем к интенсивному процессу разработки создадим скелет модуля и изучим его от А до Я, чтобы больше не отвлекаться на мелкие недопонятые вопросы. Данный скелет модуля будет иметь возможность устанавливаться в Joomla и удаляться из него, а дальше уже будем разъяснять какой файл для чего служит и рассмотри усложнение модуля в плане функциональных возможностей — будем учить по нарастающей.

Файлы и папки модуля

Корень модуля выглядит так, как показано на картинке ниже и далее каждый файл разъясняется

stage-1-module-files-photo-foto-post-create-module-for-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>

 

Установка…

На данный момент модуль не делает ничего особенно ни с клиентской и ни с администраторской части, а просто выводит сообщение, если мы настроим его на вывод через панель управления админа

admin-side-of-module-joomla-by-stage-1

а со стороны клиента

module-output-info-joomla

В дальнейшем усложним задачу и добавим дополнительный функционал. Данный шаг проекта можно скачать по ссылке mod_portfolio_v1.0.0_stage_1.zip.

Пожалуйста, оцените материал

WebSofter

Web - технологии