П2: Навигация «хлебные крошки»
П2: Навигация «хлебные крошки»Морда: СтандартнаяСераяЗеленая Главная / Портфель / П2: Навигация «хлебные крошки» Запомнить № 1:
П2: Навигация «хлебные крошки»Опубликовано:
13 февраля 2002Изменено:
23 апреля 2002 |
Если вы хотите на сайте сделать навигацию «хлебные крошки» (думаю понятно, что это такое) и сайт представляет собой создание размером более десятка страниц, то достаточно лениво и утомительно на каждой странице вручную делать данную навигацию.
Для успешной реализации данного типа навигации, информация на сайте, должна быть соответствующим образом структурирована, и каждый подраздел должен находится в отдельном каталоге, (разделы могут быть вложены один в другой, образуя, таким образом, иерархическую структуру).
Все что нам нужно иметь, для того чтобы сделать автоматическим формирование навигации — это список всех относительных (от корня сервера) путей разделов, либо в tab delimited файле, либо в базе данных. Если сайт не большой, — то проще сделать файл, если большой без базы не обойтись, но об этом в другой раз. Файл с описаниями всех разделов сайта будет иметь вид:
dir title
/path1/ title1
/path1/path11/ title11
/path2/ title2
Наконец сам макрос, создающий навигационную строку:@navigation[title] title - это название страницы
# Определяем переменную splt - разделитель между элементами строки навигации
^var[splt;>^;]
# определяем переменную – название документа по умолчанию
# здесь это index.html, но можно и любое другое значение
^var[default.doc;index.html]
# создаем именованный контекст sections с названиями всех разделов сайта
^context[sections;^load[/путь/к/файлу/файл_с_описанием_разделов]]
^context[nav;
# Разбиваем URI на составляющие и ими столбцы
# текущего контекста
^lsplit[^env[PATH_INFO];/]
# Делаем столбцы строками
^flip[nav]
# Начинаем формировать переменную string - HTML код строки навигации
^var[string;<a href=/>Название сайта</a>]
# Начинаем формировать переменую – uri раздела
^var[dir;/^item[0]/]
^menu[
# Переменная для определения следующего элемента URI
^var[next_row;^item[next;0]]
^context[sections;
# Поиск для построенного каталога в контексте
^locate[dir;^var[dir]]
# фиктивная переменная page – для определения того, является ли
# следующий элемент страницей или нет?
^var[page;^findstr[html;^var[dir]]]
^if[^var[page] > 0;
^var[string;.; ^var[splt] $title]
;
^var[next;^findstr[^var[default.doc];^var[next_row]]]
^if[^var[next] < 0;
^var[string;.; ^var[splt] <a href=^var[dir]>^item[title]</a>]
;]
]
]
^var[dir;.;^item[next;0]/]
]
]
далее остается только вывести полученную переменную ^var[string] на уровне обработки none, что-то вроде того:^level[none;var[string]]Содержание | № 2 >>Из последнего№ 24 Работаем с .htpasswd 08.11.2003 (Изменено: 10.01.2004)№ 23 Самодокументирование парсерного кода 14.09.2003№ 22 Работаем с RSS 21.02.2003№ 21 Топологическая сортировка 16.02.2003№ 20 Установка 3-го парсера на хостинге 350mb.ru 12.02.2003ПолезноеParser 2Parser2 - FAQParser2 - ПримерыParser2 - форумДокументация на Parser 2Дизайн и usabilityБоремся за чистоту URL’овДублирующая навигацияНавигация на сайте.Главная / Портфель / П2: Навигация «хлебные крошки» Запомнить Информация о сервереАвторРегистрация/настройки
содержание | 2 | гидроизоляция и проникающая изоляция
Используются технологии
uCoz