Шпаргалка по самым популярным функциям 1С-Битрикс

Собрал частые вопросы по Битриксу на одной странице, чтобы легко было найти

Проверка пользователя - администратор он или нет

global $USER;
if ($USER->IsAdmin()) echo "Вы администратор!";

Информация о пользователе

$rsUser = CUser::GetByID(123);
$arUser = $rsUser->Fetch();
echo $arUser["ADMIN_NOTES"];

Информация о файле

$arFile = CFile::GetFileArray($arElement["PREVIEW_PICTURE"]);
if($arFile)
	echo '<img src="'.$arFile["SRC"].'" />';

Нарезать фото "на лету"

Полезность этой функции в том, что фото нарезается 1 раз, а потом нарезанное в нужном размере фото хранится на сервере. При повторном запуске функции нарезка не происходит и ресурсы не используются.

Таким образом мы можем показывать на сайте фото в разном размере, что сложно сделать изначально нстройками инфо-блоков.

$resizedImage = CFile::ResizeImageGet(123, array('width'=>200, 'height'=>150), BX_RESIZE_IMAGE_PROPORTIONAL, false );
if($arFile)
	echo '<img src="'.$resizedImage["src"].'" />';

Возможные варианты:
BX_RESIZE_IMAGE_EXACT
BX_RESIZE_IMAGE_PROPORTIONAL
BX_RESIZE_IMAGE_PROPORTIONAL_ALT

Настройки сайта

$rsSites = CSite::GetByID(SITE_ID);
$arSite = $rsSites->Fetch();

Вывести записи инфоблока

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

$arSelect = Array(
	"ID", 
	"IBLOCK_ID", 
	"NAME", 
	"DATE_ACTIVE_FROM",
	"PROPERTY_*"
);
//IBLOCK_ID и ID обязательно должны быть указаны
 
$arFilter = Array(
	"IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", 
	"ACTIVE"=>"Y"
);

$res = CIBlockElement::GetList(
	Array(), 
	$arFilter, 
	false, 
	Array("nPageSize"=>50), 
	$arSelect
);

while($ob = $res->GetNextElement()){ 
	$arFields = $ob->GetFields();  
	//print_r($arFields);
	$arProps = $ob->GetProperties();
	//print_r($arProps);
}

Сохранение свойств инфоблока

Сохранять свойства можно одной из четырёх функций:
CIBlockElement::Update //обновление полей и свойств элемента
CIBlockElement::SetPropertyValueCode // обновление одного свойства
CIBlockElement::SetPropertyValues // обновление одного или всех свойств
CIBlockElement::SetPropertyValuesEx // обновление произвольного количества свойств элемента
Свойство типа файл сохраняется по другому - не надо указывать VALUE
$ELEMENT['MORE_PHOTO'] = array(
	CFile::MakeFileArray(…);
);

Информация о заказе

use Bitrix\Sale;
\Bitrix\Main\Loader::includeModule('sale');			
$order = Sale\Order::loadByAccountNumber('N44EM3'); // получаем заказ по коду
$order = Sale\Order::load(7); // получаем заказ по номеру

// публичную ссылку на заказ можно получить так:
if (Sale\Helpers\Order::isAllowGuestView($order))
$publicLink = Sale\Helpers\Order::getPublicLink($order);

// массив доступных полей
$ar = $order->getAvailableFields();

// сохранение заказа
$order->setField('STATUS_ID', 'N');
$order->save();

Шаблон

<? $APPLICATION->ShowTitle(); ?> // заголовок
<? $APPLICATION->ShowHead(); ?> // вывод основных тегов (Content-Type, robots, keywords, description; стили CSS; скрипты javascript)
<? $APPLICATION->ShowPanel(); ?> // выводит панель управления
<?=SITE_TEMPLATE_PATH?> // путь к шаблону

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

// Подключение файла
<?$APPLICATION->IncludeFile(SITE_DIR . "include/fileName.php",Array(),Array("MODE" => "html"));?>
// Подключение css, js и jquery <?$APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH . "/css/style.css");?> <?$APPLICATION->AddHeadScript(SITE_TEMPLATE_PATH . "/js/script.js");?> <?CJSCore::Init(array("jquery"));?> // Мета-теги по отдельности <? $APPLICATION->ShowMeta("description") ?> <? $APPLICATION->ShowMeta("keywords") ?> <? $APPLICATION->ShowCSS(); ?> // template_styles.css и styles.css <? $APPLICATION->ShowHeadStrings() ?> // специальные стили, JavaScript <? $APPLICATION->ShowHeadScripts() ?> // служебные скрипты

Поля элемента в шаблоне

<?=$arItem["NAME"]?> // название
<?=$arItem["DETAIL_PAGE_URL"]?> // ссылка
<?=$arItem["PREVIEW_TEXT"];?> // анонс
<?=$arResult["DETAIL_TEXT"];?> // детальное описание
<?=$arItem["PREVIEW_PICTURE"]["SRC"]?> // изображение для анонса
<?=$arItem["DETAIL_PICTURE"]["SRC"]?> // изображение
<?=$arResult['DISPLAY_ACTIVE_FROM']?> // дата начала активности
<?=$arItem['DATE_CREATE']?> // дата создания
<?=$arResult["SECTION"]["PATH"][0]["NAME"]?> // название раздела элемента
// проверка на наличие фото <?if (strlen($arItem["DETAIL_PICTURE"]["SRC"])>0):?> <img src="<?=$arItem["DETAIL_PICTURE"]["SRC"]?>"/> <?else:?> изображения нет <?endif?>

Подключить файл

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

Вывод меню

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

Пример простой страницы

<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Заголовок страницы"); ?>
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>

Пример страницы без дизайна

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php");

Вывод данных из справочника

Выводим массив элемента highload-блока на примере вывода данных расширенных настроек сайта. Так удобно хранить настройки сайтов, если их много в панели администратора.

// подключаем пространство имен класса HighloadBlockTable
use Bitrix\Highloadblock\HighloadBlockTable as HLBT;

// id highload-инфоблока
const MY_HL_BLOCK_ID = 1;

//подключаем модуль highloadblock
CModule::IncludeModule('highloadblock');

//Функция получения экземпляра класса
function GetEntityDataClass($HlBlockId) {
    if (empty($HlBlockId) || $HlBlockId < 1)
    {
        return false;
    }
    $hlblock = HLBT::getById($HlBlockId)->fetch();   
    $entity = HLBT::compileEntity($hlblock);
    $entity_data_class = $entity->getDataClass();
    return $entity_data_class;
}

$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID);
$arFilter = Array(
   Array(
      "LOGIC"=>"OR",
      Array(
         "UF_SITE"=> SITE_SERVER_NAME
      ),
      Array(
         "UF_SITE"=> 'www.'.SITE_SERVER_NAME
      ),
      Array(
         "UF_SITE"=> str_replace('www.','',SITE_SERVER_NAME)
      )
   )
);
$rsData = $entity_data_class::getList(array(
   'select' => array('*'),
   'filter' => $arFilter
));

while($el = $rsData->fetch()){
	$site_info = $el;
}

Возврат к списку


Облако тегов