Битрикс – изменить footer.php используя переменную из компонента

В этой статье вы узнаете как правильно задавать “глобальные переменные”, используя api Битрикса.

Как в Битриксе вывести информацию в футере сайта используя компонент

Представим классическую ситуацию – вы разместили в footer.php вашего шаблона какой-то блок, который будет отображаться только на определенных страницах. При этом, этот блок не входит в код компонента (по какой-то причине 🙂 ).

Создаем в карточке товара (или в шаблоне новость детально) файл component_epilog.php, если он еще не создан.
А сейчас внимание, черный ящик говнокод:

<?
GLOBAL $is_cart;
$is_cart = true;

Во-первых, давайте приучим себя, что в файлах нужно первой строкой писать:

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

А во-вторых, используйте глобальные переменные таким образом лишь в крайнем случае. Для каких-то целей они конечно пригодны, но тут мы будем использовать $APPLICATION->SetPageProperty :

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?
$APPLICATION->SetPageProperty("SHOW_FOOTER_BLOCK", "Y");

Значение которое мы передали – Y.

Шаг 2. Переходим в footer.php вашего шаблона (а когда был первый шаг? 🙂 )
Пишем перед нашим блоком или компонентом, который мы будем выводить:

$showBlock = $APPLICATION->GetPageProperty("SHOW_FOOTER_BLOCK","N");  
if ($showBlock == "Y") { 
   echo 'DONE!';
}

В этот раз мы использовали GetPageProperty. Второй параметр, как некоторые из вас догадались (почти никто 😉 ) это значение по умолчанию, то есть “N” можно использовать как “по умолчанию не отображать. С условиями я думаю вы разберетесь.

Что касается примера с глобальными переменными, то тут картина выглядела бы так:

<?
GLOBAL $is_cart; 
if ($is_cart)  
  echo "мы в карточке";  
else  
  echo "Мы где то в другом месте";

Данный код протестировал, работает как первый так и второй вариант, но я вам советую использовать именно API bitrix, т.к. вы работаете именно в этой системе управления сайтом.

Надеюсь у вас всё получилось.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь