Метод для получения товаров сущности в Битрикс24:
/** $entity_type - Тип сущности ('D' - сделкa, 'L' - лид) $entity_id - ID сущности $products - массив товаров */ $products = CAllCrmProductRow::LoadRows($entity_type, $entity_id);
Just another WordPress site
Метод для получения товаров сущности в Битрикс24:
/** $entity_type - Тип сущности ('D' - сделкa, 'L' - лид) $entity_id - ID сущности $products - массив товаров */ $products = CAllCrmProductRow::LoadRows($entity_type, $entity_id);
Купон для правил работы с корзиной, код купона генерируем сами по своей логике или используя метод битрикса
$coupon = \Bitrix\Sale\Internals\DiscountCouponTable::generateCoupon(true); $addDb = \Bitrix\Sale\Internals\DiscountCouponTable::add(array( 'DISCOUNT_ID' => 3, 'COUPON' => $coupon, 'TYPE' => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER, //или TYPE_MULTI_ORDER 'MAX_USE' => 1, 'USER_ID' => $user, 'DESCRIPTION' => 'Купон для рассылки', )); if ($addDb->isSuccess()) { return $coupon; }
Если компонент вызывается через ajax, то css и js не подключается, можно пойти путем вынесения этих стилей в общий, для всего сайта или воспользоваться методом:
$APPLICATION->ShowAjaxHead();
Разместив его в обработчике ajax запроса, перед вызовом компонента. Так же необходимо подключение пролога:
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
В данном случае используется вебхук, а utm метки берутся из cookie.
Статья о том как сохранить utm в куки на примере wordpress
Для отслеживания рекламных каналов используются utm метки, их можно получить при заходе посетителя. Но если посетитель пошел дальше по страница то они из url удалятся, при этом utm метки могут понадобиться, например при заполнении форм.
Для этого сохраним их в куки И когда надо, достанем оттуда
Рассмотрим пример отправки в канал discort ссылку на сайт
$url — yrl вебхука
$title — текст ссылки
$link — ссылка
При работе с Highload-блоками бывает необходимо получить название полей, а так как они хранятся в отдельной таблице, то в этом поможет код ниже. Найденный на просторах исходников Битрикса. Первый параметр — сам HL блок, второй — массив полей, третий — язык
global $USER_FIELD_MANAGER; $fields = $USER_FIELD_MANAGER->getUserFieldsWithReadyData( 'HLBLOCK_11', array(), LANGUAGE_ID );
Так как на оф.сайте пример только для python`на, решил поделиться. Для тех кто не хочет потрать кучу времени на непонятную ошибку типа :
[timestamp] => 2018-01-31T08:31:48+0300
[status] => 400
[error] => Bad Request
[exception] => org.springframework.http.converter.HttpMessageNotReadableException
[message] => Bad Request
[path] => /1.0/user/backlog
$data = array("address-type-to" => "DEFAULT", "given-name" => "Иван", "house-to" => "37", "index-to" => 117105, "mail-category" => "ORDINARY", "mail-direct" => 643, "mail-type" => "POSTAL_PARCEL", "mass" => 1000, "middle-name" => "Иванович", "order-num" => "001", "place-to" => "г Москва", "region-to" => "г Москва", "street-to" => "ш Варшавское", "surname" => "Иванов", "tel-address" => 79459562067, "transport-type" => "SURFACE" ); $json = '['.json_encode($data).']'; $request = curl_init('https://otpravka-api.pochta.ru/1.0/user/backlog'); $headers[] = 'Authorization: AccessToken hsdgfbnytvstdblsudtybsuftlsuf'; $headers[] = 'X-User-Authorization: Basic jhn;dfghligulGLGb68wur423vcterterrtyrGFgfGFD'; $headers[] = 'Content-Type: application/json'; $headers[] = 'Accept: application/json;charset=UTF-8'; $headers[] = 'Content-Length: ' . strlen($json); curl_setopt($request, CURLOPT_POSTFIELDS, $json); curl_setopt($request, CURLOPT_HTTPHEADER, $headers); curl_setopt($request, CURLOPT_RETURNTRANSFER, true); curl_setopt($request, CURLOPT_CUSTOMREQUEST, 'PUT'); $return = curl_exec($request); $result = json_decode($return);
DISCOUNT_ID — ID скидки (правило корзины)
$days — кол-во дней, сколько будет действовать скидка
$coupon — вернется код купона
$activeFrom = new \Bitrix\Main\Type\DateTime(); $activeTo = new \Bitrix\Main\Type\DateTime(); $activeTo = $activeTo->add($days.' day'); $coupon = \Bitrix\Sale\Internals\DiscountCouponTable::generateCoupon(true); $addDb = \Bitrix\Sale\Internals\DiscountCouponTable::add(array( 'DISCOUNT_ID' => 3, 'COUPON' => $coupon, 'TYPE' => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER, 'ACTIVE_FROM' => $activeFrom, 'ACTIVE_TO' => $activeTo, 'MAX_USE' => 1, // 'USER_ID' => 0, 'DESCRIPTION' => '' )); if ($addDb->isSuccess()){ echo $coupon; } else { echo $addDb->getErrorMessages(); }
Стояла задача убрать из умного фильтра товары, которые были отмечены как распроданные. При этом активны на сайте. Решил через удаление их из фасетного индекса.
$arSelect = Array("ID", "IBLOCK_ID", "NAME");//IBLOCK_ID и ID обязательно должны быть указаны, см. описание arSelectFields выше $arFilter = Array("IBLOCK_ID"=>60, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "PROPERTY_SOLD" => "Y"); $res = CIBlockElement::GetList(Array(), $arFilter, false, array("nPageSize" => 50, "iNumPage" => $i), $arSelect); while($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); \Bitrix\Iblock\PropertyIndex\Manager::deleteElementIndex(60, $arFields["ID"]); echo "<br>"; } $i++; echo "<meta http-equiv='refresh' content='1; url=?i=".$i."' />";
Удаляется за раз 50 элементом, затем страница перезагружается(работает в браузере, возможно переделаю для запуска в консоли).