Битриксоид из Колхоза
744 subscribers
297 photos
9 videos
5 files
98 links
Изучаем #Битрикс, находим ошибки, обслуживаем проекты, пишем модули, разрабатываем компоненты.

Ютуб: shorturl.at/himBM
Модуль-ускоритель: shorturl.at/lsyTW
Модуль комментариев: shorturl.at/ACDT2
Сайт разработчика: https://burlaka.studio
Download Telegram
В модуле инфоблоков замечена фабрика для генерации методов-обёрток разного предназначения.

use Bitrix\Iblock\Template\Functions\Fabric;
use Bitrix\Main\Loader;

Loader::includeModule('iblock');

$fabricTranslit = Fabric::createInstance(
'translit',
[
'change_case' => 'U',
'replace_space' => '-',
]);

$result = $fabricTranslit->calculate(
['летс го чейсинг рэинбоуз ин зе скай']
);


// LETS-GO-CHEYSING-REINBOUZ-IN-ZE-SKAY
// (© Freddie Mercury)

#битрикс #транслит #фабрика
Пример запроса с логикой или.

use Bitrix\Main\ORM\Query\Query;

$entity = DoorsParserDoor::compileEntity();

$logicFilter = (Query::filter())
->logic('or')
->whereNull('UF_CONTENT')
->whereNull('UF_H1')
;

$qRes = (new Query($entity))
->setOrder(['ID' => 'ASC'])
->setSelect(['ID'])
->where($logicFilter)
->setLimit(1)
->exec();


#битрикс #orm #condition
Страница оформления заказа.
Лог выброшенных событий.

#битрикс #события #волковбоятьсявлеснеходить
Ребята, осторожнее и внимательнее с выборками!

На скриншоте: выборка ограничивает результат по размеру страницы (nPageSize), хотя подразумевается nTopCount и огорчение в том, что скрипт выполняя ->GetList() идёт по альтернативной ветке, которая накручивает счётчик PAGEN_-ов (глобальный счётчик: global $NavNum).

И ты такой открываешь: на странице вроде один компонент со списком новостей, но у него в пагинации PAGEN_9 🥺☠️

#битрикс #постраничка #выборка #getlist
Выгрузка в 1С (широко известный в узких кругах 1c_exchange.php): на примере забора МойСкладом списка заказом.

Разбираем процедуру и учимся понимать, что вообще происходит и в какой последовательности.

🎬 Видосик и 🧩 конспект.

#битрикс #выгрузка #синхронизация #1с #мойсклад #заказы
Код слева и код справа равносильны*.

Код справа использует хелп-методы класса
Bitrix\Main\ORM\Fields\ExpressionField

*) ...за исключением подсчётов пустых значений. Это связано с тем, что хелп-методу нужно обязательно передать поле. "*" в качестве названия колонки он принимать не желает.

#битрикс #orm #expression
Уже не первый раз мне на обслуживание приходит проект (или вёрстка), где используется Swiper-слайдер с неверной трактовкой breakpoints-ов.

#swiper #невчитываясь
Хелпер по сортировке массивов внутри массивов (например, результатов выборки):
\Bitrix\Main\Type\Collection::sortByColumn(...)

С мульти-сортировкой (по-очереди по нужным полям), с проставлением дефолтных значений в промежуточный массив, который сортируется, с возможностью пустить сравнение через колбэк-функции.

#битрикс #сортировка
В модуль «Полноценные комментарии» завезены расширенные поля и сегодня выпущен новый тип поля: Рейтинг (звёздочки, сердечки, кружочки) — видео-обзор.

#битрикс #комментарии #админканавью =)
Через объект запроса
$qRes = (new \Bitrix\Main\ORM\Query\Query($entity))
... ->exec();
...получить код выполненного sql-запроса:
$sql = $qRes->getTrackerQuery()->getSql();

#битрикс #запрос #sql
Подписаться на события хайлоадблока:

use Bitrix\Main\EventManager;

$eventManager = EventManager::getInstance();
$eventManager->addEventHandler(
'',
'RelinkInnerOnAfterUpdate',
['ClassName', 'methodName']
);

Особенности:
• выброс события ожидаем не от модуля, потому указываем пустое значение;
• тип события строит название относительно названия сущности конкретного хайлоадблока.

На скриншоте дан пример стека событий — в «старом» формате и в новом (как написано в самом ядре: (modern with namespace)). Они выбрасываются вместе, для совместимости.

#битрикс #события #хайлоадблок
This media is not supported in your browser
VIEW IN TELEGRAM
Щупаем механизм правил и условий — BX.TreeConditions — известный нам по админке скидок или правил работы с корзиной.

Ссылка на ютюбэ.

#битрикс #правила #условия #myconditionsmyrules