К оглавлению
Разработка других дополнений: Фильтры
Разработка других дополнений: Плагины
Разработка других дополнений: Компоненты
Разработка других дополнений: Шаблоны
Модуль в InstantCMS — это самостоятельная отображаемая единица, выполняющая одну или несколько совершенно определенных функций. В отличие от других CMS, InstantCMS не обладает функцией подключения внешних модулей. Этот недостаток (с точки зрения пользователя-«чайника») на самом деле является достоинством. Кроме простоты и лаконичности, InstantCMS приобретает свойства конструктора «лего», позволяющее Вам не только создавать и подключать свои модули, но и оптимизировать структуру дистрибутива под себя, выбрасывая из него ненужные Вам модули. В этом случае быстродействие и скорость загрузки на сервер существенно возрастают. Кроме того, если Вы создаете сайт под заказ, у заказчика, после передачи ему прав администратора, не возникнет дурацких вопросов типа «зачем нужны эти модули, если они не работают?».
Ниже приведена методика создания и подключения модуля своими силами на примере создания модуля «Здравствуй, мир».
Перед созданием нового модуля убедитесь, что никто не сделал ничего подобного до Вас. Это можно сделать, посмотрев страницу вики, или заглянув на блоги наших постоянных пользователей. Помните, всегда проще отредактировать готовый и рабочий модуль, чем создавать свой собственный с нуля.
Перед тем, как начать, Вам следует изучить структуру БД, чтобы не создавать дублирующие записи или таблицы.
Перед созданием модуля необходимо:
Каждый системный модуль InstantCMS находится в отдельном файле внутри собственной папки.
Перейдите в папку modules в корне сайта и создайте в ней папку mod_helloworld. В папке mod_helloworld создайте файл module.php. Кроме того, создайте там же пустой файл index.html (из соображений элементарной безопасности).
Откройте файл module.php любым текстовым редактором (например, Блокнотом), и поместите внутрь код модуля. Здесь все зависит от Вашего мастерства в php. Имя объявляемой функции должно совпасть с именем папки, содержащей модуль:
<?php function mod_helloworld($module_id){ echo'Здравствуй, мир!'; //Разрешаем показать модуль. // ВАЖНО!!! //Если Вы забудете вернуть true, то модуль, даже будучи включенным в админке, показываться не будет!!! return true; } ?>
Наша задача – не только обеспечить функционирование модуля, но и обеспечить появление модуля в админке. Кроме того, здесь можно заполнить БД демоданными, которые позволят проверить функционирование модуля.
Для этого пишем текст 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 нужно поместить имя папки модуля.
Зайдите в админку и убедитесь, что наш новоиспеченный модуль отмечен зеленой галкой. Если стоит красный минус, щелкните по карандашику(«Редактировать модуль») и в настройках модуля пункт «Публиковать модуль?» поставьте Да. Обязательно укажите, для каких групп пользователей показывать модуль к каким пунктам меню его привязать. (Более подробно об этом читайте здесь)Затем перейдите на сайт и убедитесь, что модуль появился и показывает наше приветствие «Здравствуй, мир!». Прежде чем наслаждаться успехом, оформите свою работу в виде документации.
Поверьте, потеряв пять минут на создание документации, Вы в дальнейшем избавите себя от пяти часов разбора своей писанины, которую успели забыть. Если Вы сделали модуль на заказ, у Вас появится моральное право на все дурацкие вопросы заказчика отвечать коротко: «RTFM»
.
Создайте любой текстовый файл (например read_me.txt и кратко опишите модуль:
Сложите все файлы (папку с именем модуля и файлом module.php, текстовый файл с sql-запросами и файл read_me.txt в один архив. Наслаждайтесь
!
Взаимодействие с базой данных(БД) представляет неотлемлемую часть функционала сайта. Общение компонентов и модуля с БД осуществляется с помощью 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-запросов
Записала feba7