2016-06-12 4 views
0

pimcore documentation은 public static function getTagsForElement ($ cType, $ cId)를 나타냅니다. $ cType과 $ cId는 어떤 값을 취합니까?pimcore 객체에 할당 된 태그를 얻는 방법은 무엇입니까?

(a) 객체에 태그 지정, (b) 특정 태그가있는 객체 가져 오기. myTag를 클릭 한 다음 (c) 데모 시스템의 뉴스 및 블로그 예제 에서처럼 목록을 반복합니다. 제 질문은 (b)와 관련이 있습니다.

특히 myTag는 myTags/myTag/myTarget으로 하나의 객체에 보관되고 myTags/myTag로 태그 지정된 다른 객체의 목록을 얻는 것을 목표로합니다.

감사합니다.

답변

1

개체의 모든 태그를 가져옵니다 :

$tags = \Pimcore\Model\Element\Tag::getTagsForElement("object", 3); 

foreach ($tags as $tag) { 
    echo $tag->getName() . " (ID=" . $tag->getId() . ")<br>"; 
} 

$ CTYPE는 요소 유형 (개체, 문서, 자산)을 의미하고 $ CID는 요소 ID (개체 ID, 문서 ID, 자산 ID를 참조). 위의 예에서

$type = "object"; 
$tagId = 3; 
$tag = Pimcore\Model\Element\Tag::getById($tagId); 
$tagPath = $tag->getFullIdPath(); 

$considerChildren = true; 

if ($considerChildren) { 
    $conditionForTags = "o_id IN (SELECT cId FROM tags_assignment INNER JOIN tags ON tags.id = tags_assignment.tagid WHERE ctype = '$type' AND (id = '$tagId' OR idPath LIKE '$tagPath%'))"; 
} else { 
    $conditionForTags = "o_id IN (SELECT cId FROM tags_assignment WHERE ctype = '$type' AND tagid = '$tagId')"; 
} 

$objectList = new \Pimcore\Model\Object\Test\Listing(); 
$objectList->setCondition($conditionForTags); 

foreach ($objectList as $item) { 
    echo $item->getId() . "<br>"; 
} 

당신이 태그의 ID가 아닌 이름을 사용할 필요가 :

이를 특정 태그 사용이 객체의 목록을 얻으려면!

문서 및 자산에서이 방법을 사용하려면 o_id를 id로 바꿉니다. 쉼표로 구분

0

[함수형 프로그래밍 방법 실시 예 (Object)를 배치하기 태그 :

echo implode(', ',array_map(function($tag) { 
    return '<a href="/posts/tag/' . $tag->getId() . '">'.$this->t($tag->getName()) . '</a>'; 
}, \Pimcore\Model\Element\Tag::getTagsForElement('object', $this->post->getId()))); 
관련 문제