Структура Базы Данных

Gallery3x1 мин чтенияСтраница 18 из 22
На этой странице 5

Четыре таблицы, классы xPDO — в пространстве Gallery3x\Model. Пакет подключается компонентом сам, в своём коде достаточно $modx->getCollection(\Gallery3x\Model\Gallery3xFile::class, [...]).

ТаблицаКлассЧто хранит
gallery3x_filesGallery3xFileИзображения
gallery3x_videosGallery3xVideoВидео
gallery3x_attachmentsGallery3xAttachmentФайлы-вложения
gallery3x_embedsGallery3xEmbedEmbed (карты, виджеты, iframe)

Во всех таблицах есть id, resource_id (ресурс) и source_id (источник файлов), а также общие поля:

ПолеТипОписание
positionintПорядок
groupvarcharГруппы через ||
extra_text, extra_text2varcharДополнительные текстовые поля
extra_numintДополнительное число
extra_datedatetimeДополнительная дата
activetinyint1 — показывается, 0 — выключено
createdon, updatedondatetimeДаты создания и изменения
createdby, updatedbyintID пользователей

gallery3x_files

ПолеТипОписание
namevarcharНазвание
alttextАльтернативный текст
descriptiontextОписание (HTML)
pathvarcharПапка внутри источника, например 15/
filevarcharИмя файла оригинала
type, sizevarchar, intMIME-тип и размер в байтах
hashvarcharMD5 файла
propertiestext (JSON)Данные превью: thumbnails.<размер>.path и т.д.
specialtinyint«Особенное»
parent_idintЗарезервировано

gallery3x_videos

ПолеТипОписание
urltextСсылка на видео
service, video_idvarcharСервис (youtube, rutube, vk, kinescope …) и ID видео на нём
title, descriptionvarchar, textНазвание и описание
thumbnailvarcharОбложка (путь в источнике)
specialtinyint«Особенное»

gallery3x_attachments

ПолеТипОписание
name, descriptionvarchar, textЗаголовок и описание
path, filevarcharПапка и имя файла
type, sizevarchar, intMIME-тип и размер
hashvarcharMD5 файла

gallery3x_embeds

ПолеТипОписание
title, descriptionvarchar, textЗаголовок и описание
modevarcharurl — по ссылке, code — готовый код
url, codetext, mediumtextИсходная ссылка или код вставки
provider, embed_idvarcharРаспознанный сервис (yandex_map, google_map) и итоговый адрес iframe
heightintВысота, px (пусто — 400)
thumbnailvarcharПревью
specialtinyint«Особенное»

Пример

$files = $modx->getCollection(\Gallery3x\Model\Gallery3xFile::class, [
    'resource_id' => 12,
    'active' => 1,
]);
foreach ($files as $file) {
    $thumbs = $file->get('properties')['thumbnails'] ?? [];
    echo $file->get('name'), ': ', $thumbs['small']['path'] ?? '', "\n";
}

Адреса строите через источник файлов ($source->getBaseUrl() . path) или берите готовые из сниппетов — пути в базе относительные.