【发布时间】:2014-03-01 19:28:36
【问题描述】:
我有一个模板,旨在将内容从另一个命名空间中的页面转入主空间;它用于将大量页面聚合到一个表中。它的基本结构是这样的:
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}} 函数,将输出与红色链接 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
【问题讨论】:
-
好吧,我可以说
.hidden-redlink a.new匹配.hidden-redlink > a.new的所有内容,这使得>选择器变得多余。
标签: css css-selectors mediawiki mediawiki-templates