Класс Router

Router это — класс для маршрутизации ссылок сайта. Основное назначение — конвертация параметрических URL в человекопонятные. Познакомимся с некоторыми понятиями.

Штатные страницы и псевдостраницы

Штатные страницы это реальные страницы, которые порождаются page-данными (штатными ссылками). Штатные страницы собираются из блоков (вручную или автоматически). Каждая штатная страница получает уникальный номер, и открывается с помощью ссылки такого вида: href="?page=2" (указана относительная параметрическая ссылка).

Кроме параметра page, на страницу можно передать множество других параметров, с помощью которых содержимое блоков может существенно измениться. Специальные выборки записей являются примерами таких параметрических запросов. При этом, страница остается той же, а контент меняется. Совокупность таких разновидностей страниц, относящимися к одной странице, мы будем называть псевдостраницами.

Параметрические и человекопонятные ссылки

Система Blox CMS изначально оперирует параметрическими запросами (ссылками), например: href="?page=2&block=47&p[1]=1". В сложных случаях URL странички может быть стать громоздким и непонятным, поэтому их лучше сделать человекопонятными.

В принципе, для обычного человека красивые URL и не требуются. Но поисковые роботы любят странички с человекопонятными URL (ЧПУ). ЧПУ-ссылки выглядят не только более осмысленными, но и создают уверенность, что страничка не является случайно сгенерированной.

Для превращения параметрических ссылок в человекопонятные ссылки нужно использовать метод Router::convert().

Например, код Router::convert('?page=2&block=47&p[1]=1') может возвращать URL такого вида: 'katalog/instrument/dreli/' (относительный URL). При этом, если последовательно удалять из ЧПУ последние элементы пути, мы будем получать действующие родительские страницы.

Применяйте функцию Router::convert() даже в том случае, если на сайте режим ЧПУ выключен.

  • Во-первых, эта функция выводит параметры URL в определенном стандартном порядке, и у вас не окажется двух разных ссылок, приводящих на одну и ту же страницу.
  • Во-вторых, эта функция строит древо всего сайта. Вообще-то, древо сайта, относящееся к штатным страницам, формируется и без функции Router::convert(). Но именно эта функция позволяет изменить струкутру древа и добавить к древу сайта все "синтетические" ссылки, например, параметрические ссылки каталога. Поэтому ее нужно применить ко всем ссылкам, находящимся в навигационных блоках.


См. также