/* @var array Список контактов */
$arContacts = array();
if ( \Bitrix\Main\Loader::IncludeModule('crm') )
{
/* @var array Сортировка полученного списка контактов */
$arOrder = array('ID' => 'DESC');
/* @var array Условия получаемого списка контактов */
$arFilter = array(
"NAME" => "Имя",
"LAST_NAME" => "Фамилия",
'CHECK_PERMISSIONS' => 'N' // Данный ключ необходим для того чтобы получить всех пользоватей,
// иначе, будет найден только если ответственным за него является тот,
// под кем запускается скрипт в битриксе
);
/* @var array Получаемые поля для списка контактов */
$arSelect = array(
'ID'
);
// NOTE: Запрашивайте только необходимые поля
$res = CCrmContact::GetList( $arOrder, $arFilter, $arSelect );
while( $arContact = $res->fetch() )
{
$arContacts[ $arContact['ID'] ] = $arContact['ID'];
}
}
// Тут в $arContacts либо пустой массив, либо массив с ID контактами, которые соответствуют условию поиска
use \Bitrix\Main\Loader;
use \Bitrix\Crm;
/* @var array Список контактов */
$arContacts = array();
if ( Loader::IncludeModule('crm') )
{
$resContacts = Crm\ContactTable::getList(array(
'select' => array('ID'),
'filter' => array(
"NAME" => "Имя",
"LAST_NAME" => "Фамилия",
),
'order' => array('ID' => 'DESC')
));
while( $arContact = $resContacts->fetch() )
{
$arContacts[ $arContact['ID'] ] = $arContact['ID'];
}
/*
Начиная с 17 версии (вроде бы), можно делать так:
foreach( $resContacts as $arContact)
{
$arContacts[ $arContact['ID'] ] = $arContact['ID'];
}
вместо while цикла
*/
}
// Готовим значение titile по-умолчанию
$title = '';
// Начинаем буферизация
ob_start();
echo "<html><head><title>#title#</title></head>";
// получаем статьи
$articles = Model::GetArticles();
$iSetTitle = false;
foreach($articles as $v)
{
if ( ! $iSetTitle )
{
$title = $v['title'];
$iSetTitle = true;
}
echo '<div class="title"><p><?=$v["title"]; ?></p></div>';
// вывод контента
}
$page = ob_get_clean();
echo str_replace('#title#',$title, $page);
array(
"CONDITION" => "#^/([a-zA-Z0-9_-]*)/catalog/.*#",
"RULE" => "city_code=\$1",
"PATH" => "/catalog/index.php",
)
<?php
/* @var array[] Плоский массив вложенных нод */
$arTree = [];
collectTree( 3, $arTree );
/*
Если сделать var_dump($arTree);
Мы рассчитываем получить следующий массив:
array
{
{
id: 3
title: Cat3
slug: cat3
parent: 0
},
{
id: 6
title: lodki
slug: lodki
parent: 3
},
{
id: 7
title: Samolety
slug: lodki
parent: 6
}
}
*/
function collectTree( $iRootId, $nodeList = [] )
{
/* @var array Массив описывающий ноду $iRootId */
$nodeList[ $iRoot ] = getRootData($iRootId);
/* @var int[] Массив id категорий, который является вложенным по отношению к текущей ноде */
$arRootIncludedNodeId = getSubTreeNodeIds( $iRootId );
if ( !empty( $arRootIncludedNodeId ) )
{
foreach ($arRootIncludedNodeId as $iNode)
{
collectTree( $iNode, $nodeList );
}
}
}
/**
* Возвращает данные по конкретной ноде
* @param int $iRoot
* @return array
*/
function getRootData( $iRoot )
{
// ...
}
/**
* Возвращает ID всех нод, являющихся наследниками $iRoot ноды
* @param int $iRoot
* @return int[]
*/
function getSubTreeNodeIds( $iRoot )
{
// ...
}
?>