Пример написания модуля к InstantCMS

10 апреля 2012 - Dream

 Модуль в InstantCMS — это самостоятельная отображаемая единица, выполняющая одну или несколько совершенно определенных функций. В отличие от других CMS, InstantCMS не обладает функцией подключения внешних модулей. Этот недостаток (с точки зрения пользователя-«чайника») на самом деле является достоинством. Кроме простоты и лаконичности, InstantCMS приобретает свойства конструктора «лего», позволяющее Вам не только создавать и подключать свои модули, но и оптимизировать структуру дистрибутива под себя, выбрасывая из него ненужные Вам модули. В этом случае быстродействие и скорость загрузки на сервер существенно возрастают. Кроме того, если Вы создаете сайт под заказ, у заказчика, после передачи ему прав администратора, не возникнет дурацких вопросов типа «зачем нужны эти модули, если они не работают?».

Ниже приведена методика создания и подключения модуля своими силами на примере создания модуля «Здравствуй, мир».

Постановка задачи

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

  • Придумать имя модуля. В нашем случае пусть будет »Здравствуй мир»
  • Придумать имя папки, содержащей модуль. В нашем случае mod_helloworld. Отнеситесь к этому пункту серьезно, потому что это имя будет встречаться во многих местах и функциях модуля. Кроме того, если вам придется переименовывать модуль, то менять придется в слишком многих местах. Лучше все продумать сразу и здесь.
  • Продумать функционал модуля. В нашем случае модуль должен выводить приветствие «Здравствуй, мир».
  • Уяснить, в какой позиции шаблона будет отображаться модуль – «left», «right», «top» или иных, если Ваш шаблон поддерживает другие возможности.

Пишем модуль

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

Перейдите в папку modules в корне сайта и создайте в ней папку mod_helloworld. В папке mod_helloworld создайте файл module.php. Кроме того, создайте там же пустой файл index.html (из соображений элементарной безопасности).

Откройте файл module.php любым текстовым редактором (например, Блокнотом), и поместите внутрь код модуля. Здесь все зависит от Вашего мастерства в php. Имя объявляемой функции должно совпасть с именем папки, содержащей модуль: 

<?php
function mod_helloworld($module_id){	
 
echo'Здравствуй, мир!';
 
 
//Разрешаем показать модуль. 
//    ВАЖНО!!!
//Если Вы забудете вернуть true, то модуль, даже будучи включенным в админке, показываться не будет!!!
	return true;	
}
?>

Модифицируем БД

Наша задача – не только обеспечить функционирование модуля, но и обеспечить появление модуля в админке. Кроме того, здесь можно заполнить БД демоданными, которые позволят проверить функционирование модуля. 
Для этого пишем текст sql-запросов.

Текст SQL-запроса для модуля "Здравствуй мир"

Создайте (например, тем же Блокнотом) текстовый файл с расширением *.txt и пишите туда текст своего sql-запроса: 

 
 
INSERT INTO `cms_modules` ( `id` , `position` , `name` , `title` , `is_external` , `content` ,
                            `ordering` , `showtitle` , `published` , `user` , `config` , `original` , 
                            `css_prefix` , `allow_group` , `cache` , `cachetime` , `cacheint` )
VALUES ('', 'right', 'Мой модуль', 'Здравствуй мир', '1', 'mod_helloworld', '1', '1', '1', '0', '', 
        '1', '', '-1', '', '1', 'HOUR');
 

Этот запрос обеспечивает появление в админке, в перечне модулей, нашего нового модуля Здравствуй мир Здесь необходимо пояснить следующее. Если вы создаете модуль с другим именем, следует отредактировать этот sql-запрос таким образом, чтобы в поле name попало имя модуля, в поле title его название, под которым он будет выводится браузером, а в полеcontent нужно поместить имя папки модуля.

