Свойства типа «Файл» и «HTML/текст» позволяют прикреплять к элементам инфоблока документы, изображения и произвольный форматированный контент. Разберём, как их создать, настроить ограничения и корректно вывести на сайте.
Что это за типы свойств
При добавлении свойства инфоблоку в 1С-Битрикс в колонке «Тип» доступны два близких по назначению, но разных по хранению варианта:
- Файл — хранит загруженный файл (документ, картинку, архив). Физически файл кладётся в папку
/upload/, а в свойстве сохраняется его идентификатор из таблицы файлов. - HTML/текст — хранит произвольный текст с двумя режимами:
text(простой текст) иhtml(форматированная разметка). В базе рядом со значением сохраняется признак формата.
Тип «Файл» удобен для прайсов, сертификатов, инструкций и дополнительных изображений. Тип «HTML/текст» — для блоков описания, характеристик или произвольных вставок, которые контент-менеджер редактирует через визуальный редактор.
Создание свойства типа «Файл»
Чтобы добавить свойство для загрузки файлов:
- Откройте Контент → Инфоблоки → Типы инфоблоков и выберите нужный инфоблок.
- Перейдите на вкладку «Свойства».
- В пустой строке заполните «Название» (например, «Сертификат») и при необходимости «Код» латиницей (например,
CERTIFICATE). - В колонке «Тип» выберите «Файл».
- Нажмите «Сохранить» — под свойством появятся дополнительные настройки.
В дополнительных настройках свойства «Файл» доступны:
- Разрешённые расширения файлов — список через запятую, например
pdf, doc, docx. Пустое поле означает «без ограничений». - Множественное — позволяет прикрепить несколько файлов к одному элементу.
- Обязательное — элемент нельзя сохранить без загруженного файла.
Создание свойства типа «HTML/текст»
Свойство «HTML/текст» создаётся так же, но в колонке «Тип» выбирается «HTML/текст». После сохранения станут доступны настройки:
- Формат по умолчанию —
HTMLилиtext. От него зависит, какой режим редактирования откроется первым в форме элемента. - Количество строк — высота поля ввода в форме редактирования.
- Множественное — несколько независимых текстовых блоков.
В форме редактирования элемента поле «HTML/текст» отображается с переключателем режима. В режиме html контент-менеджер работает через визуальный редактор, в режиме text — вводит простой текст без разметки.
Чем отличается от поля «Описание»
У элемента уже есть системные поля «Описание для анонса» и «Детальное описание». Свойство «HTML/текст» стоит заводить, когда нужен дополнительный форматированный блок помимо стандартных — например, «Условия доставки» или «Гарантия».
Вывод значений на сайте
Значения обоих типов доступны в массиве свойств элемента. Логику вывода удобно свести в таблицу.
| Тип | Что лежит в значении | Как выводить |
|---|---|---|
| Файл | ID файла (число) | Через CFile::GetPath() или CFile::GetFileArray() получить путь и отдать ссылку/картинку |
| HTML/текст | Массив с ключами TEXT и TYPE | При TYPE = html выводить как есть, при TYPE = text — прогонять через htmlspecialchars() |
В стандартных комплексных компонентах (например, каталога) свойства уже приходят в шаблон в подготовленном виде через ключ DISPLAY_PROPERTIES, где для файла формируется готовая ссылка, а для HTML/текста — безопасное значение с учётом формата.
Важно: для свойства «HTML/текст» нельзя слепо оборачивать значение в htmlspecialchars() — это сломает вёрстку при формате html. Всегда проверяйте ключ TYPE.
Множественные значения и хранение
Оба типа поддерживают режим «Множественное». При его включении:
- В форме элемента появляется несколько полей и кнопка добавления новой строки.
- Значения возвращаются массивом, порядок задаётся полем сортировки внутри значения.
- Для файлов каждый элемент — отдельный ID в таблице файлов.
Учтите нюанс хранения: множественные значения по умолчанию лежат в общей таблице b_iblock_element_property. На больших каталогах это тормозит выборки. В настройках инфоблока на вкладке «Свойства» есть режим хранения свойств «В отдельной таблице» — он ускоряет фильтрацию, но переключение доступно только при отсутствии множественных значений на момент смены режима.
Частые ошибки
Типичные проблемы при работе с этими свойствами:
- Файл «пропал» после сохранения. Обычно причина — расширение не входит в список разрешённых. Проверьте поле «Разрешённые расширения файлов» и регистр (лучше указывать в нижнем регистре).
- HTML выводится как текст с тегами. Значение выводится через
htmlspecialchars()при форматеhtml. Проверяйте ключTYPEперед экранированием. - Старый файл не удаляется. При замене файла через API нужно передавать структуру с ключом
del => 'Y'иold_id, иначе в/upload/копятся «сироты». - Не удаётся переключить хранение свойств в отдельную таблицу. Мешают уже заполненные множественные свойства — сначала очистите значения или смените режим до наполнения инфоблока.
- Кэш показывает старое значение. После правки свойства через API сбрасывайте тегированный кэш инфоблока, иначе на витрине останется прежнее содержимое.
Итог
Свойство «Файл» — для прикрепления документов и изображений, свойство «HTML/текст» — для дополнительных форматированных блоков. Ключевые моменты:
- Задавайте латинский код свойства — по нему удобно обращаться к значению в коде.
- Для файлов ограничивайте расширения, для HTML/текста учитывайте формат
html/textпри выводе. - Множественные значения удобны, но следите за режимом хранения свойств на крупных каталогах.
- После правок через API не забывайте про сброс кэша и удаление старых файлов.
Настроенные таким образом свойства дают контент-менеджеру гибкий и предсказуемый инструмент наполнения карточек без правки шаблонов.