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

Материал из Школьный портал: справочника
Перейти к: навигация, поиск

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

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

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

Название

Пусть компонент называется "Карта сайта" для людей, а внутреннее имя будет "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.
          пользователю не показывается
I_LEVEL   уровень вложенности (вложенность не ограничена, бывает любой число)
          минимум 1 — в корне, 2 и выше — в папке
          пользователю не показывается
I_SORT    порядок сортировки. пользователь перетаскивает элементы мышкой в админке,
          а это поле заполняется соответствующим образом авотматически.
          там просто чиста для самой обычной численной сортировки
PUBLISHED если там 1, значит пункт меню опубликован, на сайте показывать можно,
          если там 0, CMS не должна его показывать на сайте
OWNER     владелец пункта меню. если 6, значит школьный сайт. всё остальное — блоги