Создание сайтов в Челябинске. Продвижение. Оптимизация

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

Разработка модуля для Joomla 2.5.x − 3.x

Разработка компонента для Joomla 3 с нуляВ данной статье мы попытаемся разобраться как же самостоятельно разработать рабочий модуль для Joomla 2.5 или 3.x. Познакомимся с тем как создать установщик модуля, разберем файловую структуру модуля, создадим пару стилей, и добавим в файл конфигурации несколько настроек.

Шаг 1. Файловая структура модуля

Обратим внимание на изображение, на нем представлена структура модуля фотогалереи, сам модуль называется mod_photos, сразу становится понятным откуда берутся названия файлов, также стоит обратить внимание на папку tmpl там лежат файлы, которые генерируют HTML для отображения модуля в той или иной позиции.

Файловая структура модуля

Вообще говоря, основными файлами модуля является XML структура mod_photos.xml и mod_photos.php, вся логика работы модуля заключается именно там.

Шаг 2. Файл-установщика и параметры модуля

В самом начале листинга приведенного ниже размещена информация о разработчике данного модуля и если вы сталкивались с компонентами или шаблонами то уже должны были видеть нечто подобное. Хотелось бы уделить больше внимания на блоки <files> и <languages>.

Блок <files>: в нем перечислены все файлы, которые должен перенести инсталятор Joomla в процессе установки модуля в систему и если там что-то пропустить, то скорее всего ваш модуль выдаст ошибку.

Файлы в каталогах перечислять не надо - это вызовет ошибку!

Далее идет блок <languages> его стоит рассмотреть, ведь мы хотим делать хорошие и удобные для людей модули, поэтому локализация необходима. Атрибут folder указывает папку в которой надо искать папки с названиями локализаций, которые в свою очередь описаны атрибутом tag (ru-RU или en-GB и т.д.).

Есть одна особенность, можно немного упростить себе жизнь, дело в том что Joomla, когда ищет файлы локализации в глобальной папки language также проверяет и папки самих модулей и тут можно пойти на хитрость и прописать папку с названием language (не languages) в блоке <files> и установщик просто скопирует языки не в глобальную папку, а в папку с модулем, это сократит время на отладку нового модуля.

<?xml version="1.0" encoding="utf-8"?>
<extension
  type="module"
  version="2.5"
  client="site"
  method="upgrade">
  <name>mod_photos</name>
  <author>Danila Buyanov</author>
  <creationDate>July 2013</creationDate>
  <copyright>Copyright (C) 2013 Saity74 LLC. All rights reserved.</copyright>
  <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
  <authorEmail>info[at]saity74.ru</authorEmail>
  <authorUrl>www.saity74.ru</authorUrl>
  <version>1.0.0</version>
  <description>MOD_PHOTOS_DESC</description>
  <files>
    <filename module="mod_photos">mod_photos.php</filename>
    <folder>tmpl</folder>
    <filename>helper.php</filename>
    <filename>index.html</filename>    
    <filename>mod_photos.xml</filename>
    <filename>thumbnail.php</filename>
  </files>
  <languages folder="languages">
    <language tag="en-GB">en-GB.mod_photos.ini</language>
    <language tag="en-GB">en-GB.mod_photos.sys.ini</language>
    <language tag="ru-RU">ru-RU.mod_photos.ini</language>
    <language tag="ru-RU">ru-RU.mod_photos.sys.ini</language>
  </languages>
  <config>
    <fields name="params">
      <fieldset name="basic">
      </fieldset>
    </fields>
  </config>
</extension>

Шаг 3. Файл mod_photos

Это основной файл любого модуля, самый простой модуль может запросто состоять только из него и файла установки! Рассмотрим его содержимое:

<?php defined('_JEXEC') or die;
 
$layout = $params->get('layout', 'default');
require JModuleHelper::getLayoutPath('mod_photos', $layout);

В переменную $layout записывается, какой из шаблонов отображения из папки tmpl использовать. По умолчанию используется default