Матвей Земсков

Заметки веб-мастера

Вторник, 15 января 2013 16:06

Создание модулей для Joomla2.5

Оцените материал
(3 голосов)

В Интернет можно найти много учебников по работе с CMS “Joomla”, но большинство из них предназначены для начинающих. Я решил создать учебник для начинающих разработчиков о создании собственного модуля для “Joomla”. Я имею ввиду не “Custom HTML” модуль, а динамический модуль, который будет взаимодействовать с базой данных и предоставлять нам список зарегистрированных пользователей на сайте. Давайте начнем…

Создание структуры модуля – папок и файлов.

При создании любого расширения для “Joomla”, нужно придерживаться определенной строгой структуры папок и файлов. Для создания папок и файлов вы можете использовать редактор или IDE, которым обычно пользуетесь. Если такового нет, можете пользоваться Notepad++. Сначала создайте основную папку модуля под названием “mod_siteusers”. В ней создайте файлы, по приведенному ниже списку.

Важно: для того, чтобы модуль работал, папка “mod_siteusers” должна находиться в папке “modules”, расположенной в корне вашего сайта. Однако пока делать этого не нужно, так как сначала нужно создать модуль, затем запаковать его файлы в zip-архив и установить его в административной части CMS “Joomla”.

  • mod_siteusers
    • -mod_siteusers.xml
    • -mod_siteusers.php
    • -helper.php
    • -index.html
    • -en-GB.mod_siteusers.ini
    • -ru-RU.mod_siteusers.ini
    • --tmpl (папка)
    • --tmpl/default.php
    • --tmpl/ordered_list.php
    • --tmpl/index.html

Сейчас подробно опишем каждый файл. Пожалуйста, обратите внимание на комментарии в коде.

mod_siteusers.xml

Этот файл содержит все данные о модуле: информацию о модуле и его параметрах, а также точную структуру файлов.

XML

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="1.6.0" client="site" method="install">
	<name>Site Users</name> 
	<author>Brad Traversy</author> 
	<creationDate>2012</creationDate> 
	<copyright>All rights reserved by Tech Guy Web Solutions.</copyright> 
	<license>GPL 2.0</license> 
	<authorEmail>info@techguywebsolutions.com</authorEmail> 
	<authorUrl>www.techguywebsolutions.com</authorUrl> 
	<version>1.0.0</version> 
	<description>Provides a listing of registered users</description>
        <!—-Список всех файлов модуля -->
	<files>
        <!—- Атрибут "module" показывает, что это основной файл контроллера -->
		<filename module="mod_siteusers">mod_siteusers.php</filename>
		<filename>index.html</filename>
		<filename>helper.php</filename>
		<filename>tmpl/default.php</filename>
                <filename>tmpl/ordered_list.php</filename>
		<filename>tmpl/index.html</filename>
	</files>
 
    <languages>
        <!— Все языковые файлы включенные в модуль -->
        <language tag="en-GB">en-GB.mod_siteusers.ini</language>
        <language tag="ru-RU">ru-RU.mod_siteusers.ini</language>
    </languages>
 
    <!—Дополнительные параметры -->
	<config>
            <fields name="params">
                <fieldset name="basic">
                    <field 
                        name="moduleclass_sfx" 
                        type="text" 
                        default="" 
                        label="LABEL_CLASS_SUFFIX" 
                        description="DESC_MOD_SUFFIX">
                    </field>
                     <field 
                        name="@spacer" 
                        type="spacer" 
                        default="" 
                        label="" 
                        description="">
                    </field>
                     <field 
                        name="usercount" 
                        type="text" 
                        default="5" 
                        label="LABEL_USER_COUNT" 
                        description="DESC_USER_COUNT">
                    </field>
                     <field 
                        name="layout" 
                        type="list" 
                        default="default" 
                        label="LABEL_USER_LAYOUT" 
                        description="DESC_USER_LAYOUT">
                       <option value="default">Unordered List</option>
		      <option value="ordered_list">Ordered List</option>
                    </field>
                </fieldset>
            </fields>
    </config>
</extension>

Вы может свободно изменять персональную информацию. Обратите внимание на теги “<field>”. В них описываются параметры, которые вы можете увидеть в «Менеджере модулей» административной части сайта на странице настроек определенного модуля. В нашем модуле их 4. Во-первых, это параметр «Суффикс класса модуля», который есть у любого модуля в системе. В это поле пользователь может добавить свой суффикс, который будет присоединен к имени CSS-класса в коде модуля. Это поможет изменить внешний вид модуля на странице сайта. Второй параметр – это просто «разделитель». Третий параметр – количество отображаемых пользователей в модуле и, наконец, четвертый параметр – возможные варианты отображения списка пользователей. Каждый вариант отображения – это шаблон, который нужно размещать в папке “tmpl”. В настройках нашего модуля можно выбрать 2 варианта отображения: в виде нумерованного списка без описания перед списком и в виде ненумерованного списка с описанием перед списком. Отличия при выборе одного из этих параметров незначительны, но мне просто хочется показать эту возможность на простом примере. Также вы могли обратить внимание на значение атрибута “label”, которое равно “LABEL_USER_COUNT”. Оно используется в языковых файлах, но об этом позже.

mod_siteusers.php

Это файл контроллер, управляющий функциями и файлами модуля.

