Если стандартными средствами это не сделать, подскажите в каком направлении мне искать информацию
Интересно, как ещё можно оптимизировать этот этап?
\Bitrix\Main\Loader::IncludeModule('iblock');
$arFilter = Array(
"IBLOCK_ID" => 2,
"ACTIVE" => "Y",
"!ID" => \CIBlockElement::SubQuery("PROPERTY_HIT", array(
"IBLOCK_ID" => 2,
"PROPERTY_HIT_VALUE" => "Новинка",
))
);
$productQuery = \CIBlockElement::GetList(
[],
$arFilter,
false,
false,
[
"ID",
"IBLOCK_ID",
"NAME",
"PROPERTY_HIT"
]
);
while( $arElement = $productQuery->fetch() )
{
echo "<pre>";
var_dump($arElement);
echo "</pre>";
}
\Bitrix\Main\Loader::IncludeModule('iblock');
$filter = [
'IBLOCK_ID' => '2',
[
'LOGIC' => 'AND',
[
'>PROPERTY_PRICE' => '100',
],
[
'PROPERTY_PRICE' => '%|RUB',
]
]
];
$resElements = \CIblockElement::getList([], $filter, false, false, ['ID','IBLOCK_ID','PROPERTY_PRICE']);
while( $element = $resElements->fetch() )
{
var_dump($element);
}
<head>
<?$APPLICATION->ShowHead();?>
<title><?$APPLICATION->ShowTitle()?></title>
</head>
2. Для сторонних систем (например ваш биллинг) вы можете воспользоваться Javascript кодом, который так же, нужно расположить на странице где подключен виджет.<script type="text/javascript"> window.BxLiveChatInit = function() { return { 'user': { 'hash': 'a588e1a88baf2013940b0b33b1eefc2d', // уникальный uid ползователя, замена авторизации 'name': 'Виктор', 'lastName': 'Иванов', 'avatar': 'http://shelenkov.com/images/avatar-ivanov.jpg', 'email': 'victor@ivanov.ru', }, 'firstMessage': "Виктор Иванов (victor@ivanov.ru) [br]"+ "Код клиента: 12234[br]"+ "Сайт: "+location.hostname+"[br]"+ "Страница: [url="+location.href+"]"+(document.title || location.href)+"[/url]" // любой текст для оператора ол чатика }; } </script>
Обратите внимание на hash - это специально поле, замена авторизации.
Оно должно быть уникальным в рамках вашего Битрикс24, что бы не было пересечений.
Например: md5(USER_ID+_адрес_сайта_ + _секретный_код_)
Данный код должен одновременно идентифицировать пользователя и быть не подбираемым с улицы.
Поле firstMessage не является обязательным, вы можете его не настраивать, тогда оператору будет отправлена ссылка страницы с которой клиент начал обращение.
Какое событие при этом возникает?
Перед названием фильтруемого поля можно указать тип проверки фильтра:
- "!" - не равно
- "<" - меньше
- "<=" - меньше либо равно
- ">" - больше
- ">=" - больше либо равно
- "><" - между
- и т.д.
Значения фильтра - одиночное значение или массив значений. Для исключения пустых значений необходимо использовать false.
Необязательное. По умолчанию записи не фильтруются.
Примечание 1: (по настройке фильтра для свойства типа "Дата/Время"): свойство типа Дата/Время хранится как строковое с датой в формате YYYY-MM-DD HH:MI:SS. Соответственно сортировка по значению такого свойства будет работать корректно, а вот значение для фильтрации формируется примерно так: $cat_filter[">"."PROPERTY_available"] = date("Y-m-d");
Примечание 2: при использовании типа проверки фильтра "><" для целых чисел, заканчивающихся нулем, необходимо использовать тип поля число или разделительный знак "," для десятичных значений (например, 20000,00). Иначе работает не корректно.
">PROPERTY_SEMINAR_END" => date('Y-m-d)