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

С 01.04.2021 будет ограничена поддержка продуктов 1С-Битрикс на PHP версии ниже 7.3.0. Совсем недавно вышла версия BitrixEnv 7.5.0 с поддержкой перехода на PHP 7.3/7.4, PHP 8.0. Значит пора обновляться.

Эта вводная часть об устройстве обмена между 1С-Битрикс и 1С, настройке, ошибках и отладке. Всего планируется несколько частей, т.к. объем материала достаточно большой.
Как настроить редирект со страниц с использованием заглавных букв на страницы со строчными буквами
Прилетела задача от seo отдела - сделать редирект со страниц с разным регистром /catalog/BRANDS/all/ на страницы в нижнем регистре /catalog/brands/all/. Решение на php.

Такой простой функционал оказалось не так просто реализовать. Нельзя просто взять и зайти в options менеджера объектов и поменять картинку методом options.set()

В php 7.2 ini-настройка mbstring.func_overload объявлена устаревшей. К тому же битрикс решил её выключить в последних обновлениях.

Полезное видео, дает представление о том, что нас ждет дальше, как меняется фреймворк. Я лично, посмотрел видео и устарел :)

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

Понадобилось вне компонента оформления заказа показать какие способы оплаты доступны для той или иной службы доставки. Пришлось лезть в код админки, смотреть как это устроено.

Если в заказах из 1С есть что-то, чего нет в битриксе, то добавить это можно во время импорта, расширив класс CSaleOrderLoader.
Работа с гитом через php
Проблема: временно нет доступов к ssh, но нужно поставить гит и сделать первый коммит для работы с проектом на тестовой площадке. Решение: exec().

Такая ошибка может возникнуть при установке 1С-Битрикс на новом хостинге. На текущий момент требуется версия mysql 5.6.0, но по факту устанавливается и на меньшей версии, нужно только чуть подправить код проверки.

В Битрикс проверки на строковую "Y" очень популярны, т.к. сами разработчики ядра используют их повсеместно. Проблема в том, что проверка идет с преобразованием типов. И если "Y" сравнивать с "0", то результат будет true.

Если не работает почта после установки чистого веб-окружения битрикс. Устанавливаем postfix
Микроразметка блога
Зачем-то сделал себе мироразметку блога, видимо что б было. Разметил как сами посты, так и комментарии к ним. Покажу пример для всей страницы сайта.

Актуальная документация по исходникам ядра битрикс, со всеми обновлениями на текущий день.

Так, чтобы сильно не кастомить ядро? Модуль "Документооборот" есть не во всех редакциях. Снимать активность статьи и кастомить компонент news.detail тоже не вариант.
Не работает карта кликов с включенной защитой от фреймов
В битрикс окружении по умолчанию заголовок X-Frame-Options устанавливается в SAMEORIGIN. Это значение разрешает загрузку только если и фрейм, и страница, его загружающая, находятся на одном домене. Поэтому Яндексу не удаётся показать карту кликов, т.к. загрузка сайта во фрейм для него недоступна.
.gitignore для bitrix
Готовый файл .gitignore для сайтов на cms битрикс.

При изменении фоновой картинки, браузеру требуется некоторое время на загрузку новой, поэтому изменение картинки будет происходить с рывком. Но есть небольшой "костыль" :)

Google обновил свой инструмент Lighthouse до 6 версии, в котом были добавлены новые метрики.
Показатели блога упали до 97 в мобильной версии и 95 в десктопной.
Добавление профиля покупателя
В компоненте bitrix:sale.personal.profile.detail есть только редактирование, чтобы научить его добавлять новые профили, нужно немного кастомного кода.

Пригодится для сео, для вывода ссылок в шаблоне фильтра.

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

Готовый код. Свойство можно использовать, например, в умном фильтре или для добавления в индекс поиска.
Трансформирование бургера в крестик на css
Пример кода для кнопки открытия меню.
Анимация при скроллинге
Простенький jQuery скрипт для добавления анимации блоков, при их появлении на экране. Можно использовать, но!, в интернете полно готовых плагинов, используйте их, не пишите/не используйте "велосипеды".

Пример вызова нативного меню мобильного устройства для "расшаривания" страницы сайта.

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