Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

GetProperty

00 голосов
7
Привет! Такая ситуация. Мне нужно выводить заголовок страницы только на всех страницах кроме нескольких исключений типа главной страницы. Для них я создаю свойство DontShowTitle со значением yes, в PHP это выглядит как:

Код
$APPLICATION->SetPageProperty("DontShowTitle", "yes");


В шаблоне сайта пишу:
Код
<?
if ($APPLICATION->GetProperty("DontShowTitle") != 'yes') { 
       echo '<h1>';
       $APPLICATION->ShowTitle();
       echo '</h1>';
}
?>


И заголовок всё равно отображается везде. Условие во втором куске кода не срабатывает... Добрые люди, где я туплю? smile:(
спросил 10 Авг, 13 от LeonKing (140 баллов)

7 Ответы

00 голосов
Цитата
Антон Федотов пишет:
if ($APPLICATION->GetProperty("DontShowTitle")

Вероятно, GetPageProperty должно быть?
ответил 10 Авг, 13 от Sage (460 баллов)
00 голосов
Это не будет работать принципиально.
Так как сначала постороится шаблон, в котором переменная DontShowTitle будет неопределена, а только потом этой переменной присвоится значение yes.

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

Поиск по форуму может помочь, потому что данную тему уже не один раз поднимали.
ответил 13 Окт, 13 от salo (840 баллов)
00 голосов
andreya, не, проверял.

Анатолий Зайченок, спасибо smile:)
ответил 14 Янв, 14 от LeonKing (140 баллов)
00 голосов
Необходимо использовать технологию отложенных функций
ответил 01 Май, 14 от BlackEva (820 баллов)
00 голосов
зачем так мучаться?
если только на главной не показывать заголовок, можна так:

Код
if ($APPLICATION->GetCurPage()!= "/index.php"){
echo '<h1>';
       $APPLICATION->ShowTitle();
       echo '</h1>';
} 
ответил 27 Авг, 14 от shippuden (220 баллов)
00 голосов
Цитата
Anton Ezhkov пишет:
Необходимо использовать технологию отложенных функций



В данном случае, совет Антона совершенно правильный.

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

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

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

CMain::AddBufferContent
ответил 02 Янв, 15 от Shadow (820 баллов)
00 голосов
Во! Вспомнил вчера как я решал такую ситуацию!
На самом деле все очень просто!

В хедере пишем в нужном месте где ходим выводить какую-то информацию в зависимости от переменной DontShowTitle:
<? $APPLICATION->ShowProperty("pageh1"); ?>

далее идем в самый конец футера (для надежности) и вставляем такой год:
<?
if ($APPLICATION->GetProperty("DontShowTitle") != 'yes')
$APPLICATION->SetPageProperty("pageh1", "<h1>".$APPLICATION->ShowTitle()."</h1>");
else
$APPLICATION->SetPageProperty("pageh1", "");
?>

вот и все. гораздо проще чем делать свои отложенные функции.
ответил 21 Апр, 15 от salo (840 баллов)

Похожие вопросы

0 голосов
1 ответ
спросил 20 Апр, 14 от ufoman (390 баллов)
0 голосов
4 ответов
спросил 27 Апр, 13 от Snezhka (2,240 баллов)