ragnar_ok
@ragnar_ok

Как проверить существует ли свойство страницы (отложенные функции)?

Даны русскоязычный и аналогичный англоязычный инфоблок "Новости". Элементы этих инфоблоков связаны свойством "Привязка к элементу инфоблока". Нужно отобразить в шаблоне компонента bitrix:main.site.selector ссылку на связанный элемент (компонент вызывается в header.php).

Устанавливаю свойство страницы в component_epilog.php со значением DETAIL_PAGE_URL связанного элемента:
if (!empty($arResult['PROPERTY_NEWS_ID_DETAIL_PAGE_URL'])) { // свойство "Привязка к элементу инфоблока"
    $APPLICATION->SetPageProperty('link', $arResult['PROPERTY_NEWS_ID_DETAIL_PAGE_URL']);
}


Отображаю в template.php bitrix:main.site.selector свойство: $APPLICATION->ShowProperty('link');

Ответьте на вопросы:
  1. Возможно ли проверить внутри bitrix:main.site.selector существует ли свойство страницы link? Если существует, то выводить его содержимое, иначе выводить ссылку на главную страницу иноязычного сайта (например, en/ для англоязычной языковой версии).
  2. Допускается ли использование $APPLICATION->ShowProperty() в template.php кэшируемого компонента?
  • Вопрос задан
  • 851 просмотр
Решения вопроса 1
@PetrPo
перенеси компонент в футер))
<?
ob_start();
	// вызов компонента
    $mainSiteSelectorComponent = ob_get_contents();
ob_end_clean();
$APPLICATION->AddViewContent('mainSiteSelectorComponent', $mainSiteSelectorComponent);
?>


В хедере, где выводил компонент
<?$APPLICATION->ShowViewContent('mainSiteSelectorComponent');?>


Дальше варианта 2:
1. Впринципе, как ты правильно говорил шаблон этого компонент не кешируется, так что можешь свободно получить значение свойста в нем
2. Передать значение в параметр компонента, это если бы шаблон был кешируемым

Получить свойство
$APPLICATION->GetProperty('link');

UPD
соответсвенно можешь и проверку вставить
$propertyLink = $APPLICATION->GetProperty('link');
if($propertyLink) {

}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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