Создание встроенного модуля CMS. Часть 2 — различия между версиями

Материал из Школьный портал: справочника
Перейти к: навигация, поиск
(Код модуля)
(Как хранится главное меню)
Строка 36: Строка 36:
  
 
<pre>
 
<pre>
I_ID      идентификатор элемента меню, автоинкрементный счётчик,
+
I_ID      Идентификатор элемента меню, автоинкрементный счётчик,
 
           пользователю не показывается
 
           пользователю не показывается
 +
 
I_NAME    Название пункта меню, именно его видит пользователь в редакторе и на сайте
 
I_NAME    Название пункта меню, именно его видит пользователь в редакторе и на сайте
I_LINK    URL (в этом поле пусто, значит это папка)
+
 
I_PARENT  идентификатор папки, если данный элемент лежит в папке. иначе 0.
+
I_LINK    URL (если в этом поле пусто, значит это папка)
           пользователю не показывается
+
 
I_LEVEL  уровень вложенности (вложенность не ограничена, бывает любой число)
+
I_PARENT  Идентификатор папки.
           минимум 1 — в корне, 2 и выше — в папке
+
          Если данный элемент лежит в папке, там будет какое-то число, иначе 0.
           пользователю не показывается
+
           Пользователю нигде явно не показывается, но иерархия
I_SORT    порядок сортировки. пользователь перетаскивает элементы мышкой в админке,
+
          в редакторе и на сайте строится исходя из этого поля.
 +
          У плоского меню (совсем без иерархии) все значения равны 0.
 +
 
 +
I_LEVEL  Уровень вложенности (вложенность не ограничена, допустимо любое число).
 +
           Минимум 1 — в корне, 2 и выше — в папке.
 +
           Пользователю нигде не показывается.
 +
 
 +
I_SORT    Порядок сортировки.
 +
          Пользователь перетаскивает элементы мышкой в редакторе,
 
           а это поле заполняется соответствующим образом авотматически.
 
           а это поле заполняется соответствующим образом авотматически.
           там просто чиста для самой обычной численной сортировки
+
           Там чиста для самой обычной численной сортировки.
PUBLISHED если там 1, значит пункт меню опубликован, на сайте показывать можно,
+
 
           если там 0, CMS не должна его показывать на сайте
+
PUBLISHED Если там 1, значит пункт меню опубликован, на сайте показывать можно,
OWNER    владелец пункта меню. если 6, значит школьный сайт. всё остальное — блоги
+
           если там 0 CMS не должна его показывать на сайте.
 +
          Поставленная или снятая галочка в редакторе означает 1 или 0 соответственно.
 +
 
 +
OWNER    Владелец пункта меню. Если 6, значит школьный сайт. Всё остальное — блоги.
 
</pre>
 
</pre>
 +
 +
Продолжение следует...

Версия 09:14, 18 апреля 2012

Внимание! Данная статья предполагает, что вы уже читали первую часть.

На этот раз сделаем карту сайта на основе главного меню.

Этот пример скорее учебный, в реальной жизни имеет смысл, если главне меню у вас иерархическое и очень развесистое настолько, что охватить его вниманием, просто гуляя по нему наведением мыши, — дело непростое.

Название

Пусть компонент называется "Карта сайта" для людей, а внутреннее имя будет "sitemap".

Регистрация в базе

INSERT INTO MODULES (MODULENAME, VISIBLE_NAME, M_DEF_LINK, ACCESS, M_PLACE, SHOW_ON) VALUES ('sitemap', 'Карта сайта', 'mod=sitemap', ',6,,2,,4,', 'center', ',AllPage,');

Код модуля

sub sitemap()
{
	# Здесь будет всё самое интересное
}

Как хранится главное меню

Раз мы определились, что навигация — это источник данных для карты сайта, первым делом опишу поля таблицы mainmenu из базы CMS.gdb

Таблица mainmenu хранит пункты меню. Одна строка — один пункт.

Описание полей:

(лучше прямо сейчас открывайте таблицу в вашем любимом инструменте и смотрите на то, что CMS положила в таблицу, чтобы представить меню на вашем сайте)

I_ID      Идентификатор элемента меню, автоинкрементный счётчик,
          пользователю не показывается

I_NAME    Название пункта меню, именно его видит пользователь в редакторе и на сайте

I_LINK    URL (если в этом поле пусто, значит это папка)

I_PARENT  Идентификатор папки.
          Если данный элемент лежит в папке, там будет какое-то число, иначе 0.
          Пользователю нигде явно не показывается, но иерархия
          в редакторе и на сайте строится исходя из этого поля.
          У плоского меню (совсем без иерархии) все значения равны 0.

I_LEVEL   Уровень вложенности (вложенность не ограничена, допустимо любое число).
          Минимум 1 — в корне, 2 и выше — в папке.
          Пользователю нигде не показывается.

I_SORT    Порядок сортировки.
          Пользователь перетаскивает элементы мышкой в редакторе,
          а это поле заполняется соответствующим образом авотматически.
          Там чиста для самой обычной численной сортировки.

PUBLISHED Если там 1, значит пункт меню опубликован, на сайте показывать можно,
          если там 0 — CMS не должна его показывать на сайте.
          Поставленная или снятая галочка в редакторе означает 1 или 0 соответственно.

OWNER     Владелец пункта меню. Если 6, значит школьный сайт. Всё остальное — блоги.

Продолжение следует...