Joomla как писать модули

Создаём модуль для Joomla

Что нужно для самостоятельного создания модуля для Joomla?

  • Умение работать с самой Joomla
  • Знание HTML и CSS
  • Понимание в PHP (хотя бы чуть чуть)
  • Немного внимательности

Этого достаточно) Остальное придёт с опытом.

Создание модуля для Joomla условно можно поделить на 4 этапа.

  1. Создание главного функционала (или поиск готового решения)
  2. Подготовка файлов модуля
  3. Внедрение функционала в модуль
  4. Тестирование

Создание главного функционала

Обычно функции модулей довольно простые.
Это вывод чего либо на сайте: виджет группы, слайдер, соц.кнопки, карта Яндекса, форма заявки и т.д.
Т.е. здесь не нужны массовые вычисления.

Поэтому можно взять что-то готовое и немного изменить под задачи.

К примеру, когда я делал свой первый модуль для Joomla, то взял готовый скрипт формы обратной связи.
Он был уже протестирован и код его был очень простой.
3 поля и кнопка отправить + скрипт который получал данные из формы и отправлял их при помощи функции mail()

Мы с вами тоже не пойдём в дебри, и возьмём готовый код виджета Вконтакте, который выводит кнопку «Напишите нам».
Код виджета можно получить здесь — https://vk.com/dev/ContactUs

Из настроек тут только ID группы.
Чтобы людям было проще, разработчики ВК сделали поле для ссылки на группу.
Обычная ссылка на группу выглядит так — https://vk.com/club27841519
Где 27841519 — это ID группы.

Мы тоже сделаем такое поле, но не для URL адреса группы, а для её ID.
Чтобы не заморачиваться с получением ID из ссылки, будем сразу указывать ID.

Мы будем подставлять в код виджета переменную из нашего поля, пусть она будет называться $group_id

На этом подготовка (и продумывание) главного функционала готово)

Конечно, если взять даже простую форму обратной связи, о которой я говорил выше, то там будет больше кода, и будет немного сложнее.
Но сейчас самое главное я хочу показать принцип создания модулей для Joomla.

Подготовка файлов для модуля Joomla

Для работы модуля нужно несколько системных файлов.

Но для начала давайте дадим название этому модулю. Пусть это будет vk_contactus

От этого названия и будем отталкиваться при создании файлов.

Создаём папку vk_contactus и в ней файлы:

mod_vk_contactus.php — основной файл модуля. Как видите у него есть приставка mod_
Такая приставка используется для модулей.
В этом файле можно подключить JS скрипты, CSS файлы и включить некоторые другие опции.

mod_vk_contactus.xml — это xml файл настроек модуля и параметров при его установке

ru-RU.mod_vk_contactus.ini — перевод языковых констант на русский язык.

КОНСТАНТА=»русский перевод, каждый с новой строки, без запятых»

ru-RU.mod_vk_contactus.sys.ini — перевод системных языковых констант на русский (обычно этот файл пустой).

Можно создавать дополнительные языковые файлы, например en-GB.mod_vk_contactus.ini — для английского перевода.
Если будет несколько переводов, то удобнее положить их в папку language.

Читайте также:  Картридж scx 4100d3 для каких принтеров

Далее создаём папку tmpl — она нужна для хранения шаблонов (макетов) модуля.

default.php — это собственно файл с шаблоном модуля. Он у нас будет один, больше нам и не надо.

Скачать архив файлов для создания модуля можно по этой ссылке.
В файлах уже приведён некотрый код для примера.

Либо в конце можно скачать готовый модуль.

В каждом php файле нужно указать defined(‘_JEXEC’) or die;
Это запрет на прямое обращение к файлу извне.

Файл настроек давайте разберём подробнее.

XML файл настроек

xml version — версия xml документа и кодировка.

extension — тип расширения, в данном случае — модуль.
Ещё тут указывается версия joomla, client — это site или admin (сайт или админка) и метод установки — upgrade позволяет устанавливать новую версию модуля поверх старой. Это удобно, если вы постоянно обновляете свой модуль.

name — название модуля

author — имя автора модуля

creationDate — дата создания

license — тип лицензии

authorEmail — емейл автора

authorUrl — сайт автора

version — версия расширения

description — краткое описание модуля, здесь можно указать языковую константу, и потом в языковых файлах перевести её на нужный язык.

В блоке files указываются файлы и папки модуля.
filename — имя файла (для главного файла модуля добавляется module=»его название», смотри пример в файле)
folder — имя папки

В блоке languages указываются языковые файлы
Если языковые файлы лежат без папки, то folder=»language» не указывается.

В блоке config записываются поля для настройки модуля.

fields — Блок с полями для ввода параметров

fieldset — вкладка с полями, где name — название вкладки

