Часто бывает необходимо, что бы на сайте, который размещён на CMS, в принципе, не важно на какой: Wordpress или Joomla, Drupal или даже что-то самописное, была встроена просто статичная страница с произвольным содержимым, то есть что бы по запросу domen.ru/pages42 открывалась необходимое нам содержимое таблицы или какай-то скрипт, который отсутствует в сборке CMS и нет подобных плагинов.
Как же сделать подобный ход? Написать новый плагин, который можно было бы встроить в движок не каждому дано. Я, например, не взялся за бы за это. Есть другой выход – поковыряться в самом шаблоне и встроить вызов определённого файла (например, сделать его вызов инклудом) на определённой странице.
Перейдём к примерам:
Ситуация 1
Нам необходимо изменить стандартное содержание главной страницы, то есть, например, в CMS Wordpress на главной странице по умолчанию осуществляется вывод последних статей, добавленных на сайт, либо просто какая-то отдельная статья (страница). Нам же необходимо создать что-то подобное этой морды на сайте.
Для этого используем серверную функцию $_SERVER['QUERY_STRING'], которая позволяет определить «хвост» страницы после домена, то есть, если нам необходимо определить адрес страницы domen.ru/?page=45 функция нам выведет ?page=45. Именно от уникальности подобного хвоста для каждой страницы, мы и будем отталкиваться при написании этой вставки кода. Стоит отметить, что при включённом ЧПУ необходимо проверять точный вывод данной функции, потому как URL в адресе не всегда моет соответствовать именно URL серверному (надеюсь, вы поняли меня).
- if ($_SERVER['QUERY_STRING'] == ») {
include(‘script.php’);
} else {
// вставка обычного «тела» шаблона
}
Таким образом при «нулевом» хвосте, то есть на главной странице сайта мы получаем вывод необходимого нам скрипта, в котором мы можем самостоятельно написать вывод того, что нам необходимо, либо просто создать статичную конструкцию на html вот такого вида.
Ситуация 2
Предположим, в некоторых разделах страницы, например, в самих разделах меню, нам необходим вывод определённого блока перед основной частью страницы. Не важно, что это может быть и как это можно реализовать с помощью специальных плагинов, а важно лишь то, как это сделать руками на базе шаблона:
- if ($_SERVER['QUERY_STRING'] == ») {
include(‘script.php’);
}
В данном случае необходимо «пропускать» наш «хвост» через «фильтр» регулярных выражений, что бы определить где именно у нас находятся необходимые нам типы страниц и когда именно выводить нужный код.
В данном случае можно написать целый ряд подобных проверок или же что-то более глобальное для того, что бы выводить свой код для разделов, свой для статических страниц и свой для просто внутренних страниц со статьями. Каждый уже решает сам.
Ситуация 3
Выводим необходимый нам код или скрипт вместо определённой внутренней страницы на сайте. Например, нам необходимо вывести вместе стандартной 404 ошибки список пользователей на сайте – мы пишем код, который бы делал выборку и сортировку имён из таблицы и с помощью такого вызова вместо пустой страницы получаем наш код. Что-то подобное было реализовано у меня на сайте на странице Услуги, но там я пошёл чуть дальше и уже подключал к новой странице JS библиотеки, другие php скрипты (можно запутаться кстати потом в инклудах), а так же кучу сторонних файлов.
- if ($_SERVER['QUERY_STRING'] == ‘com_conponent=content&page=45′) {
include(‘script/my_script.php’);
} else {
// вставка обычного «тела» шаблона
}
Таким образом можно получить именно тот код вместо простого вывода. Данная функция будет полезна тогда, когда на определённой странице не достаточно просто стандартной функции оформления текста или других элементов или когда необходимо вставить в «тело» сайта форум, чат, скрипт доски объявления или что-то «своё», а CMS это не позволяет или это сложнее.
Если кому-то помог, буду рад, а вообще жду комментариев к статье. : )














19
Метки: