Получи случайную криптовалюту за регистрацию!

Битриксоид из Колхоза

Логотип телеграм канала @bitrixoid_iz_kolhoza — Битриксоид из Колхоза Б
Логотип телеграм канала @bitrixoid_iz_kolhoza — Битриксоид из Колхоза
Адрес канала: @bitrixoid_iz_kolhoza
Категории: Технологии
Язык: Русский
Количество подписчиков: 568
Описание канала:

Изучаем #Битрикс, находим ошибки, обслуживаем проекты, пишем модули, разрабатываем компоненты.
Ютуб: shorturl.at/himBM
Модуль-ускоритель: shorturl.at/lsyTW
Модуль комментариев: shorturl.at/ACDT2
Сайт разработчика: https://burlaka.studio

Рейтинги и Отзывы

3.67

3 отзыва

Оценить канал bitrixoid_iz_kolhoza и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

1

3 звезд

0

2 звезд

1

1 звезд

0


Последние сообщения

2021-09-22 16:50:58
Ремкомплект Ускорителя — программные инструменты, которые я завёз в свой модуль ускорения. Ремкомплект снимает большую часть организационной боли при декомпозиции страниц сайтов.

Записал на текущий момент 6 видео, набросал костяк инструкции.

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

Ремкомплект долгое время был в бета-версии, выпустил его в стабильные, потому что на подходе новые обновления, а бета держит работу.

#битрикс #ускорение #pagespeed #lighthouse
486 views13:50
Открыть/Комментировать
2021-09-22 10:18:31
Каждый день ко мне приходят сотни писем с просьбой дать реквизиты, куда можно закинуть копеечку благодарности.
Есть адрес, где можно запончить: https://burlaka.studio/thanks-donate/

...я бы ещё туда форму от Монобанка влепил для співвітчизників, но что-то они пока не додумались выпустить такой фичи.
397 views07:18
Открыть/Комментировать
2021-09-22 10:17:13
У пользовательского поля раздела типа Файл старый интерфейс загрузки фотографий.
В частности, множественное свойство накапливает фотографии списком и этот список нельзя перегруппировать.

Всё сводится к шаблону компонента main.field.file с названием main.edit_form.

Я кастомизировал шаблон, кое-что подкрутил и завёз пересортировщик.
Пересортировка обеспечивается библиотекой Sortable — прямо с cdn тянется js-файл.

Архив кастомизированного шаблона прикрепил ниже.
Путь, по которому размещается компонент у меня:
/local/templates/.default/components/bitrix/main.field.file/main.edit_form
...вот то, что выделено полужирным шрифтом и находится в архиве.

#битрикс #файлы #картинки #разделы
392 viewsedited  07:17
Открыть/Комментировать
2021-09-08 11:15:47
Наковырял интересный лайф-хак, вроде как не очень массово-применимый, но всё зависит от подхода.

При компиляции сущности разделов инфоблока парсится дефолтное значение для пользовательского поля типа список.

Например, ситуация: имеем свойство, которым управляется доступ к каким-то материалам: для всех, для менеджеров, для эйчаров, для шишек, ...
По-умолчанию выбран пункт "Для всех".

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

Этого можно не делать, а сразу использовать айди значения из настройки по-умолчанию.