field — поле с параметрами.

Будет лучше, если вы сами посмотрите этот файл и разберёте его содержимое.
А сейчас немного о типах полей.

Типы полей для ввода настроек

По сути, это обычные поля типа input, select и т.д.
Просто в Joomla они называются немного по другому.

Полный список полей можно посмотреть в документации

Мы добавим одно поле, в котором будем указывать ID группы ВК.

И разберём что здесь.

  • name — уникальное имя поля
  • type — тип поля (текстовое, выпадающий список, выбор цвета и т.д.)
  • default — значение поля по-умолчанию (необязательное)
  • label — подпись поля, я указал языковую константу
  • description — всплывающая подсказка (необязательное)

В документации по ссылке выше указаны все типы полей, посмотрите.

Внедрение функционала в модуль

Модуль простой, поэтому внедрение тоже простое.

Главный файл модуля mod_vk_contactus.php

В главном файле модуля мы указываем:

это нужно для подключения css и js файлов в шапку сайта (head).

Это нужно не всегда, как и в нашем случае, но пусть будет на всякий пожарный.
И так же расскажу как подключаются файлы. Вдруг вы будете создавать модуль по-сложнее.

CSS файлы подключаются так:

Где modules/mod_vk_contactus/css/default.css — это путь до css файла.

JS файлы подключаются так:

где modules/mod_vk_contactus/js/script.js — путь до js файла.

Кроме подключения файлов, нужно ещё включить суффикс класса модуля, для него есть специальное поле в настройках каждого модуля.
Он нужен для кастомизации внешнего вида модуля. Суффикс включается этой строчкой:

И в самом конце подключаем шаблон (макет) модуля. Это файл default.php в папке tmpl
Делаем это вот такой строкой:

Читайте также:  Failed to connect to the host via ssh connection timed out during banner exchange

При разных условиях, могут быть разные макеты.

Файл макета default.php

Здесь мы объявляем переменную и вставляем код виджета.

Переменная, в неё пишем значение из поля ID группы

Код виджета, со вставкой переменной $group_id:

Тестирование

Здесь настроек почти нет, и функционал прост, поэтому на тестирование уйдёт всего пара минут)

Если же вы создаёте более сложный модуль, то обязательно тестируйте его на ПК и на мобильных, при разных условиях, и в разных браузерах.

На этом всё, спасибо за внимание.
Готовый модуль можно скачать тут >>

Можете разобрать код других наших модулей, ради благого дела я не против)

Источник

Создание простого модуля для Joomla 4.x. Разработка базового модуля — Часть 1

Введение в написание собственного модуля для Joomla 4

Вы можете увидеть множество примеров модулей в стандартной установке Joomla. Например:

  • Меню
  • Последние Новости
  • Форма входа в систему
  • и многое другое.

В этом уроке будет объяснено, как создать простой модуль для Joomla 4. Из этого урока вы узнаете основную файловую структуру модуля Joomla 4. Затем эту базовую структуру можно расширить для создания более сложных модулей.

Структура файлов модуля для Joomla 4

Существует несколько основных файлов, которые используются в стандартном шаблоне разработки модуля:

  • mod_foo.php
    • Этот файл является основной точкой входа для модуля. Он выполнит все необходимые процедуры инициализации, вызовет вспомогательные процедуры для сбора любых необходимых данных и включит шаблон, который будет отображать вывод модуля.
  • mod_foo.xml
    • Этот файл содержит информацию о модуле. Он определяет файлы, которые необходимо установить с помощью установщика Joomla и задает параметры конфигурации для модуля.
  • tmpl/default.php
    • Это шаблон модуля. Этот файл будет содержать данные, собранные mod_foo.php и сгенерирует HTML-код, который будет отображаться на странице сайта в месте его вывода.
  • language/en-GB/mod_foo.ini и language/en-GB/mod_foo.sys.ini
    • Это файлы, которые предоставляют текст на английском языке Соединенного Королевства Островного Государства.

Создание mod_foo.php

Код в mod_foo.php файле будет выполнять следующие задачи:

  • Импортирует класс ModuleHelper в текущую область.
    • Он нам понадобится позже для отображения выходных данных.
  • Включит шаблон для отображения выходных данных.

Вспомогательный класс импортируется в нашу текущую область в начале файла.

В конце включаем шаблон для отображения выходных данных через:

Код файла mod_foo.php

Код файла mod_foo.php выглядит следующим образом:

Примечаниеː
В Joomla 3.x вы обычно использовали строку типа $moduleclass_sfx = htmlspecialchars($params->get(‘moduleclass_sfx’)); . Теперь это больше не нужно. Зыкните по этой ссылке, если любопытно: https://github.com/joomla/joomla-cms/pull/17447.

