Записки веб-разработчика
Добро пожаловать
Приветствую. Хочу сразу предупредить. Я разработчик, а не писатель, поэтому пишу как умею и, в основном, для себя. Буду благодарен за "фидбек", можно написать в комментариях к любому посту без регистрации.
![](/upload/resize_cache/iblock/39d/htypvgdgoceipymm5o2p9njm95yc4tv7/599_419_1/uyazvimost-v-module-sayty-24-landing.jpg)
Модуль либо обновить, либо, если обновления недоступны или вы не перешли на php8, то удалить. Поправили в версии 23.850.0
Смена кодировки сайта с windows-1251 на utf-8
Пошаговая инструкция для конвертации сайта в utf-8 на 1С-Битрикс
![](/upload/resize_cache/iblock/a81/6bkgpei8tetuqperu309izpjqf2umeik/599_419_1/generatsiya-sitemap-dlya-kartinok-infobloka.jpg)
Пример скрипта отрабатывающего на кроне. Простенький скрипт, который достаёт данные о детальной картинке и доп. картинках из свойства типа файл. Сохраняет все это в xml файл, ссылка на который сохраняется в "индексный" xml.
![](/upload/resize_cache/iblock/334/5bzhdjzswbsfhtxbnkc7vefemuyjwrs5/599_419_1/bitriks24-otklyuchenie-otobrazheniya-ssylok-v-okne.jpg.jpg)
После недавнего обновления все ссылки/страницы стали отображаться во всплывающем окне/слайдере и стандартным способом это не изменить.
![](/upload/resize_cache/iblock/ef3/epp55eefh1n3gkug8nwduz01jbny3kbr/599_419_1/skryt-fakt-ispolzovaniya-cms-1c-bitrix.jpg)
Последнее время было несколько случаев взлома 1С-Битрикс, прячемся)
![](/upload/resize_cache/iblock/206/6mx11t76ypj8m7eub3mj2fkz9iyiimaz/599_419_1/pereklyuchaem-bitrixvm-na-php-fpm.jpg)
Простой способ переключиться на php-fpm на стандартном битрикс окружении
![](/upload/resize_cache/iblock/5fa/kv03zw7k0y1f9jmdy3yda03sog36tn1g/599_419_1/modul-pereklyucheniya-vetok-git-iz-adminki.jpg)
Бесплатный модуль для битрикс, позволяющий переключать ветку git прямо из админки. Для установки не через маркетплейс (если лицензия неактивна) можно воспользоваться скриптом.
![](/upload/resize_cache/iblock/ad7/xnkm3byws9xo5ieq05pcizbc0m5192np/599_419_1/obnovlyaemsya-do-php-8.jpg)
С сегодняшнего дня битрикс требует php 8 для установки дальнейших обновлений. Самое время обновить все.
![](/upload/resize_cache/iblock/edc/5a6opz3hk06nji2s6x9jfr38rhff4j6z/599_419_1/b-user-session-kak-pochistit.jpg)
При включении хранения сессий в БД, таблица быстро разрастается, если механизм очистки отключен в настройках php.
Транслит для ЧПУ URL
Простая форма для генерации символьного кода из текста
![](/upload/resize_cache/iblock/cd8/v5evqtt926crs9da2fy80nqt57xyeqz5/290_203_1/redaktirovanie-iz-publichnoy-chasti-.jpg)
Как добавить возможность редактирования (из публичной части) элемента инфоблока вне компонента?
Стилизация input[type="checkbox"] на css
Простенькая стилизация инпутов, используется только тег label и псевдоэлементы :beforе и :after
Нормализация номера телефона в битриксе
Для хранение телефонов в едином виде, можно обработать их одним методом UserPhoneAuthTable::normalizePhoneNumber()
Автоматический расчет цены комплекта в Битрикс
Готовый скрипт для расчета цены комплекта по его составу, работает на cron.
Какие скидки были применены к товарам в заказе
Нужен всего один метод OrderEdit::getOrderedDiscounts, его нет в документации, т.к. используется только в админке битрикс.
Не удаляется старый кеш
Если в папке с кешем битрикс у вас много "просроченного" кеша с ~ (тильдой) в названии, проверьте выполняется ли агент delayedDelete
Анимация печати текста на js
Простой скриптик для имитации набора текста в строке
![](/upload/resize_cache/iblock/bf0/1arr0j80shd10wc63swoqvhmsa03hg3e/290_203_1/propali-tseny-v-kataloge-posle-obnovleniya-yadra.jpg)
Связано с обновлением 23.300.0, в котором параметр COMPATIBLE_MODE стал по-умолчанию считаться выключенным. Нужно пройтись по настройкам компонентов catalog.* и включить режим совместимости
![](/upload/resize_cache/iblock/d04/1c50e60gc2fdq053yr1nqed744hteoq3/290_203_1/ne-rabotaet-avtorizatsiya-v-adminku.jpg)
Может быть несколько причин: не удалили mbstring.func_overload, некорректно настроено хранение сессий, задублировалась кука PHPSESSID, настроена политика безопасности группы администраторов.
Проверить отправлен ли запрос ajax`ом
Одной строкой: Application::getInstance()->getContext()->getRequest()->isAjaxRequest()
Удалить модуль если админка не работает
Если вдруг какой модуль выдал ошибку и нет возможности зайти в админку, модуль можно удалить выполнив небольшой скрипт.
Пример aspect-ratio, улучшаем показатель CLS
Пример, помогающий понять как работает aspect-ratio в css
![](/upload/resize_cache/iblock/ec9/m4r10ofpu1fmhf51oz5qu69ssucjczr3/290_203_1/bitrix-err-ssl-protocol-error.jpg.jpg)
Если после обновления окружения отвалился ssl, проверьте файл /etc/nginx/bx/conf/ssl_options.conf, у меня там не хватало строки ssl on;
Сдвиг страницы из-за flex order
Попался интересный случай. На сайте шапку переместили ближе к футеру, чтоб контент страницы был выше в исходниках. А после, в css поменяли порядок блоков свойством order.
Восстановление привязки товаров к разделам
Необычная ситуация попалась, привязка к основному разделу у товара заполнена, а множественная к разделам - нет.
Оптимизация запросов файлов
Если использовать стандартные компоненты и примеры кода, то запросы будут идти в цикле, что не оптимально. Покажу как сделать все одним запросом.
Наследование пользовательских свойств в подразделах
Чтобы не заполнять все поля у каждого раздела, часть можно "наследовать", сделав пару доп. запросов в компоненте.
![](/upload/resize_cache/iblock/837/hdsw6u379paob8u1j7l6bz8ia3orzvow/290_203_1/vypolnenie-php-iz-konsoli-vozvrashchaet-iskhodniki.jpg)
Связано это с параметром php short_open_tag, но почему из браузера скрипт выполняется как обычно?
Создание pdf документа из компонента битрикс
Пример почти готового кода создания pdf документа с помощью библиотеки dompdf