14  /  386

Страница

Просмотров: 68953
Дата последнего изменения: 07.08.2020

Структура

Страница представляет из себя PHP файл, состоящий из пролога, тела страницы (основной рабочей области) и эпилога:
  • header
  • workarea
  • footer

Формирование страницы сайта производится динамически, на основе используемого шаблона страницы, данных, выводимых компонентами, и статической информации, размещенной на странице. Создание шаблонов сайта и размещение на них компонентов осуществляется разработчиками сайтов.

В общем случае все страницы сайта имеют следующую структуру:

Нажмите на рисунок, чтобы увеличить

1 Верхняя - header. Включает в себя, как правило, верхнюю и левую часть дизайна со статической информацией (логотипом, лозунгом и так далее), верхним горизонтальным меню и левым меню (если они есть в дизайне). Может включать в себя информационные динамические материалы.

2 Основная рабочая область - work area. Рабочая область страницы, в которой размещаются собственно информационные материалы сайта. В качестве Основной рабочей области может подключаться как физический файл, так и создаваемый системой на основе комплексных компонентов, динамический код.

Если в качестве Основной рабочей области подключается физический файл, то такая страница называется статической. Если подключается динамический код, то такая страница называется динамической.

3 Нижняя - footer. Включает в себя, как правило, статическую информацию (контактная информация, сведения об авторе и владельце сайта и так далее), нижнее горизонтальное меню и правое меню (если они есть в дизайне). Может включать в себя информационные материалы.

Примечание: Подробнее со структурой страницы можно познакомиться в уроке Шаблон дизайна.

Верхняя и нижняя части дизайна формируются на основе шаблона дизайна сайта. Т.е. информация, отображаемая в данных областях, определяется параметрами шаблона сайта.

В общем случае структура страницы выглядит как:

<?
// подключение пролога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
?>
тело страницы
<?
// подключение эпилога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

Благодаря технологии отложенных функций часть визуальных элементов выводимых в прологе может быть задана в теле страницы, это такие элементы как:

  • заголовок страницы (выводится функцией CMain::ShowTitle);
  • навигационная цепочка (выводится функцией CMain::ShowNavChain);
  • CSS стили (выводятся функцией CMain::ShowCSS);
  • мета-теги (выводятся функцией CMain::ShowMeta);
  • и др.

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

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

Достигается это следующим образом:

<?
// подключение служебной части пролога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// здесь можно задать например, свойство страницы
// с помощью функции $APPLICATION->SetPageProperty
// и обработать затем его в визуальной части эпилога

// подключение визуальной части пролога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
?>
Содержимое страницы
<?
// подключение эпилога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

В служебной части пролога происходит:

  • подключение к базе;
  • отработка агентов;
  • инициализация служебных констант;
  • проверка прав доступа к файлам и каталогам;
  • подключение необходимых модулей
  • исполнение обработчиков событий OnPageStart, OnBeforeProlog;
  • ряд других необходимых действий.

Особенностью служебной части пролога является то, что она не выводит никаких данных (не посылает header браузеру).

В визуальной части пролога происходит подключение файла /bitrix/templates/ID шаблона сайта/header.php, где ID шаблона сайта - идентификатор текущего шаблона сайта. Данный файл хранит левую верхнюю часть текущего шаблона сайта.

Эпилог тоже может быть разбит на визуальную и служебную части:

<?
// подключение служебной части пролога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// подключение визуальной части пролога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");

?>
Содержимое страницы
<?

// подключение визуальной части эпилога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_before.php");

// подключение служебной части эпилога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>

В визуальной части эпилога происходит подключение файла /bitrix/templates/ID шаблона сайта/footer.php, где ID шаблона сайта - идентификатор текущего шаблона сайта. Данный файл хранит правую нижнюю часть текущего шаблона сайта. Помимо этого - выводится ряд невидимых IFRAME'ов, используемых технологией переноса посетителей.

В служебной части эпилога происходит:

  • отправка почтовых сообщений;
  • исполнение обработчиков события;
  • отключение от базы;
  • ряд других служебных действий.

Довольно часто возникают задачи, когда нет необходимости в подключении визуальной частей пролога и эпилога. В этом случае достаточно подключить служебные части пролога и эпилога:

<?
// подключение служебной части пролога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
?>
тело страницы
<?
// подключение служебной части эпилога
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>

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

Шаблоны

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

Шаблоны страниц хранятся в каталогах:

  • /bitrix/templates/.default/page_templates/;
  • /bitrix/templates/ID шаблона сайта/page_templates/.

В каждом таком каталоге могут находиться непосредственно сами файлы шаблонов страниц, а также служебный файл .content.php, основная задача которого - хранить описания и порядок сортировки шаблонов страниц. Эта информация хранится в массиве $TEMPLATE структура которого представлена ниже:

Array
(
    [имя файла] => Array
        (
            [name] => заголовок шаблона страницы
            [sort] => индекс сортировки
        )

)

