Руководство Melbis Shop: оглавление
Раздел 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 считается внутри группы: новый файл встаёт в её
конец.
tool_run: файлы, которые команда не
назвала своими, магазин стирает с диска сам, сразу после вызова.Добавление и удаление берут files_<сущность> в
работу на время вызова и отмечают её для кеша витрины. Если таблицу
держит кто-то другой — чаще всего открытое окно программы, — оба
отказывают, ничего не записав. Загрузка только читает, и занятая таблица
ей не мешает.
Путь к файлу собирают из полей строки, а не из готовой папки:
<img src="{IMG:UPLOAD_TIME|path}{IMG:FILE_NAME}">Модификатор path описан в «Модификаторах».