Телеграм: @camouf_ru Почта: mihail@bazarow.ru

Основные функции вывода в шаблонах Битрикс

Просмотров: 153291

Знаю, что все их знают. Но иногда не бывает лишним собрать все самое используемое в одну кучку. Ведь у каждого бывают моменты тупости, когда забывается последовательность синтаксиса.

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

В основном шаблоне:

<?$APPLICATION->ShowTitle()?> - собственно вывод тайтла в основном шаблоне сайта

<?$APPLICATION->ShowHead()?> - подключение для вывода в шаблоне сайта основных полей тега : мета-теги Content-Type, robots, keywords, description; стили CSS; скрипты

<?$APPLICATION->ShowPanel();?> - выводит панель управления администратора

<?=SITE_TEMPLATE_PATH?> - подставляет путь к шаблону

<?$APPLICATION->ShowTitle(false);?> - заголовок (в h1 например использовать)

ShowHead разбить на составляющие:

<meta http-equiv="Content-Type" content="text/html; charset=<?=LANG_CHARSET;?>" /> - Установка кодировки сайта

<? $APPLICATION->ShowMeta("keywords") ?> - Вывод мета тега keywords

<? $APPLICATION->ShowMeta("description") ?> - Вывод мета тега description

<? $APPLICATION->ShowCSS(); ?> - Подключение основных файлов стилей template_styles.css и styles.css

<? $APPLICATION->ShowHeadStrings() ?> - Отображает специальные стили, JavaScript

<? $APPLICATION->ShowHeadScripts() ?> - Вывода служебных скриптов


В шаблонах компонентов:

<img src="<?=$arSection["PICTURE"]["SRC"]?>" title="<?=$arSection["NAME"]?>" border="0"/> - картинка раздела инфоблока.

<?=$arSection["DESCRIPTION"]?> - описание раздела инфоблока

<?echo $arItem["NAME"]?> - название

<?echo $arItem["DETAIL_PAGE_URL"]?> - ссылка на детальную новость (статью)

<?echo $arItem["PREVIEW_TEXT"];?> - текст анонса

<?echo $arResult["DETAIL_TEXT"];?> - детальный текст

<?=$arItem["PREVIEW_PICTURE"]["SRC"]?> - изображение анонса

<?=$arItem["DETAIL_PICTURE"]["SRC"]?> - изображение детальное

<?=$arResult['DISPLAY_ACTIVE_FROM']?> -дата начала активности

<?=$arItem['DATE_CREATE']?> -Дата создания элемента инфолока

Полезные условия

Если картинки нет- то вывести "нет картинки"

<?if (strlen($arItem["DETAIL_PICTURE"]["SRC"])>0):?>
<img src="<?=$arItem["DETAIL_PICTURE"]["SRC"]?>"/>
<?else:?>
нет картинки
<?endif?>

Включаемая область в режиме php.

<?
$APPLICATION->IncludeFile(
SITE_DIR."include/flash.php",
Array(),
Array("MODE"=>"php")
);
?>

Количество товара на складе в списке товаров:

<?
$ar_res = CCatalogProduct::GetByID($arElement['ID']);
echo "<br>На складе: ";
print_r($ar_res['QUANTITY']);
echo " шт.";
?>

В подробной карточке товара, с подменой цифрового значения на выражение:

<?
$quantity= $arElement[CATALOG_QUANTITY];
if (!$quantity){?>нет<?}
if ($quantity!=0 && $quantity<=10){?>мало<?}
if ($quantity!=0 && $quantity>10 && $quantity<=100){?>достаточно<?}
if ($quantity>100){?>много
<?}?><?=$arResult[CATALOG_QUANTITY];?>

Вывести название раздела внутри элемента. Например в детальной новости, указать к какому из разделов она относится:

<?echo $arResult["SECTION"]["PATH"][0]["NAME"]?>

Вывести меню нужного типа в шаблоне битрикс

<?
$APPLICATION->IncludeComponent("bitrix:menu", "top_menu", array(
"ROOT_MENU_TYPE" => "top",
//В данном случаее меню типа top
"MENU_CACHE_TYPE" => "A",
"MENU_CACHE_TIME" => "3600",
"MENU_CACHE_USE_GROUPS" => "Y",
"MENU_CACHE_GET_VARS" => array(
),
"MAX_LEVEL" => "1",
"CHILD_MENU_TYPE" => "left",
"USE_EXT" => "N",
"DELAY" => "N",
"ALLOW_MULTI_SELECT" => "N"
),
false
);
?>

