在MediaWiki中有选择地隐藏红色链接

时间:2014-03-01 19:28:37

标签: css css-selectors mediawiki mediawiki-templates

我有一个模板,用于将内容从另一个命名空间中的页面转换到主空间;它用于将大量页面聚合到一个表中。其基本结构如下:

Template:Paget

<div class="plainlinks">
<span style="font-weight:normal; font-size:85%;">&#91;[{{fullurl:{{{1|}}} {{{2|}}}.{{{3|}}}}} {{{2|}}}]&#93;</span>&nbsp;{{#if: {{{blank|}}} | [No text] | {{{{{1|}}} {{{2|}}}.{{{3|}}}}} }}
</div>

因此,当您输入{{paget|page:cod.icon. 393 I|100r|jpg}}时,它会转换Page:Cod.icon. 393 I 100r.jpg的内容,并将其标记为返回到在新标签页中打开的该页面的链接。非常简单。

聚合页面通常在所有内容存在之前构建,在这种情况下,模板会生成一个红色链接来代替页面内容。我想改变这种行为,以便在没有页面时只显示任何内容。

有三个主要解决方案,一个{{#ifexist}}函数,一个{{#dpl}}函数和一个{{#ifeq}}函数,将输出与redlink url进行比较。由于各种原因,所有这些都是行不通的,但主要是因为它们减慢了页面加载的速度(有时候我们会删除数千个单段页面)。

所以我转向CSS解决方案,并在Mediawiki:Common.css

中创建了此规则
.hidden-redlink > a.new,
.hidden-redlink a.new {
    display: none;
    visibility: hidden;
}

然后我将该类添加到模板中,即<div class="plainlinks hidden-redlink"></div>。这没有产生任何结果。我还尝试在<span class="hidden-redlink"></span>中仅包含被转换的部分,只是将类添加到聚合表本身,但那些也未能产生任何结果。将其直接包装在<span style="display:none;"></span>中会隐藏链接,但显然也会隐藏已转换的内容。

我已经按照我能想到的方式重新调整了CSS规则和类分配,但是空出来了。是否有一些我想念的难题?

MediaWiki:1.21.2
PHP:5.3.10-1ubuntu3.9(apache2handler)
MySQL:5.5.29-0ubuntu0.12.04.2

1 个答案:

答案 0 :(得分:0)

好吧,我尝试做类似的事情,通过在class =“hidden-redlink”的div中执行{{help:不存在}}来转换未创建的帮助页面来获取红色链接页面,以下CSS工作到隐藏红色链接:

.hidden-redlink a.new {
    display:none !important;
}

老实说,我不太明白你为什么要用这么长的代码来获得你的翻译,但我再也没有认识到这个名称空间是你得到你的代码,所以我可能只是不要将软件用于你所推动的复杂程度。使用{{namespace:pagename}}进行转换是否存在任何问题(显然将命名空间和页面名称分别更改为命名空间和页面名称),而不是当前长的代码可能会使事情失败?