Привет! Такая ситуация. Мне нужно выводить заголовок страницы только на всех страницах кроме нескольких исключений типа главной страницы. Для них я создаю свойство DontShowTitle со значением yes, в PHP это выглядит как:
Это не будет работать принципиально. Так как сначала постороится шаблон, в котором переменная DontShowTitle будет неопределена, а только потом этой переменной присвоится значение yes.
В данной ситуации необходимо, чтобы переменная была определена перед вызовом header - а это уже ручками определяется и никак не через API.
Поиск по форуму может помочь, потому что данную тему уже не один раз поднимали.
зачем так мучаться? если только на главной не показывать заголовок, можна так:
Код
if ($APPLICATION->GetCurPage()!= "/index.php"){
echo '<h1>';
$APPLICATION->ShowTitle();
echo '</h1>';
}
...А це під помідори! (из анекдота)
Администратор
Сообщений: Баллов: 237Регистрация: 30.12.2002
0
10.08.2006 13:16:29
Цитата
Anton Ezhkov пишет: Необходимо использовать технологию отложенных функций
В данном случае, совет Антона совершенно правильный.
Немного поясню. Функция GetProperty возвращает свойство раздела, которое уже известно на момент сборки страницы, и поэтому может быть проверено в шаблоне.
Свойство страницы так проверить не получится, потому что GetPageProperty не является отложенной функцией, а значение свойства страницы вообще может быть установлено из какого-нибудь компонента на странице.
Использование технологиии отложенных функций позволяет произвести проверку свойства страницы. Пример того как организуется подобная схема можно найти в описании функции:
Во! Вспомнил вчера как я решал такую ситуацию! На самом деле все очень просто!
В хедере пишем в нужном месте где ходим выводить какую-то информацию в зависимости от переменной DontShowTitle: <? $APPLICATION->ShowProperty("pageh1"); ?>
далее идем в самый конец футера (для надежности) и вставляем такой год: <? if ($APPLICATION->GetProperty("DontShowTitle") != 'yes') $APPLICATION->SetPageProperty("pageh1", "<h1>".$APPLICATION->ShowTitle()."</h1>"); else $APPLICATION->SetPageProperty("pageh1", ""); ?>
вот и все. гораздо проще чем делать свои отложенные функции.
студия Leveret
Администратор
Сообщений: Баллов: 1849Регистрация: 05.08.2005
Epic fail - сказать "это так просто" и не суметь сделать
0
13.08.2006 15:38:22
Не знаю. Мне проще функцию было написать, когда разобрался в механизме.
Не надо сверлить зубы через задний проход дрелью от Сваровски
Администратор
Сообщений: Баллов: 237Регистрация: 30.12.2002
0
15.08.2006 11:46:01
Цитата
Анатолий Зайченок пишет: гораздо проще чем делать свои отложенные функции.
Ну не так уж это и сложно...
Код
<?
function MyShowRow($text)
{
global $APPLICATION;
if($APPLICATION->GetProperty('PROPERTY1')=='Y')
echo "<tr><td>".htmlspecialchars($text)."</td></tr>";
}
?>
Непосредственно вызов функции:
<table><?$APPLICATION->AddBufferContent("MyShowRow", "Hello!");?></table>