PHP

	<?php
	// запрещаем вызов этого файла напрямую
	defined('_JEXEC') or die('Direct access to this location is not allowed.');

	// получаем значение параметра, описанного в xml-файле.
	$userCount = $params->get('usercount');

	// подключаем файл с функциями
	require_once dirname(__FILE__).'/helper.php';

	// подключаем файл с шаблоном для отображения
	require JModuleHelper::getLayoutPath('mod_siteusers', $params->get('layout','default'));
	?>

helper.php

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

PHP

	<?php
	// нет - прямому доступу к файлу
	defined('_JEXEC') or die();

	// Создаем объект для работы с базой данных
	$db = JFactory::getDBO();

	// Формируем запрос с ограничением кол-ва результатов - значением параметра usercount
	$query = "SELECT name FROM #__users LIMIT {$userCount}";

	//выполняем запрос
	$db->setQuery($query);

	// Результаты запроса помещаем в переменную "$rows" в виде объекта
	$rows = $db->loadObjectList();
	?>

Запрос в этом файле выбирает из таблицы #__users «имена» пользователей, ограничивая количество возвращаемых строк значением параметра «количество пользователей», которое пользователь устанавливает в настройках модуля. Результаты этого запроса будут помещаться с помощью метода "loadObjectsList" в переменную $rows (это массив объектов). Значения свойств объектов, хранящихся в переменной, мы сможем вывести в цикле в шаблоне (файл default.php).

index.html

HTML

<html><body bgcolor="#FFFFFF"></body></html>

Этот HTML-файл используется исключительно для предотвращения доступа пользователей к файлам модуля напрямую.

tmpl/default.php

PHP

	<?php defined('_JEXEC') or die('Direct access to this location is not allowed.');?>
	<p><?php echo JText::_('DESC_MODULE');?></p>
	<ul>
		<?php foreach($rows as $row){?>
		<li>
		   <?php echo JText::sprintf('USER_LABEL', $row->name);?>
		</li>
		<?php }?>
	</ul>

default.php – шаблон модуля, используемый «по умолчанию». По сути, он представляет собой HTML-файл с вставками кода PHP. PHP-код состоит из цикла, в котором обрабатывается массив, содержащий имена пользователей. Данные из массива выводятся на страницу сайта в виде ненумерованного списка.

tmpl/ordered_list.php

PHP

	<?php defined('_JEXEC') or die('Direct access to this location is not allowed.');?>
	<ol>
		<?php foreach($rows as $row){?>
		<li>
			<?php echo JText::sprintf('USER_LABEL', $row->name);?>
		</li>
		<?php }?>
	</ol>

Этот шаблон выводит список пользователей сайта в виде нумерованного списка. Как описывалось выше, отличаются эти 2 шаблона только тем, что у второго шаблона отсутствует значение параметра «описание» из настроек модуля и список нумерованный.

index.html

HTML

<html><body bgcolor="#FFFFFF"></body></html>

Также как и в папке модуля, этот HTML-файл используется исключительно для предотвращения доступа пользователей к файлам модуля напрямую.

Теперь, когда все файлы вашего модуля созданы, все содержимое папки "mod_siteusers" нужно поместить в ZIP-файл, используя любой архиватор (WinZip, WinRar, 7zip, и т.п.).

Поздравляю! Ваш первый модуль Joomla создан. Давайте попробуем его установить!

Войдите в административную панель сайта и откройте «Менеджер расширений». Нажмите кнопку «Обзор» в секции «Установка» и выберите архив с вашим модулем. После установки вы увидите сообщение «Установка модуля успешно завершена».

Настройки модуля в менеджере модулей Joomla

Теперь перейдите в «Менеджер модулей», там в списке модулей должен появиться ваш модуль. Кликните по названию и вы увидите свойства модуля. Все ваши параметры будут находиться справа. Вы можете изменить количество пользователей, которое будет отображаться, а также тип списка. Теперь убедитесь, что модуль опубликован в желаемой позиции в шаблоне.

Откройте публичную часть сайта и вы увидите ваш модуль в работе.

Результаты работы модуля на странице сайта

Результаты работы модуля выглядят не очень привлекательно. Предлагаю вам изменить его в качестве домашнего задания. Это модуль очень прост. Вы можете использовать фреймворк, чтобы извлечь любые данные из базы данных, например, такие как статьи или еще что-нибудь. Также вы можете извлечь из базы и отобразить в модуле такие данные как: email пользователей, логин и многое другое. Возможности безграничны!

Вы можете скачать код созданного модуля.

Перевод – Земсков Матвей

Оригинал статьи - http://www.techguywebsolutions.com/create-a-custom-joomla-2.5-module.html

Прочитано 8155 раз

Добавить комментарий


Защитный код
Обновить

Мои услуги

Предлагаю следующие услуги:

  • Верстка шаблона сайта из дизайн-макета для CMS «1С-Битрикс Управление сайтом» и CMS “Joomla”
  • Создание форм различной сложности (обратная связь, анкеты и тп) для указанных CMS
  • Настройка и кастомизация компонентов и модулей для указанных CMS
  • Доработка модулей и компонентов для указанных CMS, добавление нестандартного функционала
  • Разработка лендингов (landing-pages)

По все вопросам обращайтесь через форму обратной связи

Скачать

Предлагаю вашему вниманию: