Скачайте приложение и протестируйте бесплатно в течение 10 дней
Валюта Выберите язык Выбрать регион

Последовательность выполнения PHP: Заголовок, главная страница и подвал

Этот учебник для разработчиков показывает на примере базового макета с bx_Header.html, index.html и bx_Footer.html, когда выполняются отдельные PHP-скрипты. Ты узнаешь, как содержимое $LayoutHTML постепенно расширяется и где можно внести изменения, зависящие от страницы или глобальные.

Предпосылки и цель

Для этого руководства разработчика вам следует знать, как система управления контентом bluetronix формирует страницу из её макета, заголовка, основной части и подвала. Мы покажем вам, в каком порядке выполняются PHP-скрипты этих областей и какие части $LayoutHTML при этом уже загружены.

В данном примере базовый макет состоит из файлов CMS bx_Header.html, index.html и bx_Footer.html. Основная страница index.html представляет собой запрашиваемую HTML-страницу.

Базовый макет определяет, в каком порядке будут подключены три области. В показанном примере вы можете найти определение макета в таблице 00_layout.

Соответствующий фрагмент макета выглядит так:

__DB_Layout_/bx_Header.html__
<main>
   __DB_Layout_Main__
</main>
__DB_Layout_/bx_Footer.html__

Первый метка подключает bx_Header.html. Внутри элемента main через __DB_Layout_Main__ подключается текущая вызываемая страница, в нашем примере index.html. Затем следует bx_Footer.html.

Хотя определение макета включает все три области, HTML-содержимое для кода PHP каждой области загружается поэтапно в $LayoutHTML.

1. Сначала выполняется PHP-код заголовка

Откройте в Менеджере файлов файл bx_Header.html. Через PHP Code вы можете редактировать PHP-код этой области.

Заголовок — это первая загруженная область страницы. Пока выполняется его PHP-код, $LayoutHTML содержит только HTML из bx_Header.html.

PHP-Code: bx_Header.html

$LayoutHTML enthält:
   bx_Header.html

Здесь вы можете, например, заменить плейсхолдеры заголовка или подготовить навигацию. Доступ к реальному HTML-содержимому index.html или bx_Footer.html на этом этапе через $LayoutHTML еще недоступен.

2. После этого выполняется PHP-код главной страницы

После заголовка CMS загружает запрашиваемую основную страницу, здесь index.html, и выполняет её PHP-код. На этом этапе $LayoutHTML содержит как HTML-код заголовка, так и HTML-код основной страницы.

PHP-Code: index.html

$LayoutHTML enthält:
   bx_Header.html
   index.html

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

Например: если ваш заголовок содержит плейсхолдер __HeaderClass__, вы можете заменить его из основной страницы:

$LayoutHTML = str_replace("__HeaderClass__","active",$LayoutHTML);

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

На данном этапе подвал еще не загружен. Поэтому его HTML-содержимое нельзя надежно изменить через $LayoutHTML.

3. PHP-код подвала выполняется в последнюю очередь

Наконец, CMS загружает bx_Footer.html и выполняет его PHP-код. Теперь $LayoutHTML содержит HTML-содержимое всех трех областей.

PHP-Code: bx_Footer.html

$LayoutHTML enthält:
   bx_Header.html
   index.html
   bx_Footer.html

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

Если уже загруженное HTML-содержимое, например, содержит плейсхолдер __MyTitle__, вы можете заменить его там:

$LayoutHTML = str_replace("__MyTitle__","My Custom Title",$LayoutHTML);

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

Порядок выполнения на первый взгляд

Ключевое правило гласит: PHP может изменять через $LayoutHTML только те HTML-области, которые на данный момент уже загружены.

1. bx_Header.html
   PHP sieht: Header
        ↓
2. index.html
   PHP sieht: Header + Hauptseite
        ↓
3. bx_Footer.html
   PHP sieht: Header + Hauptseite + Footer

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

Важно при собственных PHP-функциях

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

if(!function_exists("MyTemplateFunction")) {
   function MyTemplateFunction() {
      return true;
   }
}

Резюме

В нашем базовом макете сначала выполняется PHP-код из bx_Header.html, затем из index.html и, наконец, из bx_Footer.html. С каждым шагом расширяется HTML-содержимое, доступное через $LayoutHTML.

Поэтому размещайте свой PHP-код там, где уже загружены требуемые области HTML: в заголовке для специфических изменений заголовка, на главной странице для собственных содержаний и ранее загруженного заголовка или в подвале для изменений уже собранного макета.

Часто задаваемые вопросы

что часто спрашивают клиенты

В каком порядке выполняются PHP-скрипты?

Сначала выполняется PHP-код из bx_Header.html, затем PHP-код главной страницы, например, index.html, и в последнюю очередь PHP-код из bx_Footer.html.

Какие области HTML содержит $LayoutHTML во время выполнения PHP-кода заголовка?

Во время выполнения PHP-кода заголовка $LayoutHTML содержит только уже загруженный HTML-контент из bx_Header.html.

Может ли главная страница изменять HTML-код заголовка?

Да. Когда выполняется PHP-код главной страницы, заголовок и главная страница уже содержатся в $LayoutHTML. Таким образом, вы можете заменить ранее созданный в заголовке плейсхолдер.

Почему код PHP заголовка еще не может изменять подвал?

Подвал загружается только после главной страницы. Его HTML-контент в это время еще не присутствует в $LayoutHTML.

Какие области может изменять код PHP подвала?

На момент выполнения кода подвала $LayoutHTML уже содержит заголовок, главную страницу и подвал. Оставшиеся плейсхолдеры в этих областях могут быть заменены.

Где я могу увидеть структуру основного макета?

Определение макета показывается в примере в таблице 00_layout. Оно включает bx_Header.html, текущую главную страницу и bx_Footer.html.

Где я могу редактировать код PHP из bx_Header.html?

Выберите bx_Header.html в Менеджере файлов и откройте PHP код.

Что нужно учесть при создании собственных PHP-функций в заголовке и главной странице?

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

CMS