У элементов такого (пока?) нет ((

#битрикс #orm #выборка #финтушами #список
563 views08:15
Открыть/Комментировать
2021-07-17 18:35:16 ░██████╗██╗░░░██╗░██████╗░
██╔════╝██║░░░██║██╔════╝░
╚█████╗░╚██╗░██╔╝██║░░██╗░
░╚═══██╗░╚████╔╝░██║░░╚██╗
██████╔╝░░╚██╔╝░░╚██████╔╝
╚═════╝░░░░╚═╝░░░░╚═════╝░

Ситуация:
имеем хайлоад-блок, нам нужно грузить svg. Тип пользовательского поля "Файл" свг грузит, но не показывает превью.

Детали орнамента:
1. При формировании пользовательских полей, за рендер html-кода для пользовательского типа "Файл" отвечает main.admin_list_view_html-шаблон компонента bitrix:main.field.file. Это не совсем типовой шаблон. Путь к исполняемому файлу: /bitrix/components/bitrix/main.field.file/templates/main.admin_list_view_html/.default.php
2. svg не проходит проверку и не пропускается в ShowImage, потому что расширения за-хардкодены в методе \CFile::GetImageExtensions:
return "jpg,bmp,jpeg,jpe,gif,png,webp"
2.1. !!! Вызов этого метода производится через static::GetImageExtensions()
3. Если даже отредактировать этот список, html-код картинки генерится с width="0" height="0"

Решение:
1. Поднимаем свой класс, который расширит \CFile и переопределит два метода
2. Кастомизируем шаблон компонента. У меня он разместился по пути /local/templates/.default/components/bitrix/main.field.file/main.admin_list_view_html/.default.php
2.1. Внутри компонента редактирую вызов и вместо \CFile::ShowImage вызываю свою обёртку.

Залил на пастебин файл с классом и файл кастомизированного шаблона

#svg #битрикс #userfield #admin
703 viewsedited  15:35
Открыть/Комментировать
2021-07-12 13:29:18 Имеем множественное свойство элемента (в примере: код сотрудников, привязанных к региону — привязка к элементам инфоблока).

Ситуация: нам нужно вклиниться в D7-ORM-выборку и получить список id.

Так как свойство множественное, каждый fetch будет формировать массив только с одним значением из всего списка множественного значения.

Нам придётся:
• либо переделывать выборку на fetchObject и переписывать все значения через get-ы и коллекции;
• либо фетчить всё столько раз, сколько значений множественных свойств, опять же переписывая выборку так, чтобы свойства накапливались и в результате значения распределялись по массивам.

Так как нам достаточно просто получить список, без более глубоких джойнов, мы можем дообучить сущность специальным полем, который делал бы выборку не из m-таблицы (где все множественные значения содержатся в разделённом виде), а из s-таблицы (где массив сериализован и всё хранится вместе).

Получив сериализованное значение, мы его рассериализуем и в ключе VALUE будут нужные нам ID.

...и не придётся пересобирать цикл с fetch-ами

Читать статью:
https://burlaka.studio/lab/orm_multy_prop_direct_via_fake_entity/

#битрикс #orm #d7 #сущности
782 viewsedited  10:29
Открыть/Комментировать
2021-06-12 18:43:01
#начало
265 views15:43
Открыть/Комментировать
2021-06-08 19:57:56
В методе onPrepareComponentParams класса \Bitrix\Iblock\Component\Base инициализируется переменная ORIGINAL_PARAMETERS, которая хранит в себе все исходные параметры, которые поступили на вход компонента (ещё до всяких трансформаций и нормализаций).

Дополнительно, тот же метод класса-наследника, уровнем выше: \Bitrix\Iblock\Component\ElementList
...в массив значений ключа ORIGINAL_PARAMETERS добивает ключ GLOBAL_FILTER, который содержит значение глобального фильтра, переданного в компонент (если передан).

Ключ GLOBAL_FILTER, переданный в параметры компонента перекрывает глобальный фильтр в $GLOBALS.

Таким образом, ORIGINAL_PARAMETERS, сформированный для шаблона компонента, — практически готовая сборка ключей и параметров, которые можно упаковать, подписать и транслировать через аякс для вызова на бэке аналогичного инстанса компонента с откорректированными входящими параметрами или подстроенным окружением (свои: пагинация, умный фильтр, подгрузка рубрик, элементов раздела, ...).

#битрикс #аякс #параметры
414 views16:57
Открыть/Комментировать
2021-03-27 21:52:48 Ситуация: групповое изменение цен получает ответом ошибку 500 (если переключить php под Apache, в логах читаем «End of script output before headers: php, ...»). При этом сами цены изменяются — именно перерисовка грида в ответе формируется с ошибкой.

Корень проблемы: оказалось, что на OnEndBufferContent наворачивается метод проактивной защиты \CSecurityXSSDetect::removeQuotedStrings, а конкретно:
preg_replace($regexp, '', $string);

Решение: в настройках Проактивной защиты в Проактивном фильтре установить исключение админки «/bitrix/*».

#проактивныйфильтр #грид #цены
659 views18:52
Открыть/Комментировать