Плюшка CMS#

/* Создан для быстрой разработки приложений */
Скачать Демо

4. ЧПУ, страница сайта

30.10.2015

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

В данном движке вся дополнительная информация закладывается в адрес страницы. Адрес страницы — это, грубо говоря, относительный URL страницы сайта.

Например, если есть такая страница: http://example.com/article/blog/news?page=2, то адресом страницы будет «article/blog/news». Приведённый пример — это типичная ссылка на одну из страниц сайта. ЧПУ является неотъемлемой частью движка и его выключение не предусмотрено.

Адрес страницы должен состоять по крайней мере из двух элементов (artcle и blog) — это имя MVC-контроллера и имя действия. Если действие не задано (пример: http://example.com/article), то в качестве имени действия принимается «Index».

Имя контроллера — это файл, находящийся в директории /controller, а действие — это имя процедуры класса этого контроллера. Таким образом, в случае приведённой выше ссылки, движок загружает файл /controller/article.php, затем вызывает процедуру actionBlog(). Дальше эта процедура разбирает остальные части URL самостоятельно.

Именно адрес страницы (строка «article/blog/news») используется движком для того, чтобы определить какие дополнительные блоки (виджеты — аналог модулей в Joomla) должны быть опубликованы на данной странице. Таким образом никакого обособленного хранилища сопутствующей каждой странице информации нет.

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

Для целей ajax-запросов используется особый формат адресов страниц: http://example.com/index2.php?controller=article&action=blog&id=news&page=2 для них, разумеется, нет надобности тратить ресурсы сервера для преобразований ЧПУ ссылок. В корне сайта лежат два файла — index.php (все ЧПУ ссылки сводятся к нему) и index2.php. Их отличие состоит в том, что при обращении к index2.php, в отличии от index.php, шаблон (а также виджеты) обрабатываться не будет и сервером будет отдан только основной контент.