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

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

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

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

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

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

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

Заранее спасибо.
Web_D 18.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'];
} ?>
Денис 14.09.2022
Добрый день! Подскажите пожалуйста, как можно реализовать вывод из одного раздела детальных страниц но с разными шаблонами?
Михаил Базаров 14.09.2022
Цитата
Денис написал:
Добрый день! Подскажите пожалуйста, как можно реализовать вывод из одного раздела детальных страниц но с разными шаблонами?

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

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

Тут такая задачка подвернулась.
Готовый код для element.php комплексного каталога
Код
// Вариант шаблона из свойсва карточки
$elProps = CIBlockElement::GetList (
    false,
    Array(
          'IBLOCK_ID' => $arParams['IBLOCK_ID'],
          'CODE' => $arResult['VARIABLES']['ELEMENT_CODE']),
    false,
    false,
    Array(
        'ID',
        'PROPERTY_VARIANT_VIDA_KARTOCHKI'
    )
);
while($elProp = $elProps->Fetch())
{
    $varTemplate = $elProp['PROPERTY_VARIANT_VIDA_KARTOCHKI_VALUE'];
}
if(!$varTemplate) {
    $template = '.default';
}
if($varTemplate == 1) {
    $template = 'var_1';
}
if($varTemplate == 2) {
    $template = 'var_2';
}
// end Вариант шаблона из свойства карточки

$elementId = $APPLICATION->IncludeComponent(
    'bitrix:catalog.element',
    $template, // включаем нужный шаблон
    $componentElementParams,
    $component
);
$GLOBALS['CATALOG_CURRENT_ELEMENT_ID'] = $elementId;


- В свойстве VARIANT_VIDA_KARTOCHKI список с вариантами шаблона (просто 1 и 2).
- Получаем VALUE этого свойства.
- В $template передаем нужный шаблон.
- Применяем в bitrix:catalog.element
Денис 01.10.2022
Большое Спасибо!
Гость 17.10.2022
Добрый вечер. Возможно ли сделать выборку шаблона детальной страницы но на компоненте новостей ?
Михаил Базаров 18.10.2022
Цитата
Гость написал:
Добрый вечер. Возможно ли сделать выборку шаблона детальной страницы но на компоненте новостей ?

Да, точно также: через свойство новости, но применяете в комплексном шаблоне новостей, в файле detail.php