2021-07-17 18:35:16
░██████╗██╗░░░██╗░██████╗░
██╔════╝██║░░░██║██╔════╝░
╚█████╗░╚██╗░██╔╝██║░░██╗░
░╚═══██╗░╚████╔╝░██║░░╚██╗
██████╔╝░░╚██╔╝░░╚██████╔╝
╚═════╝░░░░╚═╝░░░░╚═════╝░
Ситуация:
имеем хайлоад-блок, нам нужно грузить
svg. Тип пользовательского поля "Файл" свг грузит, но не показывает превью.
Детали орнамента:
1. При формировании пользовательских полей, за рендер html-кода для пользовательского типа "Файл" отвечает main.admin_list_view_html-шаблон компонента bitrix:main.field.file. Это не совсем типовой шаблон. Путь к исполняемому файлу:
/bitrix/components/bitrix/main.field.file/templates/main.admin_list_view_html/.default.php
2. svg не проходит проверку и не пропускается в ShowImage, потому что расширения за-хардкодены в методе \CFile::GetImageExtensions:
return "jpg,bmp,jpeg,jpe,gif,png,webp"
2.1.
!!! Вызов этого метода производится через static::GetImageExtensions()
3. Если даже отредактировать этот список, html-код картинки генерится с
width="0" height="0"
Решение:
1. Поднимаем свой класс, который расширит \CFile и переопределит два метода
2. Кастомизируем шаблон компонента. У меня он разместился по пути
/local/templates/.default/components/bitrix/main.field.file/main.admin_list_view_html/.default.php
2.1. Внутри компонента редактирую вызов и вместо \CFile::ShowImage вызываю свою обёртку.
Залил на пастебин файл с классом и файл кастомизированного шаблона
#svg #битрикс #userfield #admin
703 viewsedited 15:35