首页 > 解决方案 > mediawiki 页面上的转发链接列表

问题描述

我将 Mediawiki 站点用作个人Zettelkasten。zettelkasten 基本上是一组应该相互链接的笔记,使 wiki 成为存储笔记的好地方。音符之间的链接是 zettelkasten 的关键特征。因此,对于每个“注释”(即我的 wiki 上的页面),我需要一个列表:1)如何到达该页面,以及 2)您可以从该页面去哪里。第一部分很简单,因为我可以使用内置的{{Special:Whatlinkshere/{{PAGENAME}}}}. 但是,我不知道如何从每个页面创建类似的前向链接列表。有没有办法在 mediawiki 中执行此操作,或者可以执行此操作的扩展程序?在给定的 wiki 页面上收集所有(内部)链接列表的最佳方法是什么?

标签: mediawiki

解决方案


如果你安装DynamicPageList3,你可以使用{{#dpl: linksfrom = {{FULLPAGENAME}} }}.

使用Scribunto,您可以Module:Links使用inner函数定义:

local p = {}
function p.inner (frame)
    local wikitext = frame:preprocess (mw.title.new (frame.args [1]):getContent ())
    local link_set = {}
    -- Find all occurences of [[...]]:
    for title in  mw.ustring.gmatch (wikitext, '%[%[([^%#|%]]+)%]%]') do
        -- Remove #... or |...:
        title = mw.text.trim (mw.ustring.gsub (title, '[#|][^%]]*', '', 1))
        if title ~= '' then
            link_set [title] = true
        end
    end
    local links = {}
    for link, _ in pairs (link_set) do
        links [#links + 1] = '[[' .. link .. ']]'
    end
    table.sort (links)
    return table.concat (links, ', ')
end

return p

并这样称呼它:{{#invoke:Links|inner|{{FULLPAGENAME}}}}. 但这很昂贵,如果您安装了Semantic MediaWikititle ,您需要更好地过滤 s 。同步也会出现问题(链接列表将是它所在页面的一个版本,直到被清除)。


推荐阅读