Ресайз изображений через обработчик событий Битрикс

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

За основу была взята Битриксовая функция ресайза CIBlock::ResizePicture

Собственно код:

Читать далее

Кнопки редактирования элементов инфоблока в режиме правки

В дополнение к статье Редактирование и удаление элементов и разделов из публичной части сайта Битрикс дополню реализацию следующего случая: как отобразить кнопки редактирования элементов инфоблока в режиме правки, если вывод этих элементов осуществляется простым GetList-ом

Собственно реализация:

 

 

Обход проактивной защиты Bitrix

Коллеге недавно потребовалось добавить видос в детальное описание элемента инфоблока Битрикс, но система по какой-то причине никак не хотела давать возможность это сделать. Обычный тег «iframe» преобразовывался в «if frame».

Оказалось, что это результат работы модуля Проактивной защиты Bitrix.

Чтобы обойти защиту, необходимо в свойствах группы пользователей, которые могут редактировать нужные элементы инфоблока, выставить следующий флаг:

(Настройки / Группы пользователей / Нужная группа / Доступ / Проактивная защита [F] Обход проактивного фильтра)

Если не помогло, можете также в настройках проактивного фильтра выставить следующие настройки:

Читать далее

Как распаковать многотомный архив Битрикс

Для того, чтобы распаковать многотомные архивы битрикса, надо дать понять архиватору информацию о связанных частях.

К примеру у нас архив состоит из двух файлов:

Переименовываем их в:

И можно распаковывать. После распаковки мы получим целый файл архива с расширением tar. Распаковываем его и вот они наши файлы.

Как сделать Update пользователя в обработчике OnAfterUserUpdate без зацикливания.

В обычной ситуации при вызове функции Update класса CUser в обработчике OnAfterUserUpdate приведёт к повторному вызову OnAfterUserUpdate и так по кругу. Таким образом получается замкнутый цикл и скрипт начинает вызывать сам себя бесконечное число раз.

Как же выйти из этой ситуации?

Вариант 1:

А вот как:

В init.php вызываем обработчик:

А вот в самом классе CUserHandler делаем такую хитрость:

Смысл в том, что при первом вызове OnAfterUserUpdateHandler всё, что ниже условия проверки значений $disableHandler и $element_id выполняется, а при последующих вызовах — нет.

Вариант 2:

Обновлять св-во по ссылке (т.к. на вход функции подаётся &$arFields )