Теги
Общее
Теги предоставляют способ создания дополнительных таксономий и классификаций для документов, ассетов и объектов данных.
С помощью тегов вы можете легко фильтровать элементы Pimcore (документы, объекты данных, ассеты) и сохранять дополнительные критерии поиска в приложении.
Определение тегов
Доступные теги должны быть определены централизованно (требуется соответствующая настройка прав пользователей tags configuration).

Назначение тегов
В редакторе Documents, Assets, или Data Objects есть дополнительная вкладка, где теги могут быть назначены текущему элементу (для этого требуется разрешение пользователя tags assignment).

Использование тегов
В окне поиска (Search) теги могут быть выбраны в качестве дополнительных критериев поиска (для этого требуется разрешение пользователя tags search).

Работа с тегами через API
Обзор
Для доступа и работы с тегами через API см. класс Pimcore\Model\Element\Tag.
/**
* возвращает все назначенные теги для элемента
*
* @return Tag[]
*/
public static function getTagsForElement(string $cType, int $cId): array
{
$tag = new Tag();
return $tag->getDao()->getTagsForElement($cType, $cId);
}
/**
* добавляет заданный тег к элементу
*/
public static function addTagToElement(string $cType, int $cId, Tag $tag): void
{
$tag->getDao()->addTagToElement($cType, $cId);
}
/**
* удаляет заданный тег с элемента
*/
public static function removeTagFromElement(string $cType, int $cId, Tag $tag): void
{
$tag->getDao()->removeTagFromElement($cType, $cId);
}
/**
* устанавливает заданные теги для элемента и удаляет все остальные теги
* чтобы удалить все теги с элемента, передайте пустой массив тегов
*
* @param Tag[] $tags
*/
public static function setTagsForElement(string $cType, int $cId, array $tags): void
{
$tag = new Tag();
$tag->getDao()->setTagsForElement($cType, $cId, $tags);
}
Примеры использования API
Получение тегов для элемента
Чтобы получить все теги элемента ниже:

используйте метод getTagsForElement указав тип элемента в параметре $cType.
В примере выше тип элемента — asset.
$tags = \Pimcore\Model\Element\Tag::getTagsForElement('asset', 30);
dump($tags);
В результате вы получите массив объектов Pimcore\Model\Element\Tag.
array:3 [▼
0 => Pimcore\Model\Element\Tag {#7351 ▼
#id: 9
#name: "Italy"
#parentId: 7
#idPath: "/7/"
#children: null
#parent: Pimcore\Model\Element\Tag {#7354 ▶}
#dao: Pimcore\Model\Element\Tag\Dao {#7349 ▶}
id: 9
name: "Italy"
parentId: 7
idPath: "/7/"
children: null
parent: Pimcore\Model\Element\Tag {#7354 ▶}
}
1 => Pimcore\Model\Element\Tag {#7357 ▶}
2 => Pimcore\Model\Element\Tag {#7345 ▶}
]
Присвоение нового тега элементу
Чтобы добавить новый тег элементу, сначала создайте сам тег, затем используйте метод \Pimcore\Model\Element\Tag::addTagToElement для назначения тега выбранному элементу (по id элемента).
$tag = new \Pimcore\Model\Element\Tag();
try {
$tag->setName('newtag')->save();
\Pimcore\Model\Element\Tag::addTagToElement('asset', 30, $tag);
} catch (Exception $e) {
// ....
}
Результат будет:

Аналогично можно использовать остальные доступные методы для управления тегами.
Типы элементов для методов — стандартные: можно использовать document, asset или object.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.