Привет! Такая ситуация. Мне нужно выводить заголовок страницы только на всех страницах кроме нескольких исключений типа главной страницы. Для них я создаю свойство DontShowTitle со значением yes, в PHP это выглядит как:
Это не будет работать принципиально. Так как сначала постороится шаблон, в котором переменная DontShowTitle будет неопределена, а только потом этой переменной присвоится значение yes.
В данной ситуации необходимо, чтобы переменная была определена перед вызовом header - а это уже ручками определяется и никак не через API.
Поиск по форуму может помочь, потому что данную тему уже не один раз поднимали.
Anton Ezhkov пишет: Необходимо использовать технологию отложенных функций
В данном случае, совет Антона совершенно правильный.
Немного поясню. Функция GetProperty возвращает свойство раздела, которое уже известно на момент сборки страницы, и поэтому может быть проверено в шаблоне.
Свойство страницы так проверить не получится, потому что GetPageProperty не является отложенной функцией, а значение свойства страницы вообще может быть установлено из какого-нибудь компонента на странице.
Использование технологиии отложенных функций позволяет произвести проверку свойства страницы. Пример того как организуется подобная схема можно найти в описании функции:
Во! Вспомнил вчера как я решал такую ситуацию! На самом деле все очень просто!
В хедере пишем в нужном месте где ходим выводить какую-то информацию в зависимости от переменной DontShowTitle: <? $APPLICATION->ShowProperty("pageh1"); ?>
далее идем в самый конец футера (для надежности) и вставляем такой год: <? if ($APPLICATION->GetProperty("DontShowTitle") != 'yes') $APPLICATION->SetPageProperty("pageh1", "<h1>".$APPLICATION->ShowTitle()."</h1>"); else $APPLICATION->SetPageProperty("pageh1", ""); ?>
вот и все. гораздо проще чем делать свои отложенные функции.
чтото не выходит каменный цветок с конструкцией типа (например index.php) <? define("MENU","Y"); ?> <? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); text <? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
в header.php - значение константы MENU не поступает. например так: <? if (MENU=="Y") {echo $APPLICATION->GetMenuHtmlEx("menu");} ?> Посоветуйте что еще нужно сделать?
P.S. прочитал все посты по этому вопросу и еще интересует когда же будет введена постобработка для функций setpropertypage и getpropertypage которую обещали ввести в план разработок еще в 2005 году. как бы год уже прошел...
Задача у меня следующая: на странице сверху есть меню и с помощью свойтва страницы "transformation = Y", я хочу сделать чтобы все его пункты были активными, но естественно, что SetPageProperty или SetProperty стоят уже ниже меню... Да, вариант с отложенными функциями хорош, особенно если зафигачить вывод самого меню внутри отложенной функции, но дело в том что хотелось бы использовать это свойство не только для меню, а скажем чтобы убрать правую колонку центральной части шаблона, что как я понял невозможно, т.к. конструкция типа: function Transformation() { global $APPLICATION; return $APPLICATION->AddBufferContent(array(&$APPLICATION, "GetProperty"), "transformation", false); } при наличии такого свойства производит вывод, а не передачу свойства переменной...