Перейти к основному содержимому

Структура базы данных

Пять таблиц с префиксом MODX (modx_prism_* при стандартном префиксе). Всё описанное здесь лежит и в самой установке — core/components/prism/schema/prism.mysql.schema.xml, по этому файлу сделаны классы модели. Если что-то расходится, смотрите в него.

Файлов в базе нет

В таблицах только записи о медиа. Сами файлы остаются в Media Source MODX — обычными файлами сайта. Удаление записи удаляет и файл, если включена настройка prism.cleanup_on_delete.

prism_item​

Класс модели Prism\Model\Item. Все медиа одной таблицей. Тип отличает изображение от видео, файла и embed; лишние для типа колонки остаются пустыми. Поэтому prismMixed выбирает всё сразу одним запросом, а не объединяет четыре почти одинаковые таблицы.

ПолеТипПо умолчаниюНазначение
idint unsignedAUTO_INCREMENTПервичный ключ.
typeenum('image','video','file','embed')imageТип элемента. Одна таблица на все типы — изображения, видео, файлы и embed отличаются только этим полем и набором заполненных колонок.
resource_idint(10) unsigned0Ресурс MODX, к которому прикреплён элемент.
parentint(10) unsigned0Родительский элемент. Используется постером видео: постер — обычный элемент, ссылающийся на своё видео.
source_idint(10) unsigned0Media Source, в котором лежит файл.
pathvarchar(255)—Папка внутри источника, например prism/12/. Заканчивается слэшем.
filevarchar(255)—Имя файла. У внешнего видео и embed пустое.
urltextNULLВнешний адрес: страница видео у провайдера. У изображений и файлов пустой — адрес собирается из источника, пути и имени.
providervarchar(32)—youtube, vimeo, dailymotion, rutube, local — для видео.
provider_idvarchar(128)—Идентификатор ролика у провайдера.
embed_codetextNULLГотовый санитизированный iframe для embed и внешнего видео.
namevarchar(255)—Имя, показываемое в панели. По умолчанию — исходное имя файла.
titlevarchar(255)—Заголовок для вывода на сайте.
altvarchar(255)—Альтернативный текст изображения.
descriptiontextNULLОписание.
hashchar(40)—SHA-1 содержимого файла. По нему работает дедупликация при загрузке.
mimevarchar(64)—MIME-тип, определённый по содержимому, а не по расширению.
sizeint(10) unsigned0Размер файла в байтах.
widthint(10) unsigned0Ширина оригинала в пикселях.
heightint(10) unsigned0Высота оригинала в пикселях.
durationint(10) unsigned0Длительность видео в секундах.
focal_xdecimal(5,4)0.5000Точка фокуса по горизонтали, 0..1. Вокруг неё кадрируют пресеты с position: focal.
focal_ydecimal(5,4)0.5000Точка фокуса по вертикали, 0..1.
propertiesjsonNULLСлужебные данные: доминантный цвет, blurhash, EXIF, адрес плеера, счётчик скачиваний, кадр crop = [x, y, w, h] долями оригинала.
extrajsonNULLЗначения пользовательских полей: ключ поля → значение. По ним можно сортировать и фильтровать (extra.имя).
rankint(10) unsigned0Порядок в панели и в выводе по умолчанию.
activetinyint(1) unsigned1Показывать на сайте. Неактивные видны только с &showInactive=1.
featuredtinyint(1) unsigned0Особый элемент: поднимается вперёд при &featuredFirst=1, берётся обложкой в prismThumbnail.
createdbyint(10) unsigned0Автор.
createdondatetimeNULLКогда создан.
editedbyint(10) unsigned0Кто правил последним.
editedondatetimeNULLКогда правили.

Индексы

ИмяКолонкиУникальный
typetypeнет
resource_idresource_idнет
parentparentнет
hashhashнет
rankrankнет
source_path_filesource_id, path(191), file(191), typeнет

Связи

АлиасКлассВид
ItemTagsPrism\Model\ItemTagкомпозит, удаляется каскадом, id → item_id
ResourceMODX\Revolution\modResourceагрегат, resource_id → id
SourceMODX\Revolution\Sources\modMediaSourceагрегат, source_id → id
CreatedByMODX\Revolution\modUserагрегат, createdby → id
EditedByMODX\Revolution\modUserагрегат, editedby → id

prism_tag​

Класс модели Prism\Model\Tag. Теги общие для всего сайта, а не для отдельного ресурса.

ПолеТипПо умолчаниюНазначение
idint unsignedAUTO_INCREMENTПервичный ключ.
namevarchar(100)—Отображаемое имя тега.
aliasvarchar(100)—Латинский алиас, по нему фильтруют в &tags. Уникален.
colorvarchar(7)—Цвет метки в панели, #rrggbb.
rankint(10) unsigned0Порядок в списке тегов.

Индексы

ИмяКолонкиУникальный
aliasaliasда
rankrankнет

Связи

АлиасКлассВид
ItemTagsPrism\Model\ItemTagкомпозит, удаляется каскадом, id → tag_id

prism_item_tag​

Класс модели Prism\Model\ItemTag. Связь многие-ко-многим между элементами и тегами.

ПолеТипПо умолчаниюНазначение
idint unsignedAUTO_INCREMENTПервичный ключ.
item_idint(10) unsigned0Элемент.
tag_idint(10) unsigned0Тег.

Индексы

ИмяКолонкиУникальный
item_tagitem_id, tag_idда
tag_idtag_idнет

Связи

АлиасКлассВид
ItemPrism\Model\Itemагрегат, item_id → id
TagPrism\Model\Tagагрегат, tag_id → id

prism_preset​

Класс модели Prism\Model\Preset. Пресеты превью. Правятся на странице настроек, а не в конфиге.

ПолеТипПо умолчаниюНазначение
idint unsignedAUTO_INCREMENTПервичный ключ.
namevarchar(50)—Имя пресета, оно же попадает в адрес превью.
widthint(10) unsigned0Ширина рамки, 0 — не ограничивать.
heightint(10) unsigned0Высота рамки, 0 — не ограничивать.
fitenum('contain','crop','fill')containcontain — вписать без обрезки, crop — заполнить рамку с обрезкой, fill — заполнить с полями.
positionvarchar(20)focalfocal — кадрировать вокруг точки фокуса элемента, либо сторона или угол.
formatenum('auto','webp','avif','jpg','png')autoauto даёт picture с avif и webp; либо конкретный формат.
qualitytinyint(3) unsigned82Качество для jpg, webp, avif.
dprjsonNULLПлотности, для которых готовится srcset, например [1, 2].
optionsjsonNULLВодяной знак и фильтры этого пресета поверх общих настроек. Только параметры эффектов.
rankint(10) unsigned0Порядок в списке пресетов.

Индексы

ИмяКолонкиУникальный
namenameда

prism_field​

Класс модели Prism\Model\Field. Определения пользовательских полей. Значения лежат в Item.extra, отдельной таблицы значений нет.

ПолеТипПо умолчаниюНазначение
idint unsignedAUTO_INCREMENTПервичный ключ.
namevarchar(50)—Ключ поля, латиницей. В чанках доступно как [[+extra.ключ]].
captionvarchar(255)—Подпись в диалоге элемента.
typeenum('text','textarea','number','date','bool','select')textТип значения; по нему значение проверяется при сохранении и приводится при сортировке.
optionsjsonNULLВарианты для типа select.
applies_tovarchar(64)image,video,file,embedТипы элементов, к которым применяется поле, через запятую.
rankint(10) unsigned0Порядок полей в диалоге.

Индексы

ИмяКолонкиУникальный
namenameда