Опишите доработку или сценарий — обсудим вместе с другими клиентами.
Bitrix произвольные поля
Технические данные
Совместимые редакции
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Старт
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Стандарт
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Малый бизнес
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Бизнес
Описание
Bitrix произвольные поля (bitrix custom fields)
Идентификатор модуля: rozmuar.bcf
Модуль добавляет пользовательский тип свойства инфоблока —
«Произвольные поля». Это конструктор полей для карточки элемента: в настройках свойства администратор описывает произвольный набор полей, редактор элемента строит по этому описанию форму ввода, а на страницу значение отдаётся готовой структурой данных для вывода в шаблонах.
Функционально решение близко к WordPress ACF (Advanced Custom Fields): одно свойство заменяет десяток отдельных свойств инфоблока и даёт вложенные структуры, которые штатными средствами Bitrix не собрать.
Что решает- Не нужно заводить отдельное свойство инфоблока под каждое поле карточки и
отдельный инфоблок под каждую повторяющуюся секцию.
- Структура карточки настраивается контент-менеджером в интерфейсе, без
программиста и без правки кода шаблонов при добавлении поля.
- Значение в шаблоне доступно одним обращением — плоским массивом
код => значение, вложенные группы и повторители — вложенными массивами.
Как работает- Настройка свойства (инфоблок → «Свойства» → тип «Произвольные поля (конструктор форм)», вкладка «Дополнительно»). Для каждого поля задаются: код, метка, тип, инструкция для редактора, признак обязательности и настройки под конкретный тип. Порядок полей меняется перетаскиванием за ручку ⠿.
- Заполнение в карточке элемента: модуль рендерит форму по описанию — поля нужных типов, загрузка изображений и файлов штатными средствами Bitrix, живой предпросмотр видео, поиск и выбор элементов инфоблока перетаскиванием.
- Вывод: значение свойства приходит на страницу готовым массивом прямо
- Отдельной системы настроек модуль не имеет
в VALUE:
$res = CIBlockElement::GetByID($elementId);
$element = $res->GetNextElement();
$props = $element->GetProperties();
$data = $props['ACF']['VALUE'];
// [
// 'headline' => 'Заголовок',
// 'gallery' => [128, 129, 130], // ID файлов
// 'author' => [45], // выбор элементов инфоблока — ID
// 'features' => [ // повторитель
// ['title' => 'Быстро', 'text' => '...'],
// ['title' => 'Надёжно', 'text' => '...'],
// ],
// ]
Либо через CIBlockElement::GetProperty(...)->Fetch()['VALUE'].
Типы полейСтрока - однострочный текст
Текст (многострочный) - textarea
Число - целое/дробное, с ограничениями min / max / step
Ползунок (range) - число ползунком, min / max / step
E-mail - поле с проверкой формата
URL - поле с проверкой формата
Пароль - поле с маскировкой ввода
Визуальный редактор - WYSIWYG с переключением в HTML; HTML санитизируется
Сообщение - статичный текст-подсказка в форме, значение не хранит
Видео - ссылка на YouTube / Vimeo / видеофайл; живой предпросмотр в форме, встраивание (<iframe> / <video>) на странице
Выбор элементов инфоблока - инфоблок фиксируется в настройках поля; в карточке — две колонки «Все элементы» / «Выбранные», поиск по названию, перенос и сортировка перетаскиванием, одиночный или множественный выбор, лимит; значение — упорядоченный массив ID
Список (select) - выпадающий список; допускается множественный выбор
Флажки (checkbox) - набор флажков (множественный выбор)
Переключатель (radio) - выбор одного значения
Группа кнопок - то же, что radio, кнопками Да / Нет булев флаг
Ссылка - URL + текст + target; схема URL проверяется
Изображение - одно изображение через CFile, с превью
Файл - один произвольный файл через CFile
Галерея - несколько изображений, с лимитом
Дата - выбор даты
Дата и время - выбор даты и времени
Время - выбор времени
Цвет - выбор цвета
Вкладка - визуальный разделитель формы, значение не хранит
Группа полей - один вложенный набор полей (объект)
Повторитель - повторяющиеся вложенные наборы полей (массив объектов)
Bitrix произвольные поля (bitrix custom fields)
Идентификатор модуля: rozmuar.bcf
1. ТРЕБОВАНИЯ
Продукт: 1С-Битрикс: Управление сайтом или Битрикс24 в коробке, ядро D7.
Модули: «Информационные блоки» (iblock) — должен быть установлен.
PHP: 7.4 или новее.
СУБД: MySQL.
Права: администратор портала.
Перед установкой рекомендуется сделать резервную копию файлов и базы данных.
2. УСТАНОВКА
2.1. Откройте в панели управления раздел Marketplace — Установленные решения
(адрес /bitrix/admin/partner_modules.php).
2.2. Найдите в списке «Bitrix произвольные поля (bitrix custom fields)» и
нажмите «Установить». Подтвердите установку.
При установке модуль:
- регистрируется в системе;
- создаёт таблицу rozmuar_bcf_value (развёрнутый снимок значений) и индекс
по полям ELEMENT_ID, PROPERTY_ID;
- регистрирует пользовательский тип свойства инфоблока и обработчики событий
информационных блоков (OnIBlockPropertyBuildList,
OnBeforeIBlockElementAdd, OnBeforeIBlockElementUpdate,
OnBeforeIBlockElementDelete, OnAfterIBlockElementAdd,
OnAfterIBlockElementUpdate);
- запускает отсчёт демонстрационного периода (5 дней).
2.3. ОБЯЗАТЕЛЬНО ПОСЛЕ УСТАНОВКИ — СБРОСИТЬ КЕШ.
Поле «Выбор элементов инфоблока» использует AJAX-контроллер, который
регистрируется через файл .settings.php. Чтобы платформа его увидела, после
установки (или после обновления с версии ниже 0.2.0) очистите кеш:
Настройки — Настройки продукта — Автокеширование
(адрес /bitrix/admin/cache.php) — кнопка «Очистить весь кеш».
Без этого шага в поле «Выбор элементов инфоблока» левая колонка «Все элементы»
будет пустой (в ней выводится сообщение о причине).
3. СОЗДАНИЕ СВОЙСТВА
3.1. Откройте Контент — Информационные блоки — тип инфоблока — нужный
инфоблок — Свойства (или «Настроить», вкладка «Свойства»).
3.2. Добавьте свойство. В колонке «Тип» выберите
«Произвольные поля (конструктор форм)».
3.3. Задайте код свойства (по нему значение читается в шаблоне, например ACF)
и символьный код, сохраните.
Свойство всегда одиночное (не множественное) — один набор полей на элемент.
Множественность обеспечивают типы «Повторитель» и «Галерея» внутри набора.
4. НАСТРОЙКА НАБОРА ПОЛЕЙ
Откройте свойство на редактирование и перейдите на вкладку «Дополнительно».
Здесь находится конструктор полей. Кнопка «Добавить поле» добавляет строку.
Для каждого поля задаются:
- Код — латиница, цифры, знак подчёркивания; ключ поля в значении;
- Метка — подпись поля в форме элемента;
- Тип — один из типов (см. пункт 4.1);
- Инструкция — подсказка под полем для редактора;
- Обязательное — проверка заполнения при сохранении элемента.
Порядок полей меняется перетаскиванием за ручку слева от строки. Порядок
сохранённого конфигуратора совпадает с порядком полей в форме и в значении.
4.1. Дополнительные настройки по типам полей:
- Число, Ползунок — минимум, максимум, шаг.
- Список, Флажки, Переключатель, Группа кнопок — список вариантов построчно
в формате «значение : подпись», признак множественности, признак
«разрешить пустое значение».
- Галерея — максимальное количество изображений.
- Сообщение — текст сообщения (выводится в форме как есть, значение не
хранится).
- Видео — отдельных настроек нет; редактор вставляет ссылку в карточке
элемента.
- Выбор элементов инфоблока — инфоблок из списка (показываются только
доступные вам), признак «несколько» (по умолчанию включён), лимит
количества.
- Группа полей, Повторитель — вложенный конструктор подполей (та же форма,
вложенность до 5 уровней).
Сохраните свойство.
5. ЗАПОЛНЕНИЕ В КАРТОЧКЕ ЭЛЕМЕНТА
Откройте Контент — инфоблок — элемент на редактирование. У свойства
отображается форма настроенных полей:
- Изображение, Файл, Галерея — стандартный выбор файла платформы (не вставка
ссылки). Файлы сохраняются в каталог /upload/rozmuar.bcf/.
- Видео — вставьте ссылку на YouTube, Vimeo или прямую ссылку на видеофайл;
под полем появится предпросмотр.
- Выбор элементов инфоблока — две колонки: слева «Все элементы» (с
постраничной подгрузкой и поиском по названию сверху), справа «Выбранные».
Перенос — перетаскиванием или двойным щелчком, крестик — убрать, порядок в
«Выбранных» задаётся перетаскиванием.
- Повторитель — кнопка добавления группы, удаление и сортировка групп.
5.1. Ограничение на объём загрузки.
Одновременная загрузка большого количества или объёма файлов ограничена
настройками PHP post_max_size и upload_max_filesize. При превышении форма
предупредит и не сохранит изменения (чтобы не потерять данные). Крупные файлы
загружайте частями или увеличьте лимиты PHP.
6. ВЫВОД ЗНАЧЕНИЯ В ШАБЛОНЕ
Значение приходит плоским массивом «код => значение» в элементе VALUE:
$res = CIBlockElement::GetByID($elementId);
$element = $res->GetNextElement();
$props = $element->GetProperties();
$data = $props['ACF']['VALUE'];
Примеры по типам:
// строка, текст, число, дата, цвет — скалярное значение
echo htmlspecialcharsbx($data['headline']);
// визуальный редактор — уже санитизированный HTML
echo $data['body'];
// изображение — идентификатор файла
$img = CFile::GetPath($data['photo']);
// галерея — массив идентификаторов файлов
foreach ($data['gallery'] as $fileId) {
echo '<img src="' . CFile::GetPath($fileId) . '">';
}
// выбор элементов инфоблока — массив идентификаторов в заданном порядке
$ids = $data['related'];
$rs = CIBlockElement::GetList(['SORT' => 'ASC'], ['ID' => $ids], false, false,
['ID', 'NAME', 'DETAIL_PAGE_URL']);
while ($row = $rs->GetNext()) { /* ... */ }
// группа полей — вложенный массив
echo $data['author']['name'];
// повторитель — массив вложенных массивов
foreach ($data['features'] as $item) {
echo $item['title'], ': ', $item['text'];
}
Для отчётов и произвольных SQL-выборок доступен развёрнутый снимок значения в
таблице rozmuar_bcf_value (колонки ELEMENT_ID, PROPERTY_ID, GROUP_INDEX,
FIELD_CODE, FIELD_TYPE, VALUE_TEXT, VALUE_FILE_ID).
7. ОБНОВЛЕНИЕ МОДУЛЯ
Обновления приходят через систему обновлений 1С-Битрикс
(адрес /bitrix/admin/update_system.php) и устанавливаются автоматически.
После обновления с версий ниже 0.2.0 повторите сброс кеша (пункт 2.3).
8. УДАЛЕНИЕ
Marketplace — Установленные решения — модуль — «Удалить».
- Без флага «Сохранить данные» удаляется таблица rozmuar_bcf_value; события
и тип свойства снимаются с регистрации.
- Значения в свойствах инфоблока и загруженные файлы при удалении модуля не
стираются.
- Счётчик демонстрационного периода намеренно сохраняется (переустановка не
продлевает демо-период).
9. ДИАГНОСТИКА
- В поле «Выбор элементов инфоблока» левая колонка пустая.
Причина: не сброшен кеш после установки или обновления. Решение: пункт 2.3.
В самой колонке выводится точная причина (не выбран инфоблок, контроллер
недоступен, нет доступных элементов).
- Сообщение «BX.ajax недоступен на этой странице».
Причина: страница открыта вне стандартной административной панели.
Решение: используйте штатную карточку элемента.
- Не сохраняются значения при загрузке многих файлов.
Причина: превышен post_max_size. Решение: пункт 5.1.
- Некорректные символы в значениях на сайте с кодировкой cp1251.
Модуль поддерживает cp1251; проверьте, что константы SITE_CHARSET и
LANG_CHARSET заданы корректно.
- В карточке элемента показана плашка «режим просмотра».
Причина: истёк демонстрационный период (5 дней). Решение: приобретите
решение на Marketplace. Сохранённые данные и вывод на сайте продолжают
работать в любом случае.
Техническая поддержка: info@rozmuar.ru
Время работы с 9:00 до 19:00
сайт rozmuar.ru.
или в telegram @shaadanio
Установите этот модуль прямо сейчас!
Для этого укажите адрес сайта:
Подтвердите что сама лицензия у вас куплена
