Телеграм: @camouf_ru Почта: mihail@bazarow.ru
Лето Осень Зима Весна

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

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

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

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

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

<?$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()); ?>

Guest01.12.2015
Цитата
Екатерина пишет:
Здравствуйте, Михаил! Во-первых, огромное Вам спасибо за Ваш труд - уроки просто замечательные, очень мне помогли! А во-вторых, у меня к Вам вот такой вопрос: мне поручили заниматься сайтом, сделанном на битриксе, и нужно исправить на страничке с контактами почтовый адрес. Я посмотрела - он выводится включаемой областью (файлом). Прошла в этот файл, а там стоит функция: <div class="item"><strong>Почтовый адрес:</strong> <?=$arContacts['CONTACTS_POST_ADDRESS']['VALUE']?></div> И что мне делать, где исправить эту CONTACTS_POST_ADDRESS ума не приложу. Где в битриксе хранятся расшифровки этих функций? Сама я работаю в Joomla, там с этим делом совсем по-другому. В тупике. Не подскажете, Михаил, где копать?
включаемая область лежит в шаблоне?
посмотрите в
Код
/bitrix/templates/ваш_шаблон/lang/ru/
Guest04.02.2016
Я наверное задам тупой вопрос, но все что прочитал не сработало - как вывести название раздела в шаблоне превью новости? (желательно и ссылку на раздел получить). Такая банальная штука а столько проблем мне доставила :(
Михаил Базаров04.02.2016
Цитата
Guest пишет:
Я наверное задам тупой вопрос, но все что прочитал не сработало - как вывести название раздела в шаблоне превью новости? (желательно и ссылку на раздел получить). Такая банальная штука а столько проблем мне доставила
Наверное вот это вам надо
http://camouf.ru/blog-note/1393/?sphrase_id=7558
Guest04.02.2016
Цитата
Михаил Базаров пишет:
Цитата
Guest пишет:
Я наверное задам тупой вопрос, но все что прочитал не сработало - как вывести название раздела в шаблоне превью новости? (желательно и ссылку на раздел получить). Такая банальная штука а столько проблем мне доставила
Наверное вот это вам надо
http://camouf.ru/blog-note/1393/?sphrase_id=7558
Пробовал, ничего не выводит... в чем может быть причина?
Guest05.02.2016
Цитата
Guest пишет:
Цитата
Михаил Базаров пишет:
Цитата
Guest пишет:
Я наверное задам тупой вопрос, но все что прочитал не сработало - как вывести название раздела в шаблоне превью новости? (желательно и ссылку на раздел получить). Такая банальная штука а столько проблем мне доставила
Наверное вот это вам надо
http://camouf.ru/blog-note/1393/?sphrase_id=7558
Пробовал, ничего не выводит... в чем может быть причина?
Fatal error: Cannot use object of type CIBlockResult as array ... /news.list/.default/template.php  

Вот такую ошибку выдает ,если ID писать напрямую. Если писать любые другие цифры (которые не совпадают с id реальных разделов) - ошибок нет и ничего не происходит...
Guest05.02.2016
Заработало, только если оставить первую строчку из приведенного вами по ссылке кода.
CIBlockResult...

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

В общем, тяжело подсказать
eldaki13228.12.2017
Цитата
Михаил Базаров пишет:
Так не подскажу, нужно смотреть сайт изнутри. Но если есть бекап, просто разверните его на своем компьютере и посмотрите- если он актуальный- можно попробовать развернуть на живую
Если отстал по времени, перенисите с поломанного в него, не достающие части, снова заархивируейте и разверните на боевом

В общем, тяжело подсказать
Здравствуйте Михаил, есть нов бекап которой хотелось бы загружать на сайта, проблем что не отображается хедър и поэтому все стили в него не подключается. Архив нету пока что вывести ошибка в строке на файл бекап.php Как могу развернуть в живую, спасибо заранее .
Сергей Бушкевич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
можно ли победить?
Сергей Стефанович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
можно ли победить?
Для каталога, нужно через CSite::InDir
Код
<?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 в ней будет текущая директория компонента
Сергей Стефанович08.01.2018
Цитата
Михаил Базаров пишет:

Код
 <?if (
($APPLICATION->GetCurDir()=='/') ||
(CSite::InDir('/catalog/'))
){?>
   Главная и каталог
<?} else {?>
   Все остальные
<?}?> 
Спасибо, помогли!
valentina.2931.05.2018
А как в шаблоне выводится модуль валюты?
Алексей Клёнин26.10.2018
А как вывести 1 дополнительное поле по ключу?
Или исключить определенные дополнительные поля, при выводе через массив?
Екатерина23.07.2021
Добрый день.
Подскажите, а как в данное выражение добавить условие, если = 0, то под заказ

Количество товара на складе в списке товаров:
<? $ar_res = CCatalogProduct::GetByID($arElement['ID']);     echo "<br>На складе: ";
    print_r($ar_res['QUANTITY']);
    echo " шт.";
?>
Михаил Базаров23.07.2021
Код
if((int)$ar_res['QUANTITY'] > 0) {
   echo 'на складе ' . $ar_res['QUANTITY'] . ' шт.';
} else {
   echo 'Под заказ';
}
Александр03.02.2022
Как в шаблоне детальной страницы сделать следующее:
Необходимо к переменной "DETAIL_TEXT" добавить данные из свойства карточки товара. любое свойство, которое есть в свойствах торгового каталога.

Заранее спасибо.
Web_D18.03.2022
Приветствую. Подскажи пожалуйста.
Хочу сделать описание в карточке товара что бы генерировалось для каждого товара и текст в описании брался из свойств инфоблока.

К примеру:

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

Спасибо.
Михаил Базаров19.03.2022
Цитата

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

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

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


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

Код
<?if (!empty($arResult['DETAIL_TEXT'])){
     echo $arResult['DETAIL_TEXT'];
}else{
      echo $arResult['META_DESCRIPTION'];
} ?>

Цены и сроки на разработку проекта

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

Опросник на разработку:

Вы можете скачать развернутый опросник на разработку, заполнить и выслать на электронную почту.

Скачать опросник.doc

После ознакомления, я смогу задать уточняющие вопросы и оценить проект по стоимости и срокам разработки.

Заказать разработку