Налаштування DAM (управління цифровими активами) для 1С-Бітрікс
DAM — це централізоване сховище медіафайлів з метаданими, тегами, правами доступу та версіонуванням. У Бітрікс роль DAM виконує модуль Медіабібліотека (fileman), але в базовій конфігурації він працює як просте файлове дерево без структурованих метаданих і пошуку за вмістом.
Архітектура модуля Медіабібліотека
Файли зберігаються в таблиці b_file — це центральний реєстр усіх файлів у системі. Поля: ID, MODULE_ID, HEIGHT, WIDTH, FILE_SIZE, CONTENT_TYPE, SUBDIR, FILE_NAME, ORIGINAL_NAME, DESCRIPTION, HANDLER_ID.
Медіабібліотека додає поверх цього структуру папок через b_medialib_collection і прив'язку файлів до колекцій через b_medialib_item. Кожен елемент (b_medialib_item) містить поля KEYWORD (теги через кому) і DESCRIPTION.
Для повноцінного DAM бракує: ієрархічних тегів, зв'язку з продуктами каталогу, історії версій, прав на рівні файлу.
Розширення метаданих
Призначені властивості медіафайлів додаються через користувацькі типи в b_uts_medialib_item. Таблиця створюється автоматично при додаванні UF-полів через інтерфейс:
Налаштування → Користувачі → Користувацькі поля → Тип об'єкта: MEDIALIB_ITEM
Типовий набір полів для DAM:
-
UF_COPYRIGHT— правовласник (рядок) -
UF_LICENSE— тип ліцензії (список) -
UF_EXPIRY_DATE— термін дії прав (дата) -
UF_USAGE_RIGHTS— сфери застосування (множинний список) -
UF_PHOTOGRAPHER— автор (рядок)
Після додавання полів вони доступні в інтерфейсі медіабібліотеки та через API CMedialibItem::GetList().
Прив'язка DAM до каталогу
Головне завдання DAM в інтернет-магазині — пов'язати медіафайли з товарами так, щоб одне зображення використовувалось у кількох місцях без дублювання файлу. У Бітрікс це вирішується через властивість інфоблоку типу «Прив'язка до елементів медіабібліотеки».
Створюється властивість в інфоблоці каталогу з типом E:MEDIALIB — це прив'язка до b_medialib_item.ID. При зміні файлу в медіабібліотеці всі товари, що його використовують, автоматично отримують оновлену версію.
Пошук по медіабібліотеці
Стандартний пошук по b_medialib_item працює лише за NAME і KEYWORD. Для пошуку за UF-полями потрібен кастомний запит:
$items = CMedialibItem::GetList([
'order' => ['ID' => 'DESC'],
'filter' => [
'KEYWORD' => 'product-photo',
'UF_LICENSE' => 'royalty-free',
],
'arSelectFields' => ['ID', 'NAME', 'FILE_ID', 'UF_COPYRIGHT'],
]);
Для повнотекстового пошуку за метаданими підключається модуль search — у методі CSearch::Index() індексуються поля UF.
Завантаження через API
Програмне завантаження файлу в медіабібліотеку з метаданими:
CModule::IncludeModule('fileman');
$fileId = CFile::SaveFile([
'name' => 'product-main.jpg',
'type' => 'image/jpeg',
'tmp_name' => '/tmp/upload.jpg',
'MODULE_ID' => 'fileman',
], 'medialib');
$itemId = CMedialibItem::Add([
'COLLECTION_ID' => $collectionId,
'FILE_ID' => $fileId,
'NAME' => 'Фото товару',
'KEYWORD' => 'каталог, сезон-2024',
'FIELDS' => [
'UF_COPYRIGHT' => 'Acme Studio',
'UF_LICENSE' => 'royalty-free',
],
]);
Що входить у налаштування
- Аудит поточної структури медіабібліотеки та файлового сховища
- Створення ієрархії колекцій під потреби проекту
- Додавання UF-полів для розширених метаданих
- Налаштування прив'язки медіабібліотеки до інфоблоку каталогу
- Реалізація розширеного пошуку за метаданими
- Налаштування прав доступу до колекцій за групами користувачів







