我有一个模板,旨在将内容从另一个命名空间中的页面转入主空间;它用于将大量页面聚合到一个表中。它的基本结构是这样的:
Template:Paget
<div class="plainlinks">
<span style="font-weight:normal; font-size:85%;">[[{{fullurl:{{{1|}}} {{{2|}}}.{{{3|}}}}} {{{2|}}}]]</span> {{#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
最佳答案
好吧,我尝试做类似的事情,通过在带有 class="hidden-redlink"的 div 中执行 {{help:doesn't exist}} 并包含未创建的帮助页面来获得一个红色链接页面,以下 CSS 用于隐藏红色链接:
.hidden-redlink a.new {
display:none !important;
}
老实说,我不太明白你为什么要使用这么长的代码来获取你的嵌入,但我还是不认识你从中获取代码的命名空间,所以我可能只是不要将软件使用到您将其推到的复杂程度。使用 {{namespace:pagename}}(显然分别将 namespace 和页面名称分别更改为 namespace 和页面名称)而不是您当前的长代码可能会造成困惑,是否存在任何问题?
关于css - 有选择地隐藏 MediaWiki 中的红色链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119231/