Services and Tagging
How do we write an OSGI Service that takes tag value and finds pages which are having tag value?
How do we write an OSGI Service that takes tag value and finds pages which are having tag value?
Hello @dvaraka
You could use a service to use https://developer.adobe.com/experience-manager/reference-materials/6-5/javadoc/index.html?com/day/cq/tagging/TagManager.html and pass desired tag id or path to get resources tagged with the tag.
Below is an example from https://github.com/adobe/aem-core-wcm-components/blob/main/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/ListImpl.java#L240
private void populateTagListItems() {
listItems = new ArrayList<>();
String[] tags = properties.get(PN_TAGS, new String[0]);
boolean matchAny = properties.get(PN_TAGS_MATCH, TAGS_MATCH_ANY_VALUE).equals(TAGS_MATCH_ANY_VALUE);
if (ArrayUtils.isNotEmpty(tags)) {
Page rootPage = getRootPage(PN_TAGS_PARENT_PAGE);
if (rootPage != null) {
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
RangeIterator<Resource> resourceRangeIterator = tagManager.find(rootPage.getPath(), tags, matchAny);
if (resourceRangeIterator != null) {
while (resourceRangeIterator.hasNext()) {
Page containingPage = pageManager.getContainingPage(resourceRangeIterator.next());
if (containingPage != null) {
listItems.add(containingPage);
}
}
}
}
}
}Also see https://github.com/adobe/aem-core-wcm-components/blob/a7e377c6810dd2125a902d3ef3df5c92ec2a1719/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v1/ListImpl.java look for method - getTagListItems
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.