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

Теги

Общее

Теги предоставляют способ создания дополнительных таксономий и классификаций для документов, ассетов и объектов данных.

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

Определение тегов

Доступные теги должны быть определены централизованно (требуется соответствующая настройка прав пользователей tags configuration).

Меню тегов Pimcore

Назначение тегов

В редакторе 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

Получение тегов для элемента

Чтобы получить все теги элемента ниже:

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) {
// ....
}


Результат будет:

Назначить новый тег с помощью API

Аналогично можно использовать остальные доступные методы для управления тегами. Типы элементов для методов — стандартные: можно использовать document, asset или object.


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.