我正在尝试创建一个 Scribunto 模块,除其他外,它可以在其输出中创建一个节标题。
例如,如果返回的字符串包含 ,== Hello World ==
则结果页面正确显示该部分,甚至在 TOC 中包含该部分。但是,该部分没有编辑部分链接。
在某种程度上,这是可以理解的;该部分实际上并不存在于页面的源代码中。但我希望能够将编辑链接放置到该部分内容的来源。我尝试了两个不同版本的buildHeader
函数:
-- version 1:
function p.buildHeader(level, title, page)
local open = '<span class="mw-editsection-bracket">[</span>'
local close = '<span class="mw-editsection-bracket">]</span>'
local link = '<a href="/w/index.php?title='..p.urlsafe(page)..'&action=edit" title="Edit section: '..title..'">edit</a>'
local edit = '<span class="mw-editsection">'..open..link..close..'</span>'
local text = '<span id="'..p.urlsafe(title)..'" class="mw-headline">'..title..'</span>'
return '<h'..level..'>'..title..edit..'</h'..level..'>'
end
-- version 2:
function p.buildHeader(level, title, page)
local result = mw.html.create('h'..level)
result:tag('span')
:attr({id=p.urlsafe(title), class='mw-headline'})
:wikitext(title)
:done()
:tag('span')
:attr('class', 'mw-editsection'):tag('span')
:attr('class', 'mw-editsection-bracket')
:wikitext('[')
:done()
:tag('a')
:attr({href='/w/index.php?title='..p.urlsafe(page)..'&action=edit', title='Edit section: '..title})
:wikitext('edit')
:done()
:tag('span')
:attr('class', 'mw-editsection-bracket')
:wikitext(']')
:allDone()
return tostring(result)
end
在这两种情况下,锚标记的 HTML 都被转义(例如,<span class="mw-editsection">...<a href="..." title="...">edit</a></span>
),并且整个 mw-editsection 跨度都包含在 TOC 文本中。
有什么方法可以让我在那里获得我的任意编辑链接,还是我必须使用无编辑部分的 Scribunto 部分?