有没有办法从自定义宏内部访问汇合页面的属性?

时间:2018-03-08 23:19:16

标签: confluence

我想检查启用宏的页面中的标签名称及其子项。这是可以使用自定义宏吗?我按照本教程: https://developer.atlassian.com/server/framework/atlassian-sdk/create-a-confluence-hello-world-macro/

查看了其他一些文档,但无法验证。

2 个答案:

答案 0 :(得分:1)

通过Page课程,您可以访问网页的所有标签(通过A)和所有网页的儿童(通过getLabels(),但请注意< em>没有权限检查已完成)。我现在没有Java开发环境,但我能够在用户宏中显示当前页面及其子项的标签(通过getChildren()变量):

$content

答案 1 :(得分:0)

我有两种方法可以想到 -

1)自定义插件

我正在介绍如何获得所需结果的高级细节。在实际尝试执行此操作时,您可能会遇到一些错误。所以GOOGLE是你最好的朋友。

  • 首先,您必须使用SQL查询

    检索带有宏的所有页面
    SELECT c.contentid, c.contenttype, c.title, s.spacekey
     FROM CONTENT c
    JOIN BODYCONTENT bc
    ON c.contentid = bc.contentid
    JOIN SPACES s
    ON c.spaceid = s.spaceid
    WHERE c.prevver IS NULL
    AND c.contenttype IN ('PAGE', 'BLOGPOST')
    AND bc.body LIKE '%ac:name="<macro_name>"%';
    
  • 然后使用以下内容获取带有标签的所有页面:

    SELECT * FROM CONTENT WHERE CONTENTID IN (SELECT CONTENTID FROM CONTENT_LABEL WHERE LABELID IN (SELECT LABELID FROM LABEL WHERE NAME='<label name>'));

  • 使用内容ID将两者的结果合并在一起,或者您也可以拨打一个电话来获取已加入的输出。

  • 你有这些页面。

  • 您可以使用其他查询(例如

    )让他们的孩子

    SELECT c.contentid, c.title FROM CONFANCESTORS a JOIN CONTENT c ON a.descendentid = c.contentid WHERE a.ancestorid = '<parent_page_id>'

2)休息电话

这有点复杂,我不推荐,但步骤类似于自定义插件。