Здравствуйте.
Этим постом мы начнем серию публикаций о том, как делаются собственные модули и
компоненты для InstantCMS. От читателя требуется базовое знание PHP и MySQL.
"Последние записи" для него. В конечном итоге мы хотим получить:
— Таблицы в БД для хранения записей гостевой книги
— Возможность вывода случайных записей через модуль
— Возможность для зарегистрированных пользователей добавлять и просматривать записи гостевой книги через компонент
Компонент будет расчитан только на зарегистрированных пользователей,
чтобы показать как создавать ограничения.
Внимание: Во всех примерах кода нужно заменить косые кавычки на апострофы.
Или проще скачать весь пример одним архивом (ссылка в конце поста).
Для каждой записи нам потребуется 4 поля — ID, дата, автор и текст сообщения.
SQL-запрос создаст нужную нам таблицу:
Таблицу называем "cms_guestbook", по аналогии с другими таблицами в БД InstantCMS.
Поле id создаем с флагом AUTO_INCREMENT, чтобы при вставке записей их порядковые
номера вычислялись автоматически базой данных.
Обратите внимание, что поле user_id мы делаем с типом INT, т.е.
хранить авторов сообщений мы будем в виде чисел. Каждое такое число будет указывать
на номер пользователя в системной таблице cms_users.
Теперь давайте заполним таблицу несколькими записями. Будем считать, что все эти
записи оставил администратор (т.е. пользователь с номером 1):
Поле id при вставке не передаем, оно будет присвоено автоматически
(1, 2 и 3 соответственно). В качестве даты подставляем функцию NOW(),
которая будет заменена на текущую дату сервера.
Теперь сообщения хранятся в базе и мы можем написать модуль, который
будет показывать случайное сообщение из гостевой книги.
иметь краткое название mod_guestbook.
Каждый системный модуль InstantCMS находится в отдельном файле внутри собственной папки.
Перейдите в папку modules в корне сайта и создайте в ней папку mod_guestbook.
В папке mod_guestbook создайте файл module.php.
В файл module.php помещаем код модуля:
Модули InstantCMS оформляются в виде функций, название которых совпадает
с названием модуля (mod_guestbook в нашем случае).
Внутри функции происходит вся работа модуля. Сначала мы составляем запрос
к двум таблицам: cms_guestbook и cms_users. Из первой мы хотим получить текст и дату
сообщения, а из второй — никнейм автора. Для связи этих таблиц нам и нужно поле user_id
в таблице с записями гостевой.
В запрос добавлена строка ORDER BY RAND() для того, чтобы получить случайную запись из таблицы cms_guestbook.
Если запрос к базе происходит успешно, модуль выводит сообщение на экран.
InstantCMS получает сведения о модулях из таблицы cms_modules, в которую нам и нужно вставить строчку.
Выполните SQL-запрос:
Для своих модулей в будущем вы можете использовать точно такой же запрос,
просто заменив в нем названия "Случайное в гостевой" и "mod_guestbook" на собственные.
Учтите, что если вы захотите установить этот модуль на другую систему вам
потребуется выполнить все приведенные SQL-запросы и там.
Одного копирования файлов будет недостаточно.
После совершения всех описанных действий вы можете перейти в панель управления
сайтом, в раздел "модули" и включить наш новый модуль, привязав его к меню.
В следующих статьях мы усложним созданный нами сегодня модуль, добавив к нему
возможность настройки через админку и вывод на экран через шаблонизатор Smarty.
Скачать архив с примером
Этим постом мы начнем серию публикаций о том, как делаются собственные модули и
компоненты для InstantCMS. От читателя требуется базовое знание PHP и MySQL.
Ставим цели
В качестве примера создадим компонент "Гостевая книга" и модуль"Последние записи" для него. В конечном итоге мы хотим получить:
— Таблицы в БД для хранения записей гостевой книги
— Возможность вывода случайных записей через модуль
— Возможность для зарегистрированных пользователей добавлять и просматривать записи гостевой книги через компонент
Компонент будет расчитан только на зарегистрированных пользователей,
чтобы показать как создавать ограничения.
Внимание: Во всех примерах кода нужно заменить косые кавычки на апострофы.
Или проще скачать весь пример одним архивом (ссылка в конце поста).
Создаем таблицу в БД
Чтобы было проще, давайте сразу создадим таблицу с несколькими сообщениями гостевой книги.Для каждой записи нам потребуется 4 поля — ID, дата, автор и текст сообщения.
SQL-запрос создаст нужную нам таблицу:
CREATE TABLE `cms_guestbook` ( `id` INT NOT NULL AUTO_INCREMENT , `pubdate` DATETIME NOT NULL , `user_id` INT NOT NULL , `content` VARCHAR( 255 ) NOT NULL , );
Таблицу называем "cms_guestbook", по аналогии с другими таблицами в БД InstantCMS.
Поле id создаем с флагом AUTO_INCREMENT, чтобы при вставке записей их порядковые
номера вычислялись автоматически базой данных.
Обратите внимание, что поле user_id мы делаем с типом INT, т.е.
хранить авторов сообщений мы будем в виде чисел. Каждое такое число будет указывать
на номер пользователя в системной таблице cms_users.
Теперь давайте заполним таблицу несколькими записями. Будем считать, что все эти
записи оставил администратор (т.е. пользователь с номером 1):
INSERT INTO `cms_guestbook` (`pubdate`, `user_id`, `content`) VALUES (NOW(), 1, 'Первое сообщение гостевой книги'), (NOW(), 1, 'Второе сообщение гостевой книги'), (NOW(), 1, 'Третье сообщение гостевой книги');
Поле id при вставке не передаем, оно будет присвоено автоматически
(1, 2 и 3 соответственно). В качестве даты подставляем функцию NOW(),
которая будет заменена на текущую дату сервера.
Теперь сообщения хранятся в базе и мы можем написать модуль, который
будет показывать случайное сообщение из гостевой книги.
Пишем модуль
Пусть наш модуль будет называться "Случайное в гостевой" ииметь краткое название mod_guestbook.
Каждый системный модуль InstantCMS находится в отдельном файле внутри собственной папки.
Перейдите в папку modules в корне сайта и создайте в ней папку mod_guestbook.
В папке mod_guestbook создайте файл module.php.
В файл module.php помещаем код модуля:
<?php function mod_guestbook($module_id){ //Формируем запрос: $sql = "SELECT DATE_FORMAT(g.pubdate, '%d/%m/%Y') as pubdate, g.content as content, u.id as author_id, u.nickname as author_name FROM cms_guestbook g, cms_users u WHERE g.user_id = u.id ORDER BY RAND()"; //Выполняем запрос: //Если не произошла ошибка: //Получаем данные из ответа БД: //Выводим текст сообщения: echo '<p>'.$record['content'].'</p>'; //Формируем ссылку на автора: $author_link = '<a href="/users/0/'.$record['author_id'].'/profile.html">'.$record['author_name'].'</a>'; //Выводим дату и ссылку на автора: echo '<p>'.$record['pubdate'].' - '.$author_link.'</p>'; //Разрешаем показать модуль: return true; } else { //Если данные из БД не были получены, //то запрещаем показывать модуль: return false; } } ?>
Модули InstantCMS оформляются в виде функций, название которых совпадает
с названием модуля (mod_guestbook в нашем случае).
Внутри функции происходит вся работа модуля. Сначала мы составляем запрос
к двум таблицам: cms_guestbook и cms_users. Из первой мы хотим получить текст и дату
сообщения, а из второй — никнейм автора. Для связи этих таблиц нам и нужно поле user_id
в таблице с записями гостевой.
В запрос добавлена строка ORDER BY RAND() для того, чтобы получить случайную запись из таблицы cms_guestbook.
Если запрос к базе происходит успешно, модуль выводит сообщение на экран.
Добавляем модуль в систему
Для того чтобы наш новый модуль заработал и начал отображаться в админке, нужно зарегистрировать его в нашей базе данных.InstantCMS получает сведения о модулях из таблицы cms_modules, в которую нам и нужно вставить строчку.
Выполните 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_guestbook', '1', '1', '1', '0', '', '1', '', '-1', '', '1', 'HOUR');
Для своих модулей в будущем вы можете использовать точно такой же запрос,
просто заменив в нем названия "Случайное в гостевой" и "mod_guestbook" на собственные.
Учтите, что если вы захотите установить этот модуль на другую систему вам
потребуется выполнить все приведенные SQL-запросы и там.
Одного копирования файлов будет недостаточно.
После совершения всех описанных действий вы можете перейти в панель управления
сайтом, в раздел "модули" и включить наш новый модуль, привязав его к меню.
В следующих статьях мы усложним созданный нами сегодня модуль, добавив к нему
возможность настройки через админку и вывод на экран через шаблонизатор Smarty.
Скачать архив с примером
Реклама #
Madmax 15 лет назад #
Suslik 13 лет назад #
Fuze 13 лет назад #
как вы считаете, многое изменилось с того времени???
загляните в код текущей версии для начала.
15 лет назад #
15 лет назад #
15 лет назад #
lezginka.ru 15 лет назад #
вывод:
приводить примеры нужных модулей , к примеру: модуль "профиль пользователя" - с возможность администрирования полей и т.д.
--------------
хотя и на том спасибо.
InstantCMS 15 лет назад #
Обратите внимание на слова "часть 1" в заголовке поста...
И мы не ставим задачу описать создание "нужного" модуля или компонента, т.к.
понятия о нужности у каждого свои. Наша задача - только показать суть технологии.
15 лет назад #
15 лет назад #
15 лет назад #
Но неплохо бы еще объяснить как добавляются записи в базу из комментариев.
15 лет назад #
15 лет назад #
Fuze 15 лет назад #
15 лет назад #