0

我有一个模板,旨在将内容从另一个命名空间中的页面转入主空间;它用于将大量页面聚合到一个表中。它的基本结构是这样的:

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>. 这没有产生任何结果。我还尝试仅将嵌入部分包装在 a<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

4

1 回答 1

0

好吧,我尝试做类似的事情,通过在带有 class="hidden-redlink" 的 div 中执行 {{help:doesn't exist}} 并通过以下 CSS 隐藏未创建的帮助页面来隐藏红色链接页面关联:

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

老实说,我不太明白你为什么要使用这么长的代码来获取你的嵌入,但我还是不认识你从中获取代码的命名空间,所以我可能只是不不要将软件使用到您想要达到的复杂程度。使用 {{namespace:pagename}} (显然将单词 namespace 和 pagename 分别更改为命名空间和页面名称)而不是您当前的长段代码可能会使事情变得混乱,是否存在任何问题?

于 2014-06-22T09:44:00.837 回答