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

10.04.2020

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

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

 
<?$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
Яндекс.Метрика