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

Правка шаблона компонента - как правильно ?

00 голосов
6
имеем
Код
...
<title><?$APPLICATION->ShowTitle()?></title>
...
<h1><?=$APPLICATION->ShowTitle();?></h1>
...


Собственно хочу разделить оное - как положено.
Для сих целей для нужных мне инфоблоков завожу пользовательское св-во "page_title"
(обращаю внимание - не для всех инфоблоков)
И в соответствующих компонентах, его перекидываю в шаблон через
$APPLICATION->SetPageProperty("page_title", $arResult['ITEMS']['PROPERTY_XXX_VALUE']);
в шаблоне планирую выводить
$APPLICATION->ShowProperty("page_title");
НО !!!
если свойство не задано, хотелось бы оставить $APPLICATION->ShowTitle()

так будет нормально ? или задачу как-то иначе лучше реализовать ?
Код
$title = $APPLICATION->ShowProperty("page_title");
if (!empty($title)) echo $title; else $APPLICATION->ShowTitle();


P.S.
и ещё мини-вопросик: как получить ID текущего сайта ?
(для каждого сайта - тайтлы и метатеги нужно выводить разные)
спросил 09 Окт, 13 от Frejho (580 баллов)

6 Ответы

00 голосов
реализация последнего так ?
Код
if (strpos($_SERVER["HTTP_HOST"], 'domain2.ru')!==false) { ..... }
ответил 26 Окт, 13 от Frejho (580 баллов)
00 голосов
$APPLICATION->ShowProperty('page_title') немного не то - возвращает NULL
попытался в шаблоне использовать
$APPLICATION->GetProperty('page_title') - даёт false
$APPLICATION->GetPageProperty('page_title') - тоже false
хотя тут же $APPLICATION->ShowProperty('page_title') нормально выводит свойство 'page_title'
что не так?
ответил 29 Янв, 14 от Frejho (580 баллов)
00 голосов
Цитата
Алексей Вдовин пишет:
и ещё мини-вопросик: как получить ID текущего сайта

Константа SITE_ID. Описана в документации.
Цитата
Алексей Вдовин пишет:
хотя тут же $APPLICATION->ShowProperty('page_title') нормально выводит свойство 'page_title' что не так?

Ознакомьтесь с информацией о работе отложенных функций. Что касается Вашего вопроса, то можно вот так:
Код
<title><? $APPLICATION->ShowTitle(false); ?></title>
<h1><? $APPLICATION->ShowTitle(); ?></h1>

Цитата
Алексей Вдовин пишет:
И в соответствующих компонентах, его перекидываю в шаблон через $APPLICATION->SetPageProperty("page_title", $arResult['ITEMS']['PROPERTY_XXX_VALUE']); в шаблоне планирую выводить $APPLICATION->ShowProperty("page_title");

Будет работать только без включенного кеширования. Вам сюда и сюда.
ответил 18 Май, 14 от Pomnep (13,960 баллов)
00 голосов
За константы спасибо - не там искал я айдишник :)

по отложенным функциям в примере
Код
Данный код не будет работать по той причине, что все отложенные функции выполняются в самом конце страницы, в служебной части эпилога. 

а вот как сделать правильно - не написали :)

result_modifier.php работает с шаблоном конкретного компонента - мне к сожалению не подходит
component_epilog.php тоже мимо, по этой же причине

мне нужен какой то метод, который будет отрабатываться ПЕРЕД этим
"В конце страницы все отложенные функции выполняются одна за другой и результаты их выполнения вставляются в отведенные для этого места внутри фрагментированного контента страницы."

я бы поставил в тайтл только один вызов
<title>$APPLICATION->ShowProperty("page_title");</title>

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

ЕСЛИ "page_title" не задано ТОГДА "page_title" = "title"

но к сожалению незнаю куда именно :(
ответил 15 Сен, 14 от Frejho (580 баллов)
00 голосов
Вам как раз сочетание result_modifier.php и component_epilog.php
ответил 20 Янв, 15 от Pomnep (13,960 баллов)
00 голосов
хм ... пока не понимаю КАК ? .... буду морщить извилины

а пока остановился на очень простом решении
<title><? $APPLICATION->ShowTitle(); $APPLICATION->ShowProperty('page_title');?></title>
вот так - без всяких проверок :)
просто если нужно в 'page_title' загонять необходимо "дополнение" к тайтлу
а <h1><? $APPLICATION->ShowTitle(); ?></h1> так и оставить в покое

в любом случае - большое спасибо за помощь
ответил 05 Май, 15 от Frejho (580 баллов)

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

0 голосов
3 ответов
0 голосов
3 ответов
спросил 02 Март, 14 от zyprexa (100 баллов)
0 голосов
2 ответов
0 голосов
5 ответов
0 голосов
7 ответов