# Gallery3xFiles

## Gallery3xFiles

Сниппет для вывода файловых вложений ресурса на фронтенде сайта. Отображает файлы, загруженные через вкладку «Файлы G3x» в редакторе ресурса MODX. Поддерживает фильтрацию, сортировку, группировку и вывод через Fenom или стандартный синтаксис MODX.

---

### Параметры

<table id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%A2%D0%B8%D0%BF-%D0%9F%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB"><thead><tr><th>Параметр</th><th>Тип</th><th>По умолчанию</th><th>Описание</th></tr></thead><tbody><tr><td>`resource`</td><td>int</td><td>ID текущего ресурса</td><td>ID ресурса, файлы которого выводятся</td></tr><tr><td>`resources`</td><td>string</td><td>—</td><td>Список ID ресурсов через запятую. Отрицательное значение исключает ресурс (например: `5,10,-3`)</td></tr><tr><td>`parents`</td><td>string</td><td>—</td><td>ID родительских ресурсов через запятую. Выводятся файлы всех дочерних ресурсов (глубина до 10 уровней)</td></tr><tr><td>`group`</td><td>string</td><td>—</td><td>Фильтр по группе или нескольким группам через запятую. Поддерживается мультигруппа</td></tr><tr><td>`limit`</td><td>int</td><td>`0`</td><td>Максимальное количество файлов. `0` — без ограничения</td></tr><tr><td>`offset`</td><td>int</td><td>`0`</td><td>Смещение выборки (для пагинации)</td></tr><tr><td>`sortby`</td><td>string</td><td>`position`</td><td>Поле сортировки: `position`, `name`, `size`, `createdon`, `type`</td></tr><tr><td>`sortdir`</td><td>string</td><td>`ASC`</td><td>Направление сортировки: `ASC` или `DESC`</td></tr><tr><td>`showInactive`</td><td>int</td><td>`0`</td><td>Показывать деактивированные файлы. `1` — показывать</td></tr><tr><td>`where`</td><td>JSON</td><td>—</td><td>Дополнительные условия xPDO-запроса в формате JSON. Например: `{"type":"pdf"}`</td></tr><tr><td>`tplOuter`</td><td>string</td><td>`tpl.Gallery3x.Files.outer`</td><td>Чанк-обёртка всего списка</td></tr><tr><td>`tplItem`</td><td>string</td><td>`tpl.Gallery3x.Files.item`</td><td>Чанк одного файла (используется при стандартном синтаксисе MODX)</td></tr><tr><td>`fenom`</td><td>int</td><td>`0`</td><td>Использовать Fenom для рендеринга. Требует pdoTools. При `1` весь массив передаётся в `tplOuter`</td></tr><tr><td>`return`</td><td>string</td><td>—</td><td>Вернуть данные вместо HTML: `data` — PHP-массив, `json` — JSON-строка, `ids` — массив ID</td></tr><tr><td>`toPlaceholder`</td><td>string</td><td>—</td><td>Сохранить результат в указанный плейсхолдер вместо вывода на страницу</td></tr><tr><td>`debug`</td><td>int</td><td>`0`</td><td>Режим отладки. При `1` выводит параметры запроса и данные найденных файлов</td></tr></tbody></table>

---

### Доступные поля в шаблонах

Каждый элемент содержит следующие поля:

<table id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-id-id-"><thead><tr><th>Поле</th><th>Описание</th></tr></thead><tbody><tr><td>`id`</td><td>ID записи в базе данных</td></tr><tr><td>`resource_id`</td><td>ID ресурса MODX</td></tr><tr><td>`file`</td><td>Имя файла</td></tr><tr><td>`path`</td><td>Относительный путь к папке файла</td></tr><tr><td>`url`</td><td>Полный URL файла через медиасорс</td></tr><tr><td>`name`</td><td>Заголовок файла (заданный вручную)</td></tr><tr><td>`description`</td><td>Описание файла</td></tr><tr><td>`type`</td><td>MIME-тип файла</td></tr><tr><td>`ext`</td><td>Расширение файла в нижнем регистре (например, `pdf`, `zip`)</td></tr><tr><td>`size`</td><td>Размер файла в байтах</td></tr><tr><td>`size_formatted`</td><td>Размер файла в читаемом виде: `1.2 MB`, `340 KB`, `512 B`</td></tr><tr><td>`group`</td><td>Группы через разделитель `||` (внутренний формат хранения)</td></tr><tr><td>`groups_list`</td><td>Группы через запятую (удобно для вывода в шаблоне)</td></tr><tr><td>`active`</td><td>Активность: `1` — активен, `0` — скрыт</td></tr><tr><td>`position`</td><td>Порядковый номер сортировки</td></tr><tr><td>`createdon`</td><td>Дата загрузки (Unix timestamp)</td></tr></tbody></table>

В `tplOuter` дополнительно передаются:

<table id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-total-"><thead><tr><th>Поле</th><th>Описание</th></tr></thead><tbody><tr><td>`total`</td><td>Общее количество найденных файлов</td></tr><tr><td>`first`</td><td>Массив данных первого файла (для быстрого доступа)</td></tr><tr><td>`files`</td><td>Весь массив файлов (только при Fenom)</td></tr><tr><td>`items`</td><td>Готовый HTML из всех `tplItem` (только при стандартном синтаксисе)</td></tr></tbody></table>

---

### Примеры вызова

**Минимальный (текущий ресурс, стандартный синтаксис):**

```
[[!Gallery3xFiles]]
```

**С Fenom:**

```
[[!Gallery3xFiles?
    &tplOuter=`tpl.Gallery3x.Files.outer.fenom`
    &fenom=`1`
]]
```

**Фильтр по группе, ограничение количества:**

```
[[!Gallery3xFiles?
    &group=`документы`
    &limit=`10`
    &sortby=`name`
    &sortdir=`ASC`
]]
```

**Файлы нескольких ресурсов:**

```
[[!Gallery3xFiles?
    &resources=`5,10,15`
    &fenom=`1`
    &tplOuter=`tpl.Gallery3x.Files.outer.fenom`
]]
```

**Получить JSON (для JavaScript или Fenom-обработки):**

```
[[!Gallery3xFiles?
    &return=`json`
]]
```

**Сохранить в плейсхолдер:**

```
[[!Gallery3xFiles?
    &toPlaceholder=`myFiles`
]]
```

**Фильтрация через `where` (только PDF):**

```
[[!Gallery3xFiles?
    &where=`{"type":"application/pdf"}`
]]
```