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

При загрузке пишет "Проблема с #URL#" или "A problem repeatdly occured on #URL#" и загрузку останавливает.

На большом сайте количество инфоблоков быстро растёт, многие из них служебные и не предназначены для редактирования из админки. Вот, чтобы они не мешались, их нужно убрать из меню. Простая деактивация инфоблока не поможет, он всё равно будет выводиться, нужно кастомить меню.

Чаще это свойство используют для "шапок" сайта, но если вы укажете position: sticky; top: 0; блоку, который больше высоты экрана, то часть его контента не будет доступна, пока вы не доскроллите до конца родительского блока.

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

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

Например, при добавлении товаров в заказ или выборе элементов в свойстве-привязке, в окне выбора есть фильтр. Его можно настроить, добавив в него различные свойства, по которым будет происходить фильтрация.
Массив PARAMS в меню
Ненавижу меню в битрикс, но что есть, с тем надо работать. Для того, чтобы сделать пункты меню разными, можно использовать массив PARAMS.
Bitrix d7 фильтр по дате
Выбираем заказы в определённом статусе за последний месяц. Пример кода.

Например с /?PAGEN_1=3 на /page-3/. Казалось бы добавил правило в urlrewrite, поменял компонент system.pagenavigation и готово, но нет.
Как узнать что включен режим правки?
В коде. Есть метод $APPLICATION->GetShowIncludeAreas(), возвращает true если режим правки включен.
Ошибка: Работа с сокетами (check_socket): Fail Connection to ssl
Если у вас настроено битрикс окружение и сертификат LetEncrypt, то при проверке сайта может возникнуть ошибка "Работа с сокетами". Решается обновлением корневых сертификатов.

Код запроса в БД для получения STATUS_ID и их название на нужном языке
Проверяем наличие товара на складе
Хоть в битрикс склады и используются только для вывода информации, многие их переделывают под реальные задачи. Например для вывода доступности в регионах (несколько складов под каждый регион). Ядро позволяет очень гибко проверить наличие на складах, покажу на примерах.
Как вывести элементы инфоблока без учета активности
Для вывода как активных, так и неактивных элементов, нужно в фильтр передать ACTIVE = ''
Микроразметка картинок с ленивой загрузкой
Возник вопрос, если путь картинке находится в data-src, то как добавить микроразметку изображения?
Быстрая минификация 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 добавлять ему класс.

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