Подключение веб мессенджера в шаблоне сайта

<?$APPLICATION->IncludeComponent("bitrix:im.messenger", "", Array(), null, array("HIDE_ICONS" => "N"));?>

Вывести текст описания свойства инфоблока. Например, в форме добавления/редактирования элемента инфоблока для пользователей:

<?=$arResult["PROPERTY_LIST_FULL"][$propertyID]["HINT"]?>

Вывести текущую дату из установленной на сервере

<? echo date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), time()); ?>

Денис 15.09.2022
Спасибо!
Михаил Базаров 14.09.2022
Цитата
Денис написал:
Добрый день! Подскажите пожалуйста, как можно реализовать вывод из одного раздела детальных страниц но с разными шаблонами?

Думаю, только через свойство элемента. Задать что-то типа "Вариант шаблона" со списком 1, 2, 3 и так далее
Проверять что выбрано в element.php и включать нужный шаблон.
Денис 14.09.2022
Добрый день! Подскажите пожалуйста, как можно реализовать вывод из одного раздела детальных страниц но с разными шаблонами?
Михаил Базаров 19.03.2022
Цитата

Web_D написал:
Приветствую. Подскажи пожалуйста.
Хочу сделать описание в карточке товара что бы генерировалось для каждого товара и текст в описании брался из свойств инфоблока.
К примеру:
Купить #название_товара#, самый лучший товар #код_свойства# формы, имеер размеры #код_свойства#, и обладает преимуществами #код_свойства#.
Спасибо.

Можно сгененировать эту строку в настройках инфоблока, как описание карточки товара (на вкладке SEO)
А в самом шаблоне вывести:

Код
<?= $arResult['META_DESCRIPTION']?>


Для полного фен шуя, можно проверять наличие нормального описания, если его нет- выводить сгенерированное.

Код
<?if (!empty($arResult['DETAIL_TEXT'])){
     echo $arResult['DETAIL_TEXT'];
}else{
      echo $arResult['META_DESCRIPTION'];
} ?>
Web_D 18.03.2022
Приветствую. Подскажи пожалуйста.
Хочу сделать описание в карточке товара что бы генерировалось для каждого товара и текст в описании брался из свойств инфоблока.

К примеру:

Купить #название_товара#, самый лучший товар #код_свойства# формы, имеер размеры #код_свойства#, и обладает преимуществами #код_свойства#.

Спасибо.
Александр 03.02.2022
Как в шаблоне детальной страницы сделать следующее:
Необходимо к переменной "DETAIL_TEXT" добавить данные из свойства карточки товара. любое свойство, которое есть в свойствах торгового каталога.

Заранее спасибо.
Михаил Базаров 23.07.2021
Код
if((int)$ar_res['QUANTITY'] > 0) {
   echo 'на складе ' . $ar_res['QUANTITY'] . ' шт.';
} else {
   echo 'Под заказ';
}
Екатерина 23.07.2021
Добрый день.
Подскажите, а как в данное выражение добавить условие, если = 0, то под заказ

Количество товара на складе в списке товаров:
<? $ar_res = CCatalogProduct::GetByID($arElement['ID']);     echo "<br>На складе: ";
    print_r($ar_res['QUANTITY']);
    echo " шт.";
?>
Алексей Клёнин 26.10.2018
А как вывести 1 дополнительное поле по ключу?
Или исключить определенные дополнительные поля, при выводе через массив?
valentina.29 31.05.2018
А как в шаблоне выводится модуль валюты?
Сергей Стефанович 08.01.2018
Цитата
Михаил Базаров пишет:

Код
 <?if (
($APPLICATION->GetCurDir()=='/') ||
(CSite::InDir('/catalog/'))
){?>
   Главная и каталог
<?} else {?>
   Все остальные
<?}?> 
Спасибо, помогли!
Михаил Базаров 03.01.2018
Цитата
Сергей Стефанович написал:
подключение скриптов из папки шаблона
<? $this->addExternalJS($this->__folder."/form_script.js"  ;?>
<? $this->addExternalCss($this->__folder."/form_script.css"  ;?>

Вот так аккуратнее
Код
<?
$templateFolder = &$this->GetFolder();
?>
И подставлять переменную $templateFolder в ней будет текущая директория компонента
Михаил Базаров 03.01.2018
Цитата
Сергей Бушкевич написал:
хочу сделать разную разметку на некоторых страницах сайта. к примру на главной и в каталоге хочу .col-md-12, а на остальных .col-md-8+col-md-4.
но никак не получается.
<?if($APPLICATION->GetCurDir()==SITE_DIR || $APPLICATION->GetCurDir()==SITE_DIR.'catalog/' ):?>на главной и в каталоге<?else:?>на остальных<?endif;?>>

данная функция на главной и на корневой странице раздела каталог делает col-md-12, а вот внутренние страницы каталога всё равно col-md-8+col-md-4
можно ли победить?
Для каталога, нужно через CSite::InDir
Код
<?if (
($APPLICATION->GetCurDir()=='/') ||
(CSite::InDir('/catalog/'))
){?>
   Главная и каталог
<?} else {?>
   Все остальные
<?}?>
Сергей Стефанович 03.01.2018
Кстати хотел бы расширить эту запись несколькими полезными функциями.


//инклюд
<?$APPLICATION->IncludeFile(SITE_DIR."include/file.php", Array(), Array("MODE" => "html", "NAME" => "заголовок"  ;)  );?>
//инклюд2
<?$APPLICATION->IncludeFile(SITE_DIR."include/file.php"  ;)  ;?>


подключение скриптов из папки шаблона
<? $this->addExternalJS($this->__folder."/form_script.js" ;) ;?>
<? $this->addExternalCss($this->__folder."/form_script.css" ;) ;?>
Сергей Бушкевич 03.01.2018
хочу сделать разную разметку на некоторых страницах сайта. к примру на главной и в каталоге хочу .col-md-12, а на остальных .col-md-8+col-md-4.
но никак не получается.
<?if($APPLICATION->GetCurDir()==SITE_DIR || $APPLICATION->GetCurDir()==SITE_DIR.'catalog/' ):?>на главной и в каталоге<?else:?>на остальных<?endif;?>>

данная функция на главной и на корневой странице раздела каталог делает col-md-12, а вот внутренние страницы каталога всё равно col-md-8+col-md-4
можно ли победить?
eldaki132 28.12.2017
Цитата
Михаил Базаров пишет:
Так не подскажу, нужно смотреть сайт изнутри. Но если есть бекап, просто разверните его на своем компьютере и посмотрите- если он актуальный- можно попробовать развернуть на живую
Если отстал по времени, перенисите с поломанного в него, не достающие части, снова заархивируейте и разверните на боевом

В общем, тяжело подсказать
Здравствуйте Михаил, есть нов бекап которой хотелось бы загружать на сайта, проблем что не отображается хедър и поэтому все стили в него не подключается. Архив нету пока что вывести ошибка в строке на файл бекап.php Как могу развернуть в живую, спасибо заранее .
Михаил Базаров 27.12.2017
Так не подскажу, нужно смотреть сайт изнутри. Но если есть бекап, просто разверните его на своем компьютере и посмотрите- если он актуальный- можно попробовать развернуть на живую
Если отстал по времени, перенисите с поломанного в него, не достающие части, снова заархивируейте и разверните на боевом

В общем, тяжело подсказать
eldaki132 27.12.2017
Михаил Базаров, Здравствуйте Михаил, не понятно как смог сделать, но на сайт не отображается header и footer. Практически только контент отображается, без стили без ничего. Сможете расказат как поправит сайт. Тоже бекап нет. Есть ли функция вернут в сайт в определено положение по времени ? Вот и самом сайт idinarog.ru
Павел Лемак 24.10.2017
Михаил Базаров, в исходном коде, увы, нет, не нашёл. Сайт www.promart.by. Например, на странице http://promart.by/catalog/rozetki/viko_carmen/ вверху и внизу есть описание, а вот почему его нет в мобильном шаблоне, так и не разобрались, - хотя функция description в мобильном есть и, например, при изменении страницы - описание тоже есть, но только разве что в редакторе.
Михаил Базаров 12.10.2017
Цитата
Павел Лемак написал:
Добрый день! Ковыряем купленный шаблон мобильной версии, и не можем найти описание раздела. В десктопной-то оно есть, на любой странице каталога (категории товаров) идёт описание. А вот в мобильной его нету. Пробовали запихивать в шаблон <?=$arResult['DESCRIPTION']?> - кэш чистили, не работает, в чём может быть проблема?..
Может быть в верстке? Как то стилями перекрывается описание (например, каким-то образом попадает в display:none), посмотрите: есть ли текст описания в исходном коде

Работы из портфолио

В портфолио не публикуются работы, доля моего участия в которых менее 80%.
Часто обращаются за доработками уже существующих проектов или реализацией не стандратного функционала на готовых сайтах.