Записки веб-разработчика, 4 страница

Добиваю Google Pagespeed, до идеального результата осталось несколько пунктов. На данный момент пришлось "заинлайнить" стили и js для того, чтобы не было лишних запросов к серверу.
Удалить пользователей которые никогда не авторизовывались
Если через форму регистрации наспамило много новых пользователей, то таблицу хорошо бы почистить. Неактивных можно удалить через админку. А вот тех что никогда не авторизовывались, только скриптом.
Ленивая загрузка виджетов Retail Rocket
Их виджеты с рекомендованными товарами блокируют страницу на 7 секунд. Google PageSpeed это очень не нравится. Да и зачем отрисовывать товары сразу, если они, обычно, находятся внизу страницы.
Как найти, откуда устанавливаются мета-теги
Мета-теги страницы обычно устанавливаются через метод SetPageProperty. Использовать его можно сколько угодно раз и в любом месте сайта. Поэтому найти откуда же в итоге установились теги, бывает, крайне сложно.

API карт весит много, js код тяжёлый. Загружать сразу - плохая идея. Если карта появляется по клику, в попапе или она находится внизу страницы (т.е. не видна на первом экране), то и загрузку можно отложить до момента, когда карта станет "видна".

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

Понадобилось сделать поле для раздела инфоблока, в котором администратор мог бы добавлять ссылки (тег </a> с названием). У элементов есть хотя бы тип "строка с описанием", у UF_ полей можно воспользоваться только типом html, но при этом велик шанс, что в поле добавят еще какой-то код.
Ошибка bitrix-env-7.5-0.el7.noarch has missing requires of php-pecl-xdebug
Как-то многовато ошибок после обновления BitrixEnv. Эта возникла при попытке обновить сервер. Решение простое, удалить php-pecl-xdebug3 и установить php-pecl-xdebug

Полностью ошибка звучит так: "Ошибка регистрации нового пользователя: Не введено значение обязательного поля" и далее название поля.

Это продолжение статьи о обмене 1С-Битрикс с 1С, на этот раз речь пойдет о файлах обмена, их видах и структуре xml.
Быстрая минификация css для bitrix
Идея в том, чтобы взять готовую php библиотеку для минификации css и рекурсивно пройтись им по всем css файлам шаблона, создавая min копии, которые битрикс подхватывает автоматически.
could not start session because headers have already been sent
Ошибка чаще всего возникает либо из-за лишних символов (например пробел перед <?php), либо если файл сохранен в кодировке UTF8 с BOM.
jquery получить имя файла input file
Если надо кастомный вид поля загрузки файла (почти всегда), то само поле можно скрыть и работать с ним с помощью js
Загрузка js по событию начала активности пользователя
Я всё мучаю загрузку яндекс карт. Уж слишком они тяжелые, сразу грузить нельзя, а при открытии они загружаются очень долго.
Не отображается iframe, хотя заголовок x-frame-options отсутствует.
Столкнулся с тем, что при любом значении заголовка x-frame-options, iframe не отображается на других сайтах. Удаление заголовка так же не помогло.
Intersection Observer API, плавное появление элементов
Экспериментальный скрипт добавления анимации появления элементов при сколле. Использовать только для опытов)
htaccess редирект с пробелом и кириллицей в URL
При таком URL может возникнуть проблема, что правило не будет обрабатываться, т.к. в браузере адрес в одном виде, а сервер его понимает иначе. Решение простое: URL нужно взять в кавычки, а кириллицу писать как есть без URL-кодирования.

Берем svg иконки звезд, далее в зависимости от рейтинга, проверяем на php какая иконка нужна (закрашенная или пустая) и выводим её

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

Варианта два: $('input:focus'), либо при клике на input добавлять ему класс.

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

Если нужно заменить одну из картинок с сохранением порядка, можно сделать это напрямую, работая с \Bitrix\Iblock\ElementPropertyTable
Главный модуль, история изменений
Сохранил список изменений главного модуля на всякий случай, вдруг кому пригодится.
Стилизация scrollbar в css
Простая стилизация скроллбара в webkit браузерах и firefox. Т.е. работает во всех современных браузерах.
Как узнать выводится ли свойства в smart filter
Свойства хранятся в одной таблице, а их параметр "Выводить в умном фильтре" в другой. Написал пример запроса свойств, которые выводятся в умный фильтр.
Создание пользователя ssh
Если к площадке есть только root доступы, то для работы с сайтом необходимо создать нового пользователя . Под root работать нельзя.
BitrixEnv смена порта ssh
Сам порт поменять не сложно, главное не забыть настроить iptables, а то к серверу потом уже не подключитесь.
Ручное продление сертификатов LetsEncrypt BitrixEnv
Для продления сертификатов выполните команду /home/bitrix/dehydrated/dehydrated -c --force

Устанавливал npm, столкнулся с ошибкой etckeeper: pre transaction commit etckeeper returned -1