Данное руководство ни на что не претендует, просто напишу
как сам делаю.
До того как написать вот это я просмотрел несколько подобных
руководств и понял что не все они для меня достаточно понятны. Некоторые были
слишком просты и ограничивались выводом надписи "Hello World", другие наоборот , а в
связи с тем что у меня знаний в области программирования просто никакие
пришлось все это долго анализировать просматривать различные готовые модули и пытаться
понять как оно работает.
Ну вот и решил написать этот документ который адресуется
людям далеким от программирования, но желающим сделать что-то свое.
Сразу скажу что «Hello World» мы делать не будем. А зачем? Практической пользы это не
приносит. Мы будем делать что-нибудь полезное и на примере моего «полезного»,
Вы сделаете свое «полезное».
Погнали.
Вот посидел и придумал, надо сделать ICQ информер. После размещения
на сайте он будет показывать есть вы в аське или нет.
Модуль у нас состоит минимум из двух файлов.
mod_myicq.php и mod_myicq.xml
Так я их назвал что бы потом когда установлю этот модуль на
сайт можно было отличить его от других установленных модулей. Поэтому имеет
смысл давать осмысленные имена (во как закрутил).
Создание установочного файла модуля
Создаем текстовый документ переименовываем его в mod_myicq.xmlи вставляем в него код:
<?xml
version="1.0" encoding="windows-1251"?>
<mosinstall
type="module" version="1.0.0">
<name>ICQ_online
?</name>
<author>LightDeath</author>
<creationDate>jule
2008</creationDate>
<copyright>(C) 2008 Open
Source Matters. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html
GNU/GPL</license>
<authorEmail>
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
</authorEmail>
<authorUrl>http://cms-joomla.info</authorUrl>
<version>1.0.0</version>
<description>Информер статуса ICQ</description>
<files>
<filename
module=" mod_myicq "> mod_myicq.php</filename>
</files>
<params>
<param
name="moduleclass_sfx"type="text" default=""
label="Суффикс класса модуля" description="Тут можно прописать свой суффикс класса модуля." />
</params>
</mosinstall>
Этот файл можно даже назвать установочным.
Разберем что есть что:
Первая строчка очень важная и должна быть обязательно.
xml version="1.0"
эта часть информирует браузер о том, что
файл имеет формат XML
encoding="windows-1251 это сообщает браузеру
в какой кодировке надо показывать ваш модуль, при необходимости можно исправить
на ту кодировку которая является основной для вашего сайта. (помогает когда все
выводится крякозябрами).
Самое главное перед этой строчкой не должно быть пробелов и
она должна быть самой первой.
<mosinstall type="module" version="1.0.0"> Этот тег говорит Joomla что это
вообще такое каким образом и в какую папку установить. А определяет он просто
по типу "module".
Ну, а version="1.0.0"
это для того чтобы определить на какую версию Joomla этот модуль.
<name>ICQ_online ?</name> Это имя вашего модуля. Оно будет отображаться
в списке установленных модулей.
<author>LightDeath</author> Тут мы тешим самолюбие и вписываем свое
имя. Ну должны ведь потомки знать кто это наКОДил тут (или нашкодил :)).
<creationDate>jule 2008</creationDate> Здесь указано когда мы это сделали
<copyright>(C)
2008 Open Source Matters. All rights reserved.</copyright> Здесь наши копирайты. Если вы собираетесь
бесплатно раздавать этот модуль, то пусть так и останется. А если вы намерены
его продавать , тогда правьте как вам угодно.
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license> Эта ссылка на лицензию. Если вы поменяли
копирайт то пишите ссылку на свою лицензию.
<authorEmail>
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
</authorEmail> Ну тут понятно ваша электропочта.Ну надо ведь потом осуществлять поддержку своего творения.
<authorUrl>http://cms-joomla.info</authorUrl> Ссылка на ваш сайт.
<version>1.0.0</version> А это версия Вашего модуля. Вдруг Вы начнете
наращивать функционал и исправлять ошибки.
<description>Информер
статуса ICQ</description> Ну, а
тут описание того что это вообще за чудо
такое. Что бы пользователь не забыл что это за модуль такой и для чего он
нужен.
Между тегами <files></files>
мы перечисляем все файлы которые будут входить в ваш модуль, а так как файл *.php в
модуле должен быть обязательно, то один файл будет всегда. Выглядеть эта строчка должна именно так, ну
только соответственно имя модуля надо будет менять в соответствии с именем
модуля. Мы здесь задали атрибут «module» файлу mod_nmyicq.php и он принял значение имени модуля
без расширения. Короче мы сообщили Joomla каким файлом запускать ваш
модуль. Потом попозже мы попробуем
добавить другие файлы в ваш модуль (например картинки), а пока этого нам
достаточно.
<params> <param name="moduleclass_sfx" type="text" default="" label="Суффикс класса модуля" description="Тут можно прописать
свой суффикс класса модуля." /> </params>
Вот мы дошли до интересных тегов <params></params>.
Между
этих тегов мы будем добавлять параметры которые будут использоваться
для
настройки вашего модуля. Вернемся к ним попозже когда будем их
добавлять. А
сейчас посмотрите тот параметр который у нас указан. Он в принципе не
обязателен, но ставить его как мне кажется признак хорошего тона. Вдруг
человек
который воспользуется вашим модулем захочет применить свой стиль CSS к
вашему модулю ну и пожалуйста, мы все для него подготовили.
Ну и вроде все закрываем тег </mosinstall> который
сообщает что файлик кончился.
Сохраняем то что у нас получилось.
Создание основного файла модуля
Переходим к следующему файлу.
По аналогии с предыдущим создаем текстовый документ и переименовываем
его в mod_myicq.php.
Эта часть является блоком комментариев соответственно:
номер версии
наименование
копирайт
ссылка на лицензию
Далее идет очень важная строчка:
defined(
'_VALID_MOS' ) or die( 'Restricted access' );
Эта строчка является основой безопасности вашего модуля она
должна быть обязательно.
С помощью этой строки мы запрещаем доступ к модулю напрямую
пользователем и разрешаем доступ к файлу только движку Joomla.
Сильно про это не думайте, а просто запомните что эта строка
должна быть.
Вот и все сохраните этот файлик на всякий случай. Потому что
все обязательные условия мы выполнили для создания нового модуля. И эта часть
меняться уже не будет.
Теперь займемся написанием именно того кода который и будет
отображать наш модуль.
Нам понадобится код который будет осуществлять запрос
статуса вашей ICQ и отображать соответствующую картинку на вашем сайте.
Ну тут все просто, мы
получаем картинку с сервера ICQ соответствующую статусу on/off,
принадлежащую номеру 55522230. Цифра 21
говорит о том какой стиль картинки будет использоватся (Icq нам
предоставляет разные стили от 1-27 для того чтобы можно было подобрать под
дизайн сайта). Примеры картинок
Что мы делаем с этим кодом? Да просто именно в таком виде
как есть вставляем его в наш mod_myicq.php. Должно получится вот так:
Вот и все сохраняем опять файлик. А теперь надо посмотреть как работает
наш модуль. Что бы это сделать надо его установить. Для этого два наших файла
запаковываем в архив mod_myicq.zip. Идем в админку Joomla и устанавливаем обычным
способом наш модуль. Теперь заходим в список модулей и находим наш модуль,
опубликовываем его и идем смотреть что там у нас получилось.
Вот вроде модуль уже и готов. А что можно еще сделать?
А можно его например унифицировать вот если у вас
сменится номер вам придется открывать
код и менять номер на новый или кто-то
скачал ваш модуль, а у него соответственно номер и ему придется тоже копаться в
чужом коде J
хоть он пока и маленький. Но человек может быть не таким подготовленным как Вы.
Вот для этого мы сейчас и добавим параметров настройки
нашего модуля, чтобы человек который воспользовался вашим творением мог
настроить его под себя через админ-панель сайта не ковыряя исходный код.
Ну как минимум сам UIN (это так не по русски называют номер ICQ), идентификационный номер
отображаемой картинки.
Вот этим и займемся.
Для этого открываем файл mod_myicq.xml и
начинаем добавлять наши параметры которые я обещал в начале статьи.
Добавляем между тегов <params> </params> вот такую строчку
<param name="myuin" type="text" default="" label="Номер ICQ " description="Введите ваш номер ICQ без
пробелов и дефиса. "
/>
Посмотрим что мы сделали:
Мы добавили поле для ввода текста type="text"
Добавили имя для этого поля
label="Номер
ICQ"
И добавили всплывающую подсказку description="Введите ваш номер ICQ без
пробелов и дефиса. "
И имя параметра нашего поля для ввода текста name="myuin"
Теперь по аналогии добавляем второе поле для ввода ID картинки:
<param name="idimg" type="text" default="5" label="id стиля
картинки" description="Введите
число от 1 до 27." />
Тут все точно также только одно отличие , мы добавили
значение параметру "default"
значение "21",
сделали мы это для того чтобы поле было
изначально заполнено значением.
Ну вот таким образом теперь должен выглядеть ваш mod_myicq.xml
<?xml
version="1.0" encoding="windows-1251"?>
<mosinstall
type="module" version="1.0.0">
<name>ICQ_online
?</name>
<author>LightDeath</author>
<creationDate>jule
2008</creationDate>
<copyright>(C) 2008 Open
Source Matters. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html
GNU/GPL</license>
<authorEmail>
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
</authorEmail>
<authorUrl>http://cms-joomla.info</authorUrl>
<version>1.0.0</version>
<description>Информер статуса ICQ</description>
<files>
<filename
module="mod_myicq">mod_myicq.php</filename>
</files>
<params>
<param
name="moduleclass_sfx" type="text" default=""
label="Суффикс класса модуля" description="Тутможно прописать свой суффикс класса модуля." />
<param name="myuin" type="text" default="" label="Номер ICQ " description="Введите ваш номер ICQ без
пробелов и дефиса." />
<param name="idimg" type="text" default="21" label="id стиля
картинки" description="Введите
число от 1 до 27." />
</params>
</mosinstall>
Сохраняем этот файл. Вот для чего это делалось.
Открываем mod_myicq.php
Теперь мы должны добавить в наш код переменные которые будут
принимать значение соответствующие тем данным которые мы будем вводить при
настройке нашего модуля.
Это мы создаем переменные и даем понять нашему коду откуда
он должен взять данные и какой переменной присвоить соответствующие значения.
Обратите внимание они у нас совпадают с
именами полей ввода которые мы сделали в mod_myicq.xml.
Теперь осталось вставить наши переменные в код который
отвечает за вывод картинки.
Делаем мы это очень простым способом используя функцию PHP echo вот
что должно получится:
Обратите внимание я все это поместил еще и в блок DIV для
того чтобы просто отцентрировать нашу картинку по середине нашего модуля.
Предлагаю добавить к нашей картинке снизу еще и сам номер ICQ, чтобы человек мог
увидеть на какой номер написать. А еще сделаем этот номер ссылкой на ваш
профиль ICQ. Делается
это вот таким кодом:
Ну вот вроде и все можно упаковывать в *.zip и
устанавливать, если вы устанавливали предыдущий вариант то его надо
предварительно удалить.
Ну а после установки и настройки параметров. Можно будет
посмотреть на результат:
Незнаю насколько понятно я обьяснил, но сложностей именно с эти вроде не должно возникнуть.
Точно таким же образом можно делать какие угодно модули, смело использую PHP, JAVA и HTML.
Ну я думаю что это не конец, что нибудь придумаю еще и на примере этого модуля буду учится сам и может помогу еще кому нибудь.
Люди которые понимают в програмировании побольше (учитывая что я ничего
почти не понимаю и делаю интуитивно), прошу писать замечания и советы
может они помогут мне и всем остальным.