【问题标题】:How to prevent a 'hidden' link to an image within a #if condition in MediaWiki如何防止 MediaWiki 中#if 条件内的图像“隐藏”链接
【发布时间】:2020-05-01 19:01:15
【问题描述】:

我们有一个图像,它的文件名中有一个可预测的数字。我根据数字是否在多个不同范围内来处理模板中图像的显示。如果它在任何这些范围内,则图像不(也不应该)存在。

一切正常,但我发现 Special:WantedFiles 仍然包含故意“丢失”图像的列表。每个“缺失”文件的唯一链接来自使用该模板的页面。似乎,即使页面没有正确地尝试显示图像,wiki 仍然解释 [[File:foobar]] 位,就好像#if 测试正在解决另一个方式,创建一个未使用的链接到一个不存在的文件。

以下是模板问题部分的简化版。 ImageRangeTest 是范围检查模板;它工作正常,根据 {{{1}}} 数字是否在任何匹配范围内返回 0 或 1。

{{#ifeq: {{ImageRangeTest | {{{1}}} }} | 1 | This image does not exist. | [[File:{{{1}}}.png]] }}

那么,为什么当 ImageRangeTest 返回 1 时,“此图像不存在”。正确显示,但 File:{{{1}}}.png 仍然从同一页面获得隐藏链接,导致 File:{{{1}}}.png 显示在 Special:WantedFiles 上?

【问题讨论】:

  • 不会导致隐藏链接。该模板中的其他地方可能还有其他东西在这样做。

标签: templates mediawiki


【解决方案1】:

你想做的事情目前是不可能的。这是指向您的“隐藏”链接,但与数据库的正常链接。 The table 存储文件包含不区分图像是否存在。特别:WantedFiles 通过查询该表等来生成其内容。

早在 2006 年,各种更改此设置的请求都被拒绝了,例如 thisthis。请求主要不是关于从模板生成的一般链接,而是潜在的问题/问题与您的问题相同。

阻止它在该特殊页面中显示的唯一方法是取消链接名称,即删除方括号,我怀疑您是否愿意。

【讨论】:

  • 这些任务涉及不同的问题。 #if* 解析器函数的错误分支不会被评估,也不会更新 imagelinks 表。
  • 经过大量测试,事实证明我将值分配给#var:{{#vardefine:foo|{{#ifeq: {{ImageRangeTest | {{{1}}} }} | 1 |此图像不存在。 | [[文件:{{{1}}}.png]] }} }}。所有这些都触发​​了 bous 条目。取出 #var 分配清除了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
相关资源
最近更新 更多