Разработка компонента для CMS Bitrix

10.04.2020 10:00:09

Если встроенного функционала Битрикс не хватает, то всегда можно написать свой компонент, это позволит решить, пожалуй, любую вставшую перед вами задачу.

Компоненты могут очень сильно отличаться друг от друга, в зависимости от их задачи. В данной статье будет описан минимальный набор, который позволит интегрировать код в Битрикс и вызывать его стандартным

 
<?$APPLICATION->IncludeComponent(

Для начала нужно создать папку с названием компании (например, /bitrix/components/socompany) в ней будут лежать все написанные вами компоненты, поэтому стоит выбрать уникальное название, это поможет при переносе наработок на другой сайт.

В этой папке нужно создать еще одну, с названием компонента, например, /bitrix/components/socompany/item.links.

В корне этой папки должен лежать файл component.php - это точка входа в компонент, т.к. при вызове

 
<?$APPLICATION->IncludeComponent("socompany:item.links",

начнется выполнение кода из этого файла.

Пример кода:

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

$id = $arParams['arResult']['ID'];
$IBLOCK_ID = $arParams['arResult']['IBLOCK_ID'];

$items = GetIBlockElementList($IBLOCK_ID, false, Array("SORT"=>"ASC"));

$arResult['items'] = array();

$i = 0;
while ($row = $items->GetNext())
{
  $sTitle = $row['NAME'];

  $arResult['items'][$i] = array(
    'url' => $row['DETAIL_PAGE_URL'],
    'name' => $sTitle,
    'id' => $row['ID'],
    'price' => (int) CPrice::GetBasePrice($row['ID'])['PRICE'],
  );

  $i++;
}

$this->IncludeComponentTemplate();

Теперь нужно создать вид по умолчанию, создаем директории и файл: /bitrix/components/socompany/item.links/templates/.default/template.php

Пример вывода одного элемента из сформированного в component.php массива:

 
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
?>
	<div>
		<a href="<?=$arResult['items'][0]['url']?>">
			<?=$arResult['items'][0]['name']?>
		</a>
	</div>
<?

При вызове компонента, ему можно передавать любые данные, например:

 
<?
$APPLICATION->IncludeComponent(
	'socompany:item.links', 
	'', 
	array(
		'test1' => 'Test1',
		'test_2' => 2
	),
	false
);
?>

Тогда в component.php они будут доступны через $arParams :

 
echo '<pre>';
    print_r($arParams);
echo '</pre>';

 
    [test1] => 'test1'
    [test_2] => 2


Категории: Bitrix CMS
Яндекс.Метрика