如何修改Confluence以允许重复的页面标题

时间:2014-01-09 12:55:41

标签: confluence

我正在使用Confluence作为文档,包括最终用户文档和内部开发文档。

Confluence的问题在于它不允许重复的页面标题,因为URL只包含标题而不是整个树结构。

有没有办法改变这种行为?

有一个插件可以做到这一点,还有更多。 “更多”部分是问题所在,因为该插件非常昂贵,特别是如果只使用众多功能中的一个(https://marketplace.atlassian.com/plugins/com.k15t.scroll.scroll-versions)。

5 个答案:

答案 0 :(得分:7)

添加"虚拟empoyee文件夹"时遇到同样的问题。到我们的维基。我们想要生成以下页面结构:

Employee 1
 Personal Data
 Contract Data
 Training
 ...
Employee 2
 Personal Data
 Contract Data
 Training
 ...
Employee X
 Personal Data
 Contract Data
 Training
 ...

我们用肮脏但非常有效的解决方法解决了这个问题:首先,我们通过添加员工特定的前缀使页面名称独一无二:

Employee 1
 Employee 1 - Personal Data
 Employee 1 - Contract Data
 Employee 1 - Training
 ...
Employee 2
 Employee 2 - Personal Data
 Employee 2 - Contract Data
 Employee 2 - Training
 ...
Employee X
 Employee X - Personal Data
 Employee X - Contract Data
 Employee X - Training
 ...

我们定义了自己的"标签"标记不应出现在汇合前端的页面标题部分:

Employee 1
 [hide]Employee 1 - [/hide]Personal Data
 [hide]Employee 1 - [/hide]Contract Data
 [hide]Employee 1 - [/hide]Training
 ...
Employee 2
 [hide]Employee 2 - [/hide]Personal Data
 [hide]Employee 2 - [/hide]Contract Data
 [hide]Employee 2 - [/hide]Training
 ...
Employee X
 [hide]Employee X - [/hide]Personal Data
 [hide]Employee X - [/hide]Contract Data
 [hide]Employee X - [/hide]Training
 ...

其余的由一些JavaScript-Magic完成,它通过 Confluence Admin>嵌入。自定义HTML

<script>(function() {

    var expr = /\[hide\].*?\[\/hide\]/g,
        blacklist = ['textarea', 'form', 'pre', 'script', 'style'];

    $(document)
        .ajaxSuccess(hideTextParts)
        .on('ready', hideTextParts);

    function isChildOfBlacklistedTag(node) {
        while(node = node.parentNode) {
            if (node.nodeType === Node.ELEMENT_NODE && blacklist.indexOf(node.nodeName.toLowerCase()) > -1) {
                return true;
            }            
        }
        return false;
    }

    function hideTextParts() {
        var root = document,
            walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null, false),
            node;

        while (node = walker.nextNode()) {
            console.info(node.parentNode);
            if (expr.test(node.textContent) && !isChildOfBlacklistedTag(node)) {
                node.textContent = node.textContent.replace(expr, " ");
            }
        };
    }

})();
</script>

黑名单确保&#34;标记&#34;没有隐藏在需要它们显示的地方。例如,在页面的编辑屏幕的标题字段中以及空间管理中的CSS编辑字段内。您可能希望扩展到

答案 1 :(得分:2)

Atlasian stated他们不会改变这种行为。 有像Scroll Versions这样的插件可以解决这个问题,但你可能想重新考虑那里的wiki结构。

维基百科是否允许多个同名网页?它没有。 如果你摆脱了维基的层次排序的想法,而是开始使用搜索功能和标签,那一切都是有道理的。

在为我们的项目设置文档时,我们进行了相同的讨论。如果您有> 150个名为“文档”的页面怎么办?如果您不知道确切的产品名称,请尝试搜索。

答案 2 :(得分:1)

Confluence不仅仅是一个wiki系统,因为它似乎促进了文档层次结构的使用。一个假设的例子可能是:

MongoDB 
    Installation
        Linux
        Windows
        Mac
    Security
    Data Model

我希望简化页面标题,而不是像“MongoDB - &gt;安装 - &gt; Linux”那样命名它们。

但是,如果我只是保持简短,那么在这个和其他文档之间会发生各种名称冲突

答案 3 :(得分:1)

我的公司也有这个问题。处理这种情况的更好方法是为每个&#34; context&#34;创建一个工作区。 IMO,如果你需要在你正在创建的每个页面中插入一个前缀,它似乎是一个上下文划分。因此,最好在每个上下文中插入自己的Confluence空间。

仪表板 - 空格1 - 我的页面
仪表板 - 空格2 - 我的页面

当您创建空间时,您可以对它们进行分类,因此您可以插入标签,如&#34;项目&#34;,&#34;数据库&#34;,&#34;应用程序&#34;等。 https://confluence.atlassian.com/display/DOC/Using+Labels+to+Categorise+Spaces

此致

答案 4 :(得分:0)

我意识到这有点晚了,但是对于任何寻求此功能的人来说,我的解决方案不需要任何JavaScript技巧或特殊插件,只需一个看不见的ascii代码即可。

我在标题的末尾添加了ASCII字符255(如果需要,可以添加多个)。它显示为空格,因此不会显示在标题中。如果您不希望将标题作为URL的一部分,则这是一个有效的选择,因为Confluence会按pageId(即https://confluence.yourcompany.com/pages/viewpage.action?pageId=44335161)链接到该页面。

如果您不知道如何处理ASCII码,只需在数字键盘(或任何其他ASCII码)上键入255的同时按住Alt键即可。