aem - Adobe CQ5发布环境中如何区分页面是第一次发布还是多次发布

标签 aem

除了我网站页面上显示的链接之外,我还需要显示"new"和“已更新”标签。

为此,我应用了检查版本数量的逻辑。如果版本数量超过 2,我显示“已更新”,否则我显示"new"。我能够在作者环境中实现它。

但在发布环境中,即使页面被修改并重新发布,为页面创建的版本数量也只是一个。那么如何判断该页面是第一次发布还是已经发布了多次。

最佳答案

对此的一个建议是实现您自己的 servlet/监听器来监听复制事件。查看EventHandler 和JobProcessor 接口(interface)。然后,该 servlet 可以在组件实例上设置属性值,以便组件第一次可以显示不同的内容。它可能只是一个小的计数器变量,用于跟踪实际内容已发布的次数或其中的一些更奇特的逻辑:)

//imports

@Service...
@Component...
@Property(name = "event.topics", value = ReplicationAction.EVENT_TOPIC)
public class MyCustomEventHandler implements EventHandler, JobProcessor {

private static final Logger LOGGER = LoggerFactory.getLogger(MyCustomEventHandler.class);

@Override
public void handleEvent(Event event) {
    LOGGER.info("Handling an event of some kind !!");
    process (event);
}

@Override
public boolean process(Event event) {
    LOGGER.info("Processing an event !!");
    ReplicationAction action = ReplicationAction.fromEvent(event);
    if (action.getType().equals(ReplicationActionType.ACTIVATE)) {
        LOGGER.info("Processing an activation job, this is just what we are looking for !!!!!");

            //Logic for fetching/setting the properties you want from the component you want
            //goes here. Here you can make use of the action.getPath(); to get hold of the containing page
            //and then later on any specific components...
    }
    return true;
}
}

要查看我的原始答案,请前往:http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__kbyb-i_need_to_displayla.html

关于aem - Adobe CQ5发布环境中如何区分页面是第一次发布还是多次发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314084/

相关文章:

amazon-s3 - 设置 AEM S3 数据存储的最佳方法

java - ServiceReference 未获取所有类名以进行激活

java - 如何在rteplugins下为richtext组件添加图像插件

aem - 如何从作者发布内容到 CQ5 中的发布环境?

aem - cq5 对话框在增加尺寸后不会改变其宽度

AEM CRXDE 查询小部件自定义

java - 如何启动immediate = false组件?

java - 在 Sling 模型中用冒号注入(inject) JCR 属性

java - 我可以在 parsys 里面有一个 parsys 吗

java - 如何获取未填充的页面属性