14  /  328

Страница

Просмотров: 9593 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 26.06.2017
  • Структура
  • Шаблоны
  • Свойства
  • Параметры
  • Порядок выполнения
  • Структура

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

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

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

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

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

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

    • Нижняя - 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 '';
        ?>

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

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

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

    <?
        $arProp = $APPLICATION->GetDirPropertyList();
        foreach($arProp as $key=>$value)
        	echo '';
        ?>

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

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

    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, которые, в свою очередь, могут обращаться к базе данных продукта.


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

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