Как предотвратить «скрытую» ссылку на изображение в условии #if в MediaWiki - PullRequest
0 голосов
/ 15 января 2020

У нас есть изображение с предсказуемо расположенным числом в имени файла. Я управляю отображением изображения в шаблоне, основываясь на том, находится ли число в нескольких разных диапазонах. Если он находится в любом из этих диапазонов, изображение не существует (и не должно).

Все отлично работает, но я обнаружил, что Special: WantedFiles все еще содержит список намеренно «отсутствующих» изображений. Единственная ссылка для каждого «отсутствующего» файла - со страницы, которая использует этот шаблон. Кажется, что, даже если страница правильно не пытается отобразить изображение, вики все еще имеет значение и , интерпретирующее бит [[File: foobar]], как если бы тест #if разрешался другим способом , создание неиспользуемой ссылки на несуществующий файл.

Ниже приведена упрощенная версия проблемной части шаблона. ImageRangeTest - шаблон проверки диапазона; он работает нормально, возвращая либо 0, либо 1 в зависимости от того, находится ли число {{{1}}} в любом из соответствующих диапазонов.

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

Так почему, когда ImageRangeTest возвращает 1, делает " Это изображение не существует ". отображается правильно, но File: {{{1}}}. png по-прежнему получает скрытую ссылку с той же страницы, в результате чего File: {{{1}}}. png отображается в Special: WantedFiles?

1 Ответ

1 голос
/ 20 января 2020

То, что вы хотите сделать, в настоящее время невозможно. Это «скрытая» ссылка на вас, но обычная ссылка на базу данных. Таблица , в которой хранятся включения файлов, не различает, существует изображение или нет. Специально: WantedFiles генерирует свое содержимое, запрашивая эту таблицу среди других.

Различные запросы на изменение этого значения были отклонены в 2006 году, например, this и this . Не запрос касался в основном общих ссылок, сгенерированных из шаблонов, но основная проблема / проблема заключается в том же самом, что и у вас.

Единственный способ не дать ему отображаться на этой специальной странице - отделить имя, это удалить квадратные скобки, и я сомневаюсь, что вам это понравится.

...