【发布时间】:2015-05-15 10:32:31
【问题描述】:
我使用 MediaWiki 管理我自己公司的内部 wiki。我喜欢 MediaWiki,因为很多人在使用过 Wikipedia 之后就已经熟悉它了。此外,配置起来很愉快,而且我没有遇到很多问题,对 PHP 不太熟悉。 (所以我不一定要寻找其他解决方案,比如 DokuWiki...)
我的要求是打开页面是所有页面的列表,按类别按字母顺序细分 - 很像整个 wiki 的目录。它看起来像这样(在“主页”上):
Category 1
Page A
Page B
Page C
Category 2
Page E
Page N
Page X
Page Z
Category 3
Page Q
Page V
每个页面都获得分配给它的类别。我知道 Special:Categories 页面,但它只显示类别,并且必须向下钻取(点击链接)才能查看该类别中的页面 - 因此,我看不到多个页面/多个类别。
我看过 Extension:Hierarchy,但这不符合我的需要,因为必须编辑“目录”,而不是通过在每个页面本身上声明“父级”或“类别”来自动生成。
MediaWiki 是否已经存在此功能? (我知道随着 wiki 的增长,此目录页面也会增长,但没关系。)
或者,我知道 MediaWiki API。我可以创建一个服务器端进程:
- 是否对所有页面及其类别进行 MySQL 查找
- 对它们进行排序
- 使用 MediaWiki API 在主页上生成此目录
我可以定期运行这个过程。我已准备好迎接挑战,因为我是一名程序员,这是一项有趣的练习,但如果我不必这样做,为什么要重新发明轮子呢?
【问题讨论】:
-
这里的挑战是 MediaWiki 类别不是分层的。换句话说,您可以有类别循环(A>B>C>A)。此外,一篇文章可以出现在任意数量的类别中,并且文章可以没有类别。话虽如此,您可能想看看mediawiki.org/wiki/Extension:CategoryTree
-
@leo 这个扩展实际上满足了我的大部分需求,并且是一个很大的帮助。唯一需要手动完成的事情是我将
<categorytree>_Category Name_</categorytree>用于我的主页“目录”页面上的每个类别。鉴于新类别不太可能大量出现,这不会是一个可怕的问题。也许我可以自己扩展这个插件来自动生成所有顶级类别的页面。这种自动的努力将完全满足我的要求。 -
您可以将所有(顶级)类别放入
Category:Categories,然后通过扩展显示该类别(参见depth和hideroot参数)。