Одна строка, которую мы до сих пор не объяснили, — это первая строка defined(‘_JEXEC’) or die; . Эта строка проверяет, включен ли этот файл из приложения Joomla и исключает его запуск вне CMS Joomla. Это необходимо для предотвращения введения переменных и других потенциальных проблем безопасности, проблем с безопасностью и опасными проблемами.

Создание tmpl/default.php

Код файла default.php — это шаблон, который отображает вывод модуля на сайт или в админку Joomla.

Код файла tmpl/default.php

Код файла tmpl/default.php выглядит следующим образом:

Важно отметить, что файл шаблона имеет ту же область действия, что и mod_foo.php . Это означает, что переменная может быть определена в mod_foo.php файл, а затем используется в файле шаблона без каких-либо дополнительных объявлений или вызовов функций.

Создание mod_foo.xml

Код файла mod_foo.xml — это установочный код для внедрения в CMS Joomla 4. Большинство записей не требуют пояснений (Прим.переводчика: ибо лень их пояснять).

Читайте также:  Postgresql create role login

Код файла mod_foo.xml

Код файла mod_foo.xml выглядит следующим образом:

Создание языковых файлов модуля для Joomla 4

Файлы language/en-GB/mod_foo.ini и language/en-GB/mod_foo.sys.ini используются для перевода текста во внешнем интерфейсе (на сайте) и в бэкэнде (в админке). Обратите внимание, что структура языковых файлов была обновлена в Joomla 4 и языковые префиксы для отдельных файлов в языковой папке больше не требуются.

Код для language/en-GB/mod_foo.sys.ini выглядит следующим образом:

Код для language/en-GB/mod_foo.ini выглядит следующим образом:

Файл .sys.ini используется для перевода описания расширения при установке, а языковые константы из .ini используются для перевода остальных строк и описания при просмотре вашего расширения (в текущем контексте — модуля).

Более подробную информацию о языковых файлах можно не найти здесь.

Вы читаете статью из небольшого цикла:
«Создание простого модуля для Joomla 4.x»

Заберите ссылку на статью к себе, чтобы потом легко её найти: выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи!

Источник

Создание простейшего модуля на Joomla 1.5.# (с использованием подключения к БД)

В сети есть много примеров создания модуля Hello World, но это зачастую не является главной целью для человека впервые захотевшего сделать свой модуль. Обычно задача его состоит в том чтобы вывести какие то данные из БД, которые не были предусмотрены обычными стандартными модулями Joomla.
Для этого создадим каталог и положим туда любой файл index.html ( находящийся в любой папке любого модуля Joomla ), чтобы избежать прямого попадания в директорию. Если вы не хотите мучаться с установкой его, а Joomla есть у вас на локалхосте, то можете создать папку вашего модуля сразу в папке modules, после создания всех файликов, сможете сразу зайти в админку, в панель управления модулями, кликнуть «создать» и он будет отображен в списке и готов к включению…

Например модуль будет называться mod_my. Его задача будет отобразить список юзеров из БД и ограничить его количеством заданным собственноручно из админки в управление данным модулем.

Минимальный набор файлов для полноценной работы модуля:
/modules/mod_my/index.html
/modules/mod_my/mod_my.php
/modules/mod_my/mod_my.xml
/modules/mod_my/helper.php
/modules/mod_my/tmpl/index.html
/modules/mod_my/tmpl/default.php

Данный модуль использует архитектуру MVC(Model, View, Controller — Модель, Представление, Контроллер).
Во-первых, мы отделяем логику модуля(контроллер) в файл helper.php, чтобы вся работа с данными производилась только там. Представление(View)/шаблон, (X)HTML же мы вынесем в tmpl/default.php. Это хороший стиль программирования — отделять логику от представления.

Теперь приступим к созданию файлов. Начнем с файла mod_my.php

Основные этапы работы данного файла:

  • Мы включаем(include) файл helper.php, который будет нашей рабочей лошадкой при работе с логикой модуля и данными.
  • После того, как мы получаем данные, мы просто загружаем шаблон, который использует наши данные и отображает их.

Следующий файл, mod_my.xml, будет содержать описание модуля и некоторые его настройки:

Сам же helper.php, будет содержать непосредственно код запроса:

Он просто получает список пользователей из БД и случайным образом заполняет массив подмножеством пользователей, размерность которого задана через параметр модуля и передаётся в метод getItems через параметр $userCount.

И наконец, чтобы все это отображалось простейшим списком, мы создаем файлик tmpl/default.php

В итоге мы получаем полностью рабочий модуль, простейшего содержания, но имеющий подключение к БД и пример его реализации! Далее вы конечно можете его заархивировать в ZIP и он будет готов к установке в любую joomla 1.5

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector