Расширенная система навигации1. Введение Нередко разработчики web-приложений сталкиваются с задачей постраничного разбиения данных, будь то большой массив записей или объемный текст. В процессе реализации программного решения задачи возникает вопрос – как же организовать перемещение пользователя по страницам так, чтобы это, с одной стороны, было удобно, то есть чтобы панель навигации выполняла свое прямое назначение, и, с другой стороны, имело бы приемлемый внешний вид. 2. О рассматриваемых в статье вопросах Существует много вариантов реализации навигационной панели. Остановимся на нескольких, наиболее распространенных. Пример 1. Простейшая навигационная система c выводом всех страниц для 20 страниц выглядит так << < 1 2 3 4 5 6 7 8 9 10 [12] 13 14 15 16 17 18 19 20 > >> Пример 2. Навигационная система с выводом ограниченного ряда страниц
для 20 страниц выглядит так Навигация этого типа, например, применяется на таких известных поисковых системах, как Яndex и Google. Пример 3. Навигационная система с реперными точками для 20 страниц
выглядит так К недостаткам систем первого типа следует отнести громоздкий вид при большом числе страниц. Системы второго типа часто не обеспечивают быстрого перемещения на большие расстояния. Системы третьего типа при некотором фиксированном расстоянии между реперными точками (опорными точками в массиве страниц, которые специально выделяются из общего ряда, чтобы сделать панель навигации более компактной) с ростом страниц, как и системы первого типа, становятся все более громоздкими. В данной статье будет рассмотрена навигационная система с принципом дистанцирования, который заключается в том, что расстояние между реперными точками не является фиксированной величиной, а пропорционально уменьшается при движении от крайних страниц к текущей. Пример 4. Навигационная система с принципом дистанцирования для 350
страниц выглядит так Второй вопрос, которого мы коснемся в статье, будет касаться ссылок. Априори полагаем, что переменные от страницы к странице будут передаваться методом GET. Встает вопрос – каким образом эффективно менять значение текущей страницы в QUERY_STRING и формировать ссылку? Решение дает функция, которая позволяет изменять значение параметров, передаваемых в QUERY_STRING, не изменяя общий вид самой строки. 3. Детали реализации Навигационная система реализована в виде класса. Это упрощает интеграцию в
различные приложения. Перейдем к рассмотрению того, как формируются ссылки. Классу задается формат ссылки, например, в таком виде <a href=”[href]”>[page]</a> где строка может иметь любой вид, за исключением двух тэгов [href] и [page], которые будут заменены соответственно на URL и номер страницы. URL формируются, исходя из системных переменных, дающих значение имени скрипта и строки QUERY_STRING. Строка QUERY_STRING обрабатывается отдельной функцией, которая меняет значение параметра page на заданный, не изменяя значений других параметров и, тем самым, сохраняя общий вид строки. Если в строке не было этого параметра, функция добавит его, внеся требуемые изменения. 4. Пример работы с классом <?php // Пример работы include_once(“advanced_nav.class.php”) // Определяем класс // Инициализация. Задаем начальные условия /* // Строим панель навигации // Выводим панель навигации пользователю 5. Скачать |