【问题标题】:Selectively hiding redlinks in MediaWiki在 MediaWiki 中选择性隐藏红链接
【发布时间】:2014-03-01 19:28:36
【问题描述】:

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

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}} 函数,将输出与红色链接 url 进行比较。由于各种原因,所有这些都不可行,但主要是因为它们减慢了页面加载速度(有时我们会嵌入数千个单段页面)。

于是我求助于 CSS 解决方案,并在 Mediawiki:Common.css 中创建了这条规则:

.hidden-redlink > a.new,
.hidden-redlink a.new {
    display: none;
    visibility: hidden;
}

然后我将类添加到模板中,即&lt;div class="plainlinks hidden-redlink"&gt;&lt;/div&gt;。这没有产生任何结果。我还尝试仅将嵌入部分包装在&lt;span class="hidden-redlink"&gt;&lt;/span&gt; 中,并将类添加到聚合表本身,但这些也未能产生任何结果。直接包裹在&lt;span style="display:none;"&gt;&lt;/span&gt;中会隐藏链接,但显然也隐藏了转入的内容。

我已经以各种我能想到的方式重新调整了 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 &gt; a.new 的所有内容,这使得&gt; 选择器变得多余。

标签: css css-selectors mediawiki mediawiki-templates


【解决方案1】:

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

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

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

【讨论】:

  • 参见例如这篇文章:wiktenauer.com/wiki/Paulus_Hector_Mair。向下滚动到“longsword”,你会看到每行有多个嵌入,在最右边的列中,空的嵌入显示为红色链接。 (索引和页面命名空间由转录管理程序使用,它与运行 Wikisource 的程序相同。)
  • 我可以看到,在“longsword”下,直到第 121 行有图像嵌入和文章嵌入,此时有更多图像但没有更多文章。但是,我在 Chrome、IE 或 Firefox 中都看不到您描述的这些红色链接。除了数字之外,这些框都是空白的。你能告诉我你用的是什么浏览器吗?
  • 您是否滚动到最右边的列,标题“Jörg Breu 的速写本 (1545)”?我已经在 IE 10、Firefox 24 和 Chrome 6 中对其进行了测试,它们都以相同的方式呈现红色链接。
  • 啊,不。我没有注意到表格比前 3 列宽。是的,我现在可以在其中看到指向页面名称空间的链接。在 Chrome 中检查页面时,CSS 似乎有些奇怪。您是否尝试过将 !important 添加到您的 CSS 语句中?这通常会覆盖默认样式,因此希望可以在这里解决问题。我将编辑我的原始帖子,以展示您将如何添加重要声明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多