Выполнение SQL-запроса через phpMyAdmin
  • Соединитесь через phpMyAdmin с БД своего сайта.
  • Нажмите закладку SQL и через буфер обмена скопируйте туда текст sql-запроса. Повторяю для блондинок: не название файла, где лежит составленный Вами sql-запрос, а именно текст sql-запроса! :!:
  • Нажмите кнопку «Пошел» (или «Да») и убедитесь, что запрос прошел успешно.

Подключаем модуль к пункту меню

Зайдите в админку и убедитесь, что наш новоиспеченный модуль отмечен зеленой галкой. Если стоит красный минус, щелкните по карандашику(«Редактировать модуль») и в настройках модуля пункт «Публиковать модуль?» поставьте Да. Обязательно укажите, для каких групп пользователей показывать модуль к каким пунктам меню его привязать. (Более подробно об этом читайте здесь)Затем перейдите на сайт и убедитесь, что модуль появился и показывает наше приветствие «Здравствуй, мир!». Прежде чем наслаждаться успехом, оформите свою работу в виде документации.

Создание документации

Поверьте, потеряв пять минут на создание документации, Вы в дальнейшем избавите себя от пяти часов разбора своей писанины, которую успели забыть. Если Вы сделали модуль на заказ, у Вас появится моральное право на все дурацкие вопросы заказчика отвечать коротко: «RTFM» LOL
Создайте любой текстовый файл (например read_me.txt и кратко опишите модуль:

  • Автор (Вы, наверно)
  • дата создания
  • функции модуля - что он умеет
  • даты последующих редакций и краткий лог модификаций функциональности
  • для какой системы и версии системы создавался.
  • переносимость, то есть для каких версий системы может применяться
  • настройки (если есть)
  • краткую инструкцию, как ставить


Сложите все файлы (папку с именем модуля и файлом module.php, текстовый файл с sql-запросами и файл read_me.txt в один архив. Наслаждайтесь  !

Еще примеры для sql-запросов

Взаимодействие с базой данных(БД) представляет неотъемлемую часть функционала сайта. Общение компонентов и модуля с БД осуществляется с помощью sql-запросов. Документация по MySQL весьма обширна. Чтобы помочь новичку быстрее адаптироваться в сайтостроении, привожу здесь еще несколько примеров sql-запросов. 
Данный запрос создает в БД таблицу с именем cms_guestbook :

CREATE TABLE `cms_guestbook` (
`id` INT NOT NULL AUTO_INCREMENT ,
`pubdate` DATETIME NOT NULL ,
`user_id` INT NOT NULL ,
`content` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

А этот запрос заполняет нашу таблицу cms_guestbook демоданными:

INSERT INTO 
 `cms_guestbook` (`pubdate`, `user_id`, `content`) 
VALUES 
 (NOW(), 1, 'Первое сообщение гостевой книги'),
 (NOW(), 1, 'Второе сообщение гостевой книги'),
 (NOW(), 1, 'Третье сообщение гостевой книги');

Выполнение sql-запросов

  • Соединитесь через phpMyAdmin с БД своего сайта.
  • Убедитесь, что таблицы с именем cms_guestbook в БД нет. Если она там есть, значит, Вас кто-то опередил. В этом случае убедитесь, что таблица пуста или не содержит важных записей и удалите ее. Если Вы этого не сделаете, при выполнении SQL-запроса возникнет ошибка.
  • Выполните все sql-запросы (в примере их три) к БД и убедитесь в успехе.
     

Похожие статьи:

Новости разработчиковАнонс модуля "Поощрение пользователей"

Новости разработчиковЗаменяем название компонента, url и т.д. на примере FAQ

Новости разработчиковКомпонент Сервис Ёлок ver.1.1

Новости разработчиковМодуль аккардион статей

Новости разработчиковЗагрузка расширений через админку

Рейтинг: 0 Голосов: 0 6990 просмотров
Комментарии (0)

Нет комментариев. Ваш будет первым!