3. Описание MCP-сервера › 3.3 Движок › Файлы элементов

Раздел engine_files_* работает с файлами, прикреплёнными к строкам магазина: фото товара, сертификат, прайс-лист поставщика. Файлы оформления шаблонов — картинки, шрифты, значки — это раздел «Картинки».

Где лежит файл

Файл элемента — это строка таблицы files_<сущность> и сам файл на диске сервера:

files/<год>/<месяц_день>/<час_минута>/<таблица>_<пользователь>_<id>.<расширение>

Папку движок строит из времени загрузки до минуты, имя придумывает сам. Имя, под которым файл видят люди, хранится в real_name.

Расширение остаётся в имени, только если оно из списка безопасных: картинки, документы, архивы, звук и видео, шрифты, файлы дизайна. Файл другого типа — например, php, html или svg — ложится на диск без расширения: так веб-сервер не выполнит его и не покажет как страницу. Прежнее имя сохраняется в real_name.

Сущность

entity — имя таблицы-владельца, от него идёт остальное:

Из entity Получается Пример для store
таблица-владелец <entity> store
таблица файлов files_<entity> files_store
реестр видов строки key_value с key_code = 'FILES_<ENTITY>' FILES_STORE

Сущность годится, если у магазина есть таблица files_<сущность> с генератором. В этой версии их тринадцать: store, info, info_value, brand, topic, key_value, lang, field, advert_text, order_option, order_option_value, web_key, web_key_value. Фото товара — store.

Вид и порядок

kind_key делит файлы элемента на группы, по умолчанию kBase. Если в реестре видов таблицы есть строки, другой вид отказывает со списком допустимых; если реестр пуст, подходит любой. Порядок pos считается внутри группы: новый файл встаёт в её конец.

Чего нет

Таблица в работе

Добавление и удаление берут files_<сущность> в работу на время вызова и отмечают её для кеша витрины. Если таблицу держит кто-то другой — чаще всего открытое окно программы, — оба отказывают, ничего не записав. Загрузка только читает, и занятая таблица ей не мешает.

В разметке

Путь к файлу собирают из полей строки, а не из готовой папки:

<img src="{IMG:UPLOAD_TIME|path}{IMG:FILE_NAME}">

Модификатор path описан в «Модификаторах».