При формировании списка шаблонов страниц используется следующий алгоритм:

  • получаем ID шаблона сайта для текущего сайта который подключается без PHP условия;
  • последовательно подключаем файлы:
    • /bitrix/templates/.default/page_templates/.content.php
    • /bitrix/templates/ID шаблона сайта/page_templates/.content.php
    В каждом из этих файлов будет описан свой массив $TEMPLATE. После подключения этих файлов, мы будем иметь объединенный массив $TEMPLATE. Далее для каждого элемента этого массива, представляющего из себя описание одного шаблона страницы, выполняем следующее:
    • проверяем физическое существование шаблона страницы
    • если существует, то добавляем его в список шаблонов
  • сортируем полученный список шаблонов по индексу сортировки (см. выше структуру массива $TEMPLATE)

Свойства

Свойства раздела хранятся в файле .section.php соответствующего каталога (раздела сайта). Свойства страницы задаются, как правило, либо в теле страницы, либо между служебной частью и визуальной частью пролога.

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

В работе со свойствами используются следующие функции:

Методы установки свойств

CMain::SetPageProperty - устанавливает свойство страницы.

<?
    $APPLICATION->SetPageProperty("keywords", "веб, разработка, программирование");
    ?>

CMain::SetDirProperty - устанавливает свойство раздела.

<?
    $APPLICATION->SetDirProperty("keywords", "дизайн, веб, сайт");
    ?>

Показ свойства

CMain::ShowProperty - выводит свойство страницы или свойство раздела с использованием технологии отложенных функций.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><?$APPLICATION->ShowProperty("page_title")?></title>
</head>
<body link="#525252" alink="#F1555A" vlink="#939393" text="#000000">
...

Получение значения свойства

CMain::GetProperty - возвращает свойство страницы или свойство раздела.

<?
    $keywords = $APPLICATION->GetProperty("keywords");
    if (strlen($keywords)>0) echo $keywords;
    ?>

CMain::GetPageProperty - возвращает свойство страницы.

<?
    $keywords = $APPLICATION->GetPageProperty("keywords");
    if (strlen($keywords)>0) echo $keywords;
    ?>

CMain::GetPagePropertyList - возвращает массив всех свойств страницы.

<?
    $arProp = $APPLICATION->GetPagePropertyList();
    foreach($arProp as $key=>$value)
    	echo '<met a name="'.$key.'" content="'.htmlspecialchars($value).'">';
    ?>

CMain::GetDirProperty - возвращает свойство раздела.

<?
    $keywords = $APPLICATION->GetDirProperty("keywords");
    if (strlen($keywords)>0) echo $keywords;
    ?>

CMain::GetDirPropertyList - возвращает массив свойств раздела, собранных рекурсивно до корня сайта.

<?
    $arProp = $APPLICATION->GetDirPropertyList();
    foreach($arProp as $key=>$value)
    	echo '<meta name="'.$key.'" content="'.htmlspecialchars($value).'">';
    ?>

Работа с мета-тегами

Для работы с мета-тегами используются свойства страницы и раздела. Для работы с ними используются следующие функции:

CMain::ShowMeta - выводит свойство страницы или свойство раздела, обрамляя их HTML-тегом <meta> с использованием технологии отложенных функций.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?$APPLICATION->ShowMeta("keywords_prop", "keywords")?>
<?$APPLICATION->ShowMeta("description_prop", "description")?>
</head>
<body link="#525252" alink="#F1555A" vlink="#939393" text="#000000">
...

CMain::GetMeta - возвращает свойство страницы или свойство раздела, обрамляя их HTML-тегом <meta>.

<?
    $meta_keywords = $APPLICATION->GetMeta("keywords_prop", "keywords");
    if (strlen($meta_keywords)>0) echo $meta_keywords;
    ?>

Параметры

Параметры страницы предназначены для передачи параметров в функции модулей для изменения их стандартного поведения. Например, при необходимости отключить запоминание последней страницы в сессии (при использовании постраничной навигации) или изменить стандартный формат вывода даты в функциях модуля Информационные блоки.

Параметры страницы доступны только в пределах страницы. Они не сохраняются ни в базе, ни в сессии.

Для работы с параметрами страницы предназначен класс CPageOption.

ID модуляНазваниеПараметрОписаниеЗначение по умолчанию
main Главный модульnav_page_in_sessionЕсли значение - "Y", то в сессии будет запоминаться последняя открытая страница в постраничной навигации, если значение "N" - не будет.Y
iblock Информационные блокиFORMAT_ACTIVE_DATESЕсли значение - FULL, то даты относящиеся к элементу информационного блока (поля ACTIVE_FROM и ACTIVE_TO) будут возвращаться в полном формате (вместе со временем), если значение SHORT, то - в кратком формате (без времени).SHORT

Примеры использования:

<?
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
?>
<?
CPageOption::SetOptionString("iblock", "FORMAT_ACTIVE_DATES", "FULL");
?>

Порядок выполнения

Общий порядок выполнения страницы следующий:

  • Служебная часть пролога;
  • Визуальная часть пролога;
  • Тело страницы;
  • Визуальная часть эпилога;
  • Служебная часть эпилога.

Параметры компонента и шаблона доступны из программных модулей компонента и шаблона как массив $arParams. Результатом работы программного модуля компонента является массив $arResult, подаваемый на вход шаблона компонента. Результирующий HTML-код выводится обычным оператором echo на поток (при этом он встраивается в нужное место страницы).

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


61
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии