Как всегда Дмитрий Пучков ничего особо полезного не сказал.
Если вам нужно в header.php темы использовать условно параметры страницы (заданные через $APPLICATION->[URL=https://dev.1c-bitrix.ru/api_help/main/reference/cmain/setpageproperty.php]SetPageProperty[/URL] соответственно), мы можете поступить так:
возьмем например стандартную страницу index.php:[QUOTE]<?
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php"); ?>
$APPLICATION->SetTitle("Страница");
$APPLICATION->SetPageProperty("SOME_PARAM", "SOME_VALUE");
?>
Контент
);?>
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>[/QUOTE]
В этом случае в файле темы header.php (local/templates/some_theme/header.php) с параметром "SOME_PARAM" условно работать не получится, значения возможно только получить (и вевести) через отложенные функции, например [URL=https://dev.1c-bitrix.ru/api_help/main/reference/cmain/showproperty.php]ShowProperty[/URL]
Если же вам необходимо использовать параметры страницы в условиях PHP, вы можете заменить конструкцию [QUOTE] require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");[/QUOTE]
на[QUOTE]require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");[/QUOTE]
и устанавливать параметры между этими строками
Например, измененный index.php будет выглядеть так:[QUOTE]<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->SetTitle("Страница");
$APPLICATION->SetPageProperty("SOME_PARAM", "SOME_VALUE");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
?>
Контент
);?>
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>[/QUOTE]
и в этом случае в файле темы header.php
будут работать конструкции типа:
[QUOTE]<? if ($APPLICATION->GetPageProperty('SOME_PARAM') === 'SOME_VALUE'): ?>[/QUOTE]
Текущая архитектура не позволяет сделать более красивого и простого решения.
Альтернативой, можно создать тип инфоблока "Страницы", добавить необходимые поля с большим вариантом по типам свойства, и привязать элемент к странице (можно так же через например кастомной свойство)
PS: за 10+ лет могли бы сделать сущности страниц и более элегантное решение для подобных задач
Если вам нужно в header.php темы использовать условно параметры страницы (заданные через $APPLICATION->[URL=https://dev.1c-bitrix.ru/api_help/main/reference/cmain/setpageproperty.php]SetPageProperty[/URL] соответственно), мы можете поступить так:
возьмем например стандартную страницу index.php:[QUOTE]<?
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php"); ?>
$APPLICATION->SetTitle("Страница");
$APPLICATION->SetPageProperty("SOME_PARAM", "SOME_VALUE");
?>
Контент
);?>
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>[/QUOTE]
В этом случае в файле темы header.php (local/templates/some_theme/header.php) с параметром "SOME_PARAM" условно работать не получится, значения возможно только получить (и вевести) через отложенные функции, например [URL=https://dev.1c-bitrix.ru/api_help/main/reference/cmain/showproperty.php]ShowProperty[/URL]
Если же вам необходимо использовать параметры страницы в условиях PHP, вы можете заменить конструкцию [QUOTE] require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");[/QUOTE]
на[QUOTE]require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");[/QUOTE]
и устанавливать параметры между этими строками
Например, измененный index.php будет выглядеть так:[QUOTE]<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->SetTitle("Страница");
$APPLICATION->SetPageProperty("SOME_PARAM", "SOME_VALUE");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
?>
Контент
);?>
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>[/QUOTE]
и в этом случае в файле темы header.php
будут работать конструкции типа:
[QUOTE]<? if ($APPLICATION->GetPageProperty('SOME_PARAM') === 'SOME_VALUE'): ?>[/QUOTE]
Текущая архитектура не позволяет сделать более красивого и простого решения.
Альтернативой, можно создать тип инфоблока "Страницы", добавить необходимые поля с большим вариантом по типам свойства, и привязать элемент к странице (можно так же через например кастомной свойство)
PS: за 10+ лет могли бы сделать сущности страниц и более элегантное решение для подобных задач