В настоящее время прием заказов временно приостановлен. Приносим извинения за возможные неудобства.
Разработка и создание сайтов в Ростове-на-Дону

Разработка сайтов

Главное направление деятельности студии ArtWebMaster, это разработка и создание сайтов в Ростове-на-Дону.

Далее...
Создание компонентов Joomla и модулей

Компоненты и модули

Мы также занимаемся созданием компонентов, модулей и плагинов для CMS Joomla.

Далее...
Перенос сайтов на CMS Joomla

Перенос сайтов на Joomla

Ваш сайт статичный? Мы можем перенести его на CMS Joomla и Вы получите быстрый динамичный сайт.

Далее...
Поддержка и сопровождение сайтов

Сопровождение сайтов

Не хватает времени заниматься сайтом? Мы берем на себя работу по поддержке и сопровождению сайтов.

Далее...

Изготовление модуля для CMS Joomla

В этой статье я расскажу, как изготовить свой собственный модуль для CMS Joomla ver.1.0.x.

Данная статья предназначена для людей, которые хотя бы отчасти знакомы с языком программирования PHP, html и xml разметкой.

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

Я уже рассказывал об основных отличиях компонентов и модулей, а определение понятия «модуль» Вы можете посмотреть в глоссарии Joomla на нашем сайте ArtWebMaster.ru. Теперь давайте рассмотрим, из чего состоит и как строится классический модуль CMS Joomla. Хочу подчеркнуть - именно классический! Модуль Joomla, это обычная программа которая может содержать все доступные скриптовому языку PHP средства и методы, вплоть до манипулирования системными переменными сервера и обращения к другим интернет-ресурсам. Однако все это выходит далеко за рамки функционального предназначения модулей CMS Joomla, а значит, рассматривать мы это не будем.

Из чего состоит модуль CMS Joomla.

В минимальном составе, это два файла - mod_названиемодуля.xml и mod_названиемодуля.php, которые по умолчанию располагаются в папке «modules» на сервере.

Файл mod_названиемодуля.xml, это многофункциональный файл, который содержит:

  • общие сведения о модуле - название, описание, авторство, версию и т.п.;
  • сведения для инсталляции/деинсталляции модуля - список файлов и пути их размещения;
  • список параметров для конфигурирования модуля.

Файл mod_названиемодуля.php содержит программный код модуля.
Что такое программный код и как пишутся программы (на PHP в том числе), я рассказывать не буду, сами понимаете почему.

Хочу заметить, что создатели CMS Joomla разработали целые библиотеки классов, которые облегчают изготовление, как модулей, так и любых других расширений для Joomla. Эти библиотеки называются Joomla API. К сожалению, я не встречал полную документацию по API Joomla. Существуют лишь разрозненные или плохо сгруппированные описания. Могу посоветовать посмотреть здесь http://www.php.joomlademo.de или здесь http://help.joomla.org/api/, либо воспользоваться поиском Google.
Если Вы обладаете иной информацией, прошу высказаться в комментариях к статье.

При выполнении кода модуля, все, что выводится с помощью оператора echo или аналогичных ему, будет выведено на страницу сайта в теле модуля.

Чтобы модуль стал доступен, он должен быть инсталлирован в CMS Joomla.
Инсталляционный файл модуля представляет собой обычный архив в который помещены все файлы модуля. Наиболее распространен архиватор zip, да и сама Joomla очень хорошо работает с такими архивами, поэтому на нем и остановимся.

Итак, чтобы изготовить и установить свой модуль на CMS Joomla, необходимо:

  1. Изготовить как минимум один программный файл модуля.
  2. Создать xml файл и прописать в нем все необходимые данные.
  3. Поместить оба файла в архив zip.
  4. Инсталлировать полученный модуль в Joomla.

Все!

Как видите, ничего сложного процесс изготовление модуля под CMS Joomla не представляет! Однако остается вопрос, что же должны содержать в себе файлы модуля? Давайте разберемся с этим более подробно.

Структура и содержимое файлов модуля Joomla.

В данной статье для примера взят модуль mod_awmnews. Вы можте его найти на нашем сайте в разделе «Модули Joomla». Скачайте его и инсталлируйте на свой локальный тестовый сайт. Затем зайдите на диск локального сервера и перейдите в папку сайта modules. Там Вы найдете два файла - mod_awmnews.xml и mod_awmnews.php. Откройте их с помощью любого текстового редактора, лучше с подсветкой PHP синтаксиса. Я посоветую Zend Development Environment, или что-нибудь попроще, например, EditPlus.

Итак, начнем с XML файла.

XML файл модуля AWM_news - mod_awmnews.xml.

<?xml version="1.0" encoding="windows-1251" ?> - заголовок документа xml версии 1.0, с набором символов "windows-1251" - русская таблица windows.

<mosinstall type="module" version="1.0.0"> - говорит о том, что данный xml файл является документом для инсталляции модуля CMS Joomla, а версия механизма инсталляции - 1.0.0.
Тег mosinstall является открывающим. Между тегами <mosinstall ...> </mosinstall> помещается вся информация о модуле.
Далее, до тега <files> идут информационные поля, которые будут отображены в таблице «Установленные модули» на странице «Установка/удаление модулей».

<name>AWM_news</name> - наименование модуля. Используется еще как заголовок модуля в перечне модулей сайта.

<author>Soloviev Ivan</author> - поле автора модуля.

<creationDate>06.11.2007</creationDate> - дата создания модуля.

<copyright>ArtWebMaster Soloviev Ivan. All rights reserved.</copyright> - сведения о копирайтинге.

<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license> - сведения о том, с какой лицензией выпущен модуль.

<authorEmail>artwebmaster @ hotbox.ru</authorEmail> - Email автора модуля.

<authorUrl>http://artwebmaster.ru</authorUrl> - сайт автора.

<version>1.0.0 RE</version> - версия модуля.

<description>Это модуль вывода какого либо текста. Может быть использован для отображения новости, предложения, акции, картинки и т.п.</description> - краткое описание модуля. Выводится в ходе инсталляции и на странице изменения параметров модуля в поле «Описание:».

<files> - открывает список файлов относящихся к этому модулю.

<filename module="mod_ awmnews"> mod_awmnews.php</filename> - эта конструкция говорит о том, что файл mod_awmnews.php входит в состав модуля mod_awmnews и Joomla должна его разместить (инсталлировать) в папке «modules». Эта информация используется также и для деинсталляции файлов модуля.

Если с модулем будут идти дополнительные файлы - JavaScript, CSS таблицы и т.п., их лучше размещать в отдельной папке с именем вашего модуля. Для этого при создании инсталляционного архива создайте папку, к примеру, mymodule, поместите туда дополнительный файл, пусть это будет myjcsript.js и запакуйте эту папку вместе с основными файлами mod_mymodule.xml и mod_mymodule.php.
В xml файле эти файлы прописываются так:

<filename module="mod_mymodule">mod_mymodule.php</filename>
<filename module="mod_mymodule">mymodule/myjcsript.js</filename>

После инсталляции, полный путь к файлу myjcsript.js будет таким:

http://вашсайт.ru/modules/mymodule/myjcsript.js
Обратите внимание! Сам файл mod_mymodule.xml здесь прописывать не надо! Joomla самостоятельно поместит его в папку «modules» на Вашем сайте и сама удалит, при деинсталляции.

</files> - закрывает список файлов.

<params> - отрывает перечень настраиваемых параметров модуля. О том, какие значения они могут принимать и как их правильно прописать читайте в отдельной статье «Параметры XML файла модуля Joomla».

<param name="moduleclass_sfx" type="text" default="" label="CSS-cуффикс класса модуля" description="Суффикс, который будет использован в описании класса (table.moduletable) таблицы стилей (CSS) модуля. Это позволяет использовать индивидуальный стиль модуля." /> - здесь указывается, что нужно вывести для редактирования системный параметр определяющий суффикс CSS класса модуля.

<param name="sometext" type="textarea" cols="80" rows="5" default="" label="Текст" description="Обычный текст или текст в формате HTML, который будет выводиться в блоке модуля." /> - данный параметр служит для вывода в административной части модуля многострочного текстового поля. Запомните имя этого параметра - «sometext». Это имя будет использоваться в дальнейшем.

</params> - закрывает перечень параметров модуля.

</mosinstall> - закрывает инфомационные данные модуля.

Итак, с XML файлом разобрались, теперь перейдем к программному файлу модуля.

Программный файл модуля AWM_ news - mod_awmnews.php.

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

Итак, полное содержимое файла mod_awmnews.php:

<?php
/**
* @ version mod_awmnews. php v1.0
* @ copyright Авторские права (C) 2007 Soloviev Ivan ArtWebMaster.
* @ license Лицензия http://www.gnu.org/copyleft/gpl.html GNU/GPL, смотрите LICENSE.php
*/
// запрет прямого доступа


defined( '_VALID_MOS' ) or die( 'Доступ запрещен' );
$awm_sometext = $params->get( 'sometext' );
echo $awm_sometext;
?>

Не очень много, не правда ли? :-)

Давайте разберем его по порядку.

Комментарии пропускаем и идем дальше.

defined( '_VALID_MOS' ) or die( 'Доступ запрещен' ); - выполняется проверка того, что данный файл был подключен ядром CMS Joomla, а не запущен напрямую из адресной строки браузера или иным способом. Наличие такой строки, это одно из основных требований безопасности CMS Joomla.

Такая строка ОБЯЗАТЕЛЬНО должна быть в каждом PHP файле CMS Joomla и стоять самой первой!
Гуру PHP могут возразить, что не в каждом файле она нужна. Да, так и есть, но не будем на этом заморачиваться - оно того не стоит. Просто нужно взять себе за правило - начинаете с нуля писать какой-либо PHP скрипт под Joomla, первой строкой впишите
defined( '_VALID_MOS' ) or die( 'Доступ запрещен' );
и спите спокойно. Теперь ни один кулхацкер не сможет выудить из этого файла абсолютно никакой информации. Файл железно блокирован от доступа извне.

$awm_sometext = $params->get( 'sometext' ); - получаем в переменную $awm_sometext, значение текстового поля с именем «sometext», которое определено ранее в XML файле.

echo $awm_sometext; - эта строка просто выводит наш текст на страницу в тело модуля.

Вот, собственно, и все!

Вот где кроется профессионализм разработчиков CMS Joomla - в простоте написания дополнительных модулей и компонентов!

Как Вы сами видите, чтобы получить значение какого либо параметра модуля, достаточно обратиться к классу $params и методом get(‘имяпараметра') получить нужные данные. Никаких нагромождений программного кода и громоздких MySQL запросов. Все просто и элегантно!

Таким образом можно изготовить любые по сложности модули. Например, данный модуль можно несколько оживить и заставить содержимое текстового поля скроллировать. Как это сделать? Очень просто. Находим строку echo $awm_sometext; и вместо нее пропишем:

echo "<marquee behavior='scroll' direction='up' height='150' width='100%' scrollamount='1' scrolldelay='50' truespeed='true'>".$awm_sometext."</marquee>";

Теперь все, что бы мы не ввели в текстовое поле модуля, будет скроллировать вверх.

Дальше можно ввести в модуль дополнительный параметр, с помощью которого можно будет из административной панели изменять направление движения скроллинга. Для этого добавим в наш XML файл между тегами <params></params> такие строки:

<param name="scroll_direct" type="list" default="up" label="Направление смещения" description="Определяет направление скроллинга текста внутри модуля" />
<option value="up">Вверх</option>
<option value="down">Вниз </option>
<option value="right">Вправо</option>
<option value="left">Влево</option>
</param>
Здесь я хочу несколько отступить от основной темы и рассказать об одной интересной особенности CMS Joomla, которая дает определенную выгоду разработчикам и изготовителям модулей. А дело вот в чем.
Joomla при выводе административной части модуля, сначала подгружает XML файл, затем считывает значения параметров модуля из базы данных, а уже после этого строит страницу с настройками, в соответствии с содержимым именно XML файла. Если какого-то параметра в базе данных нет, для него подставляется значение «default» из XML файла.
Таким образом, разработчик может спокойно править XML файл, добавляя или убирая любые параметры модуля и все изменения тут же становятся доступны. Нет никакой необходимости постоянно деинсталлировать, а затем опять инсталлировать модуль. Все изменения можно делать прямо «на лету», не забывая при этом обновлять страницу с настройками и нажимать кнопку «Сохранить» или «Применить».

Теперь немного модернизируем файл mod_awmnews.php. После строки:

$awm_sometext = $params->get( 'sometext' );

допишем:

$awm_scrolldirect = $params->get( 'scroll_direct' );

и немного изменим строку:

echo "<marquee behavior='scroll' direction='up' height='150' width='100%' scrollamount='1' scrolldelay='50' truespeed='true'>".$awm_sometext."</marquee>";

вот так:

echo "<marquee behavior='scroll' direction='". $awm_scrolldirect ."' height='150' width='100%' scrollamount='1' scrolldelay='50' truespeed='true'>".$awm_sometext." </marquee>";

Как видите все достаточно просто.

Осталось лишь пожелать Вам успехов в деле изготовления модулей для CSM Joomla.

===============================
© 2008 Соловьев И. В. (ArtWebMaster)
Дата создания и публикации статьи на сайте Joomla4All.ru : 04.05.2008 г.

Форма быстрой связи

С помощью этой формы Вы можете быстро сделать заказ сайта или задать нам вопрос.









Ответьте пожалуйста

Как Вы нашли наш сайт?