Меню фолдера CMS

Lasto's Abductor, Похититель буковок Lasto's Abductor, Похититель буковок

Меню фолдера CMS

Для единообразия и в движке скрипта Lasto's Abductor-а, и во встроенной в него CMS используется один и тот же принцип построения меню. Для постижения коего следует сперва читать инструкцию, и вникать в неё по мере сил (на самом деле там нет ничего сложного).

Но это теория.
В качестве иллюстрации посмотрим на файл меню для данного мануала:

[one][Онлайн Мануал:][1]=[manual/index.ext][Чем вас тут порадуют][Назначение этого скрипта]
[one][Онлайн Мануал:][2]=[manual/how.ext][Алгоритм работы скрипта][Как это работает?]
[one][Онлайн Мануал:][3]=[manual/user.ext][Требования к пользователю]
[one][Онлайн Мануал:][4]=[manual/server.ext][Требования к серверу]
 
[one][Установка скрипта на хост:][1]=[manual/settings.ext][Начальные настройки]
[one][Установка скрипта на хост:][2]=[manual/download.ext][Загрузка на хост по FTP]
[one][Установка скрипта на хост:][3]=[manual/first.ext][Первый запуск скрипта]
[one][Установка скрипта на хост:][4]=[manual/setup.ext][Настройки админки]
[one][Установка скрипта на хост:][5]=[manual/furl.ext][ЧПУ (Friendly URL)]
 
[one][Парсинг контента, виды:][1]=[manual/se.ext][Парсинг поисковиков]
[one][Парсинг контента, виды:][2]=[manual/rss.ext][Парсинг RSS фидов]
[one][Парсинг контента, виды:][3]=[manual/site.ext][Парсинг сайтов]
[one][Парсинг контента, виды:][4]=[manual/article.ext][Парсинг статей, алгоритм]
[one][Парсинг контента, виды:][5]=[manual/errors.ext][Когда парсер не работает]
 
[one][Администрирование:][1]=[manual/test.ext][Пробный запуск]
[one][Администрирование:][3]=[manual/cron.ext][Настройка Крона]
[one][Администрирование:][4]=[manual/moder.ext][Модерирование статей]
[one][Администрирование:][5]=[manual/edit.ext][Редактирование статьи]
[one][Администрирование:][6]=[manual/synonim.ext][Синонимизация]
[one][Администрирование:][7]=[manual/wait.ext][Отложенная публикация]
 
[one][Это может озадачить:][1]=[manual/goto.ext][Эпизодический редиректор]
[one][Это может озадачить:][2]=[manual/anonce.ext][Картинки в анонсах статей]
[one][Это может озадачить:][3]=[manual/sign.ext][Ссылка с подписи к статье]
[one][Это может озадачить:][4]=[manual/cashe.ext][Кэширование документов]
[one][Это может озадачить:][5]=[manual/404.ext][Ошибочный трафик]
 
[one][Встроенная CMS:][1]=[manual/cms.ext][О встроенной CMS кратко]
[one][Встроенная CMS:][2]=[manual/cms-doc.ext][Структура документов]
[one][Встроенная CMS:][3]=[manual/cms-die.ext][Пример использования]
[one][Встроенная CMS:][4]=[manual/cms-php.ext][Сложные PHP скрипты]
[one][Встроенная CMS:][5]=[manual/cms-menu.ext][Меню для фолдера CMS]
[one][Встроенная CMS:][6]=[manual/stat.ext][Модуль статистики]
[one][Встроенная CMS:][7]=[manual/search.ext][Встроенный поиск по сайту]
[one][Встроенная CMS:][8]=[manual/doors.ext][Лабиринт для ботов][Белые Дорвейчики]
[one][Встроенная CMS:][9]=[manual/plugin.ext][Плагины]
 
[one][Работа с поисковым трафиком][1]=[manual/se-traf.ext][Обработка SE трафика]
[one][Работа с поисковым трафиком][2]=[manual/consummation.ext][Сервис консумации <img src="http://abductor.ru/i/icon_biggrin.gif">]
[one][Работа с поисковым трафиком][3]=[manual/cloaking.ext][Сервис клоакинга]
 
[one][Гурманам:][1]=[manual/meta.ext][META-теги в движке]
[one][Гурманам:][2]=[manual/cms-rss.ext][RSS лента новостей]
[one][Гурманам:][3]=[manual/design.ext][Советы дизайнеру]
 
[one][Покупка и оплата:][1]=[manual/shop-terms.ext][Terms Of Use]
[one][Покупка и оплата:][2]=[manual/shop-bay-script.ext][Купить скрипт]
[one][Покупка и оплата:][3]=[manual/shop-bay-license.ext][Купить лицензию]
[one][Покупка и оплата:][4]=[manual/shop-pin.ext][Активировать лицензию]
[one][Покупка и оплата:][6]=[manual/shop-upgrade.ext][Апгрейд скрипта]
[one][Покупка и оплата:][7]=[manual/selling.ext][Продажа сайта]
 
[nav][Навигация:][1]=[][Вернуться на сайт]
[nav][Навигация:][2]=[demo/help/index.ext][Демоверсия админки]
 
[nav][Сервисы:][3]=[https://twitter.com/abductor_" target="_blank"][Мы в Твиттере]
[nav][Сервисы:][4]=[rss.ext target="_blank"][RSS лента][Новости сайта - RSS]
[nav][Сервисы:][5]=[connect.ext rel="nofollow"][Сказать ласковое слово админу...][Обратная связь]
[nav][Сервисы:][6]=[search.ext rel="nofollow"][Поиск по сайту]
[nav][Сервисы:][7]=[stat.ext][Статистика сайта]

В виде файла меню располагается по такому пути, в одном фолдере со всеми документами мануала:

./data/pages/manual/_menu.php

Обратите внимание, что в данном случае вообще не использованы меню класса [lst] и [pub], так как в разделе с мануалом нам не нужно автоматическое построение менюшек про оглавление и содержание разделов со статьями от основной области сайта.

Если файла меню в фолдере CMS нет?

В этом случае берётся меню от основной области сайта.
То есть то, что задаётся в админке.

Говоря иначе, файл меню, располагаемый в фолдере с документами CMS, подменяет собой дефолтовое меню сайта при отображении любого из документов этого фолдера.

Посему для любого фолдера с документами CMS можно организовать собственное меню. Или, обращая мысль: если каким-то документам требуется собственное меню, их необходимо заселять в собственный фолдер. И уж в нём такое меню создавать.

Впрочем, если для какого-то документа требуется особое меню, но Вам не хочется выносить этот документ в специальный фолдер, чтобы не нарушать логику структурирования документов сайта, можно поступить так:

Создайте файл с любым именем в шаблоне _xxx.php и разместите его в фолдере с тем документом, который нуждается в особом варианте меню. Поскольку имя _menu.php уже занято, или по меньшей мере зарезервировано, Вы должны обозвать своё особое меню как-то иначе. Пусть для определённости это будет _special_menu.php

Далее в области, где исполняются PHP инструкции документа, требующего особого варианта меню, добавьте кусочек кода:

   global $menu; $menu=get_my_page_file('xxx/_special_menu');

где xxx/ есть путь до файла специального меню от фолдера, в котором живут все документы, бегающие под встроенным движком. То есть от ./data/pages/

Если Вам трудно оперировать двумя последовательными относительными путями, и Вы путаетесь в слэшах, можете воспользоваться одним относительным путём, от корня скрипта. В этом случе запись будет чуть очевиднее:

   global $menu; $menu='./data/pages/xxx/_special_menu.php';

- заметьте, тут Вы обязаны прописывать расширение файла меню в явном виде.

Естественно, никто Вас не заставляет класть файл специального меню в тот же фолдер, где лежит документ, нуждающийся в этом специльном меню. Можете прописать путь до меню "чужого" фолдера.

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