How do we write an OSGI Service that takes tag value and finds pages which are having tag value?
Solved! Go to Solution.
Views
Replies
Total Likes
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... 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/w...
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/bundl... look for method - getTagListItems
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... 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/w...
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/bundl... look for method - getTagListItems
Can you please elaborate the significance of 4th line of this code and also what are PN_TAGS_MATCH, TAGS_MATCH_ANY_VALUE??
Views
Likes
Replies