Записки веб-разработчика, 2 страница
Модуль переключения веток git из админки
Бесплатный модуль для битрикс, позволяющий переключать ветку git прямо из админки. Для установки не через маркетплейс (если лицензия неактивна) можно воспользоваться скриптом.
Обновляемся до php 8
С сегодняшнего дня битрикс требует php 8 для установки дальнейших обновлений. Самое время обновить все.
b_user_session как почистить
При включении хранения сессий в БД, таблица быстро разрастается, если механизм очистки отключен в настройках php.
Прервать выполнение ajax запроса
Например при переключении вкладок, часть контента подгружается ajax`ом. И если быстро тыкать по вкладкам, это создаст множество асинхронных запросов и, помимо долгой загрузки, результат может быть неожиданный.
Вывод размера файлов объединённых js/css
При оптимизации "больших" сайтов удобно смотреть что можно "выкинуть" в объединённых файлах стилей и скриптов. В конце выводится список подключённых файлов. Добавил туда вывод размера этих файлов.
Google pagespeed обновился
Теперь проверяет сайт по огромному количеству показателей: доступность для людей с ограниченными возможностями, древность библиотек, проверяет ошибки в консоли и многое другое.
Отладка обработчиков событий битрикс
Столкнулся с проблемой: долгая генерация страницы сервером при небольшом количестве запросов. Проблема была в php коде, который срабатывал по событию.
Редирект с несуществующих страниц пагинации
Пример как быстро сделать редирект со страниц вида /?PAGEN_1=999 на последнюю страницу пагинации.
Поле для личной подписи, автографа
Сделано на canvas, работает как на десктопе, так и на "тач" устройствах. Итоговое изображение можно сохранить в jpg файл.
Отдельный URL у торговых предложений
Опишу вариант создания отдельного урла для торговых предложений битрикс (почти стандартный). На примере: /catalog/code-section-1/code-section-2/code-element/12345/
Кастомное пользовательское поле, тип: привязка к чему-либо
Достаточно простой способ расширить варианты привязок у пользовательских свойств. Покажу на примере "Привязка к свойствам инфоблока".
Поддержка тёмной темы на сайте
Всё очень просто, достаточно использовать медиа-запрос "prefers-color-scheme: dark". Он срабатывает, когда на устройстве пользователя включена тёмная тема.
В админке перестали подсвечиваться выбранные варианты выпадающего списка
Где-то в последних версиях сломали вёрстку админки, но это легко починить.
Как загрузить изменения в ветку, не переключаясь на неё
Из любой ветки можно загрузить новые коммиты из удалённого репозитория в другую ветку.
Улучшенный вариант ленивой загрузки js плагинов
Исключает повторную загрузку, загружает плагин только при отображении нужного элемента на экране, срабатывает после аякс запросов.
Передача параметров из cron в php скрипт
Когда скрипт очень большой, его нужно выполнять за несколько шагов. Это можно сделать с помощью передачи параметров при запуске скрипта из командной строки (или в планировщике cron).
Регулярка, изменить мл на литры
Пример готовой функции для замены "150мл" на "0.15л", например, в названиях товаров.
base64 decode\encode online
Раньше висела форма конвертации в правом блоке, решил что там ей не место и закинул в статью.
Аттрибут loading="lazy" теперь стандарт?
validator.w3.org больше не ругается на "неизвестный" аттрибут, а caniuse пишет о поддержке 92%
Обновил документацию до 22.2
Актуальная документация по исходникам ядра битрикс v22.2, со всеми обновлениями на текущий день.
Ошибка Unknown field definition `ID` for \Bitrix\Main\Site
Данная ошибка может возникнуть во время обновления. Исправляется в будущем обновлении, но что бы починить админку нужно немного подправить ядро.
Как в result_modifier вызвать метод класса
Через метод объекта $this->getComponent() доступны все методы класса.
Ошибка ERR_SSL_PROTOCOL_ERROR после установки сертификата
Если после установки ssl сертификата вы получили ошибку ERR_SSL_PROTOCOL_ERROR, обновите nginx, похоже что он слишком старый.
Получить родительские разделы раздела
С помощью старого ядра, методом CIBlockSection::GetNavChain. По сути, там в цикле делаются запросы к БД, с каждым запросом достаётся родительский раздел.
Улучшаем CLS показатель за счет шрифтов
После загрузки кастомного шрифта, браузер заново рендерит текст на странице и т.к. ширина символов может быть сильно разной, размеры блоков меняются и элементы на сайте "прыгают".
Ошибка при загрузке картинки
Если заглянуть в консоль, там будет ошибка с текстом "Mandatory directory has not been created", возникает при загрузке в админке битрикс.
Сужение вариантов в зависимости от другого свойства
Кастомное свойство привязки c небольшим костылём. Сделано для удобного заполнения свойства в админке.