Содержание
полей активов | Документация Craft CMS
Поля ресурсов позволяют связать ресурсы с другими элементами.
Настройки
Поля ресурсов имеют следующие настройки:
Ограничить загрузку в одну папку? – Должна ли загрузка файлов/связь ограничиваться одной папкой.
Если этот параметр включен, будет виден следующий параметр:
- Местоположение загрузки — место, в которое следует сохранять файлы, перетащенные непосредственно в поле.
Если этот параметр отключен, будут видны следующие параметры:
- Источники – с какими объемами активов (или другими источниками индексов активов) поле должно связывать активы.
- Местоположение загрузки по умолчанию — Местоположение по умолчанию, в котором должны сохраняться файлы, перетаскиваемые непосредственно в поле.
Ограничить разрешенные типы файлов? Должна ли поле иметь возможность загружать/связывать файлы только определенного типа (типов).
Ограничение — максимальное количество объектов, которые могут быть одновременно связаны с полем. (По умолчанию нет ограничений.)
Режим просмотра – Как поле должно отображаться для авторов.
Метка выбора — метка, которая должна использоваться на кнопке выбора поля.
Многосайтовые настройки
При многосайтовых установках также будут доступны следующие настройки (до Расширенный ):
Связать активы с определенного сайта? – разрешать ли отношения только к объектам с определенного сайта.
Если этот параметр включен, появится новый параметр, в котором вы сможете выбрать сайт.
Если отключить, связанные ресурсы всегда будут извлекаться с текущего сайта.
Управление отношениями для каждого сайта — Должен ли каждый сайт получать свой собственный набор связанных активов.
Динамические пути к подпапкам
Пути к подпапкам, определенные настройками Место загрузки и Место загрузки по умолчанию , могут дополнительно содержать теги Twig (например, новости/{{ slug }}
).
Здесь можно использовать любые свойства, поддерживаемые исходным элементом (элементом с полем Assets).
Если вы хотите включить идентификатор или UID записи в динамический путь к подпапке, используйте {canonicalId}
или {canonicalUid}
, а не {id}
или {uid}
, поэтому используется идентификатор или UID исходной записи, а не редакция/черновик.
Если вы создаете поле Assets в поле Matrix, исходным элементом будет блок Matrix, а не элемент, на котором создается поле Matrix.
Таким образом, если ваше поле Matrix прикреплено к записи и вы хотите вывести идентификатор записи в динамическом пути к подпапке, используйте owner. id
вместо id
.
Если отображаемый путь к подпапке оказывается пустым или содержит начальную или конечную косую черту (например, foo/
) или пустой сегмент (например, foo//bar
), Craft интерпретирует это как признак того, что переменная в шаблоне подпапки не удалось успешно разрешить, и путь будет считаться недействительным. Если вы намеренно выводите пустой сегмент, выведите :ignore:
. Например, если вы хотите вывести первую выбранную категорию или ничего, если ее нет, сделайте следующее:
В поле «Поле»
В полях «Активы» перечислены все активы, связанные в настоящее время, с кнопкой для выбора новых.
При выборе Добавить ресурс откроется модальное окно, в котором вы сможете найти и выбрать дополнительные ресурсы, а также загрузить новые.
Вы также можете загружать ресурсы, перетаскивая файлы прямо в поле ресурсов или модальное окно.
Редактирование встроенного ресурса
При двойном щелчке по связанному ресурсу появится HUD, где вы можете отредактировать заголовок ресурса и настраиваемые поля, а также запустить Редактор изображений (если это изображение).
Вы можете выбрать, какие настраиваемые поля должны быть доступны для ваших активов из Настройки → Активы → [Имя тома] → Расположение полей .
Разработка
Запрос элементов с полями активов
При запросе элементов, у которых есть поле «Активы», вы можете отфильтровать результаты на основе данных поля «Активы», используя параметр запроса, названный в честь дескриптора вашего поля.
Возможные значения:
Значение | Извлекает элементы… |
---|---|
':empty:' | , которые не имеют связанных активов. |
':notempty:' | , у которых есть хотя бы один связанный актив. |
100 | , которые связаны с активом с идентификатором 100.0170 |
[':пусто:', 100, 200] | без связанных активов или связаны с активом с идентификатором 100 или 200. |
['0,', 10 200] | , которые связаны с активами с идентификаторами 100 и 200. |
Актив (opens new window) объект | , которые связаны с активом. |
объект AssetQuery (opens new window) | , который связан с любым из результирующих активов. |
- Twig
- PHP
Работа с данными поля Assets
Если в вашем шаблоне есть элемент с полем Assets, вы можете получить доступ к связанным с ним активам, используя дескриптор поля Assets:
9000 Twig:
Это даст вам запрос актива, подготовленный для вывода всех связанных активов для данного поля.
Чтобы перебрать все связанные активы, вызовите all() (откроется новое окно), а затем выполните цикл по результатам:
- Twig
- PHP
При использовании assets.url
или assets.getUrl()
исходный том актива должен иметь В противном случае результат всегда будет пустым.
Если вам нужен только первый связанный ресурс, вместо этого вызовите one() (откроется новое окно) и убедитесь, что он что-то вернул:
- Twig
- PHP
Если вам нужно проверить связанные ресурсы, не извлекая их, вы можете позвонить в exists() (открывается в новом окне):
- Twig
- PHP
Вы также можете установить параметры запроса актива. Например, чтобы убедиться, что возвращаются только изображения, вы можете установить параметр вида:
- Twig
- PHP
Всегда полезно клонировать запрос актива с помощью функции clone() перед настройкой его параметров, поэтому параметры не будут иметь неожиданных последствий в дальнейшем в вашем шаблоне.
Сохранение полей активов
Если у вас есть форма элемента, такая как форма ввода (открывается в новом окне), которая должна содержать поле «Активы», вам нужно будет отправить значение поля в виде списка идентификаторов активов в порядке вы хотите, чтобы они были связаны.
Например, вы можете создать список флажков для каждого из возможных отношений:
Затем вы можете сделать список флажков сортируемым, чтобы пользователи могли контролировать порядок связанных активов.
Создание новых ресурсов
Поля ресурсов также могут обрабатывать новые загрузки файлов:
Не забудьте установить enctype="multipart/form-data"
в теге