Создание встроенного модуля CMS. Часть 3 — различия между версиями
Материал из Школьный портал: справочника
(→Самый простой вариант) |
|||
| Строка 24: | Строка 24: | ||
Обратите внимание, для сайта всё ещё действует правило, обязывающее возвращать данные (return). А в админке следует использовать print. Разумеется, это никак не мешает накапливать данные в переменных и под конец выдать их в нужном порядке. | Обратите внимание, для сайта всё ещё действует правило, обязывающее возвращать данные (return). А в админке следует использовать print. Разумеется, это никак не мешает накапливать данные в переменных и под конец выдать их в нужном порядке. | ||
| + | |||
| + | == Собственная таблица для произвольных данных == | ||
| + | |||
| + | Сделаем таблицу: | ||
| + | |||
| + | <source lang="sql"> | ||
| + | CREATE TABLE GUESTBOOK ( | ||
| + | ID INTEGER NOT NULL, | ||
| + | NAME VARCHAR(128), | ||
| + | TEXT BLOB SUB_TYPE 1 SEGMENT SIZE 80, | ||
| + | POST_DATE TIMESTAMP, | ||
| + | published SMALLINT DEFAULT 0, | ||
| + | OWNER INTEGER NOT NULL | ||
| + | ); | ||
| + | </source> | ||
| + | |||
| + | Пройдёмся по полям: | ||
| + | * '''ID''' — идентификатор объекта, Это общая рекомендация проектирования баз данных, рекомендуем всегда создавать его для любых, это намного упростит вам дальнейшую разработку. | ||
| + | * '''NAME, TEXT, POST_DATE''' — это уже произвольные поля, которые могут быть какими угодно для потребностей вашего нового модуля. Для простейшего примера гостевой книги их будет достаточно. | ||
| + | * '''published''' — признак опубликованности. Для модуля новостей это может быть признаком черновика; для навигации это может быть галочкой, включающей пункт в меню; для гостевой книги это будет признак одобрения модератором. 0 будет означать "сообщение на рассмотрении", 1 — "одобрено к показу на сайте". | ||
| + | * '''OWNER''' — владелец сайта. '''6''' у нас всегда школльный сайт, остальное — блоги. Об этом важно помнить при разработке всех модулей, которые будут писать и читать из базы. Вам не нужно каждый раз выяснять владельца, [[CMS]] уже заботится об этом. Когда выполняется модуль, переменная <code>$owner</code> уже содержит какое-то число, равное идентификатору авторизованного пользователя в админке либо автора сайта. Вам остаётся только использовать его для вставки в базу данных для этого владельца или выбирать из базы данные только для такого владельца. Таки образом реализуется хранение данных для сайта и блогов в одной таблице. Ниже будет приведён пример использования владельца. | ||
Версия 13:15, 17 сентября 2012
Статья подразумевает, что вы уже прочитали первую часть.
Рассматривается вопрос разделения модуля на часть для посетителей и часть для администратора сайта.
Статья пишется по горячим следам разработки модуля гостевой книги. Поэтому сразу сделаем допущение, что внутреннее имя у него guestbook.
Самый простой вариант
Вывод разных строк в зависимости от того, сайт это или админка.
sub guestbook() { if ( defined param('edt') ) { print "Hello, admin interface!"; } else { return "Hello, site!"; } }
Обратите внимание, для сайта всё ещё действует правило, обязывающее возвращать данные (return). А в админке следует использовать print. Разумеется, это никак не мешает накапливать данные в переменных и под конец выдать их в нужном порядке.
Собственная таблица для произвольных данных
Сделаем таблицу:
CREATE TABLE GUESTBOOK ( ID INTEGER NOT NULL, NAME VARCHAR(128), TEXT BLOB SUB_TYPE 1 SEGMENT SIZE 80, POST_DATE TIMESTAMP, published SMALLINT DEFAULT 0, OWNER INTEGER NOT NULL );
Пройдёмся по полям:
- ID — идентификатор объекта, Это общая рекомендация проектирования баз данных, рекомендуем всегда создавать его для любых, это намного упростит вам дальнейшую разработку.
- NAME, TEXT, POST_DATE — это уже произвольные поля, которые могут быть какими угодно для потребностей вашего нового модуля. Для простейшего примера гостевой книги их будет достаточно.
- published — признак опубликованности. Для модуля новостей это может быть признаком черновика; для навигации это может быть галочкой, включающей пункт в меню; для гостевой книги это будет признак одобрения модератором. 0 будет означать "сообщение на рассмотрении", 1 — "одобрено к показу на сайте".
- OWNER — владелец сайта. 6 у нас всегда школльный сайт, остальное — блоги. Об этом важно помнить при разработке всех модулей, которые будут писать и читать из базы. Вам не нужно каждый раз выяснять владельца, CMS уже заботится об этом. Когда выполняется модуль, переменная
$ownerуже содержит какое-то число, равное идентификатору авторизованного пользователя в админке либо автора сайта. Вам остаётся только использовать его для вставки в базу данных для этого владельца или выбирать из базы данные только для такого владельца. Таки образом реализуется хранение данных для сайта и блогов в одной таблице. Ниже будет приведён пример использования владельца.