Обсуждение шаблона:Страница рубрики

Материал из ВикиФур
Перейти к: навигация, поиск

Множественное число[править]

К сожалению, DPL обрабатывает ключевые слова типа %PAGES% после того, как в них разворачиваются шаблоны, волшебные слова и так далее. Таким образом, поставить правильное число во всех случаях «найдена 1 статья», «найдено 3 статьи», «найдено 10 статей» не получится. EvilCat (обсуждение) 16:44, 21 сентября 2017 (MSK)

Как это работает[править]

Заметка для себя в будущем и других, кто захотят доработать этот шаблон.

У DPL гибкий, но сложночитаемый синтаксис. Самая магия заключается здесь:

|include={{{формат включения|{Этого шаблона не существует{{!}}{{{шаблон иллюстрации|Форматировать иллюстрацию}}} },{{{формат текста|вводная{{#if:{{{подтема|}}}|,{Этого шаблона не существует{{!}}Перенос},{{{подтема}}} }} }}} }}}

Параметр include инструктирует DPL, что именно нужно взять из найденной статьи (или статей), в каком порядке и как это обработать перед отображением. Мануал находится тут (разработку DPL после изначальных авторов взяла на себя другая группа, потом их взяла к себе Gamepedia, потом её купила Викия). Но разобраться с тем, что наваяла Кэт из прошлого, всё равно непросто.

Итак:

{{{штуки в тройных фигурных скобках}}} — это аргумент шаблона. Например, на странице рубрики можно указать {{страница рубрики|формат включения = какой-нибудь свой формат}}, и тогда именно он, а не формат по умолчанию (приведённый выше), будет использоваться для данной рубрики.

Очищая формат выше от аргументов, позволяющих изменить формат или его части (а также раскрывая шаблон {{!}}, который позволяет ставить палочки, не обрывая значение include), получаем:

|include={Этого шаблона не существует|Форматировать иллюстрацию},вводная{{#if:{{{подтема|}}}|,{Этого шаблона не существует|Перенос},{{{подтема}}} }}

Когда значение аргумента include обработано, оно разбивается через запятую, и каждый элемент обрабатывается по порядку. Значит, в итоге получится:

  • {Этого шаблона не существует|Форматировать иллюстрацию}
  • вводная
  • А также если указан агрумент {{{подтема}}}:
    • {Этого шаблона не существует|Перенос}
    • Значение аргумента {{{подтема}}}

Пункты, в которых нет особого форматирования, отвечают за именованные фрагменты текста, заключённые в <section begin=вводная />такие теги<section end=вводная />. Так работают пункты «вводная» и «подтема».

{Этого шаблона не существует|Форматировать иллюстрацию} и {Этого шаблона не существует|Перенос} — это хитрый способ включить вызовы шаблонов {{форматировать иллюстрацию}} и {{Перенос}}. Мы не можем по-другому вставить в include произвольный текст. Кроме того, в эти шаблоны подаются аргументы %PAGE% с названием страницы и некоторые другие, которые можно использовать. Эта конструкция работает потому, что:

  • Формат {X}, заставляет DPL искать в статье шаблон X и показать его вызов с такими же аргументами, что в статье (а также новыми аргументами %PAGE% и другими). Если шаблон не найден, показывается вызов шаблона X.default.
  • Формат {X.z} заставляет DPL искать в статье шаблон X, посмотреть его аргументы и показать вызов шаблона X.z с этими аргументами. Если X не найден, вызывается X.z.default.
  • Формат {X|Y} заставляет DPL искать в статье шаблон X, посмотреть его аргументы и вызвать шаблон Y с этими аргументами. Если шаблон X не найден, вызывается Y.default.
  • Таким образом, DPL ищет в статье шаблон {{Этого шаблона не существует}} и, конечно, не находит его (мы такой шаблон даже создавать не собираемся), после чего вызывает шаблон {{Форматировать иллюстрацию.default}}, что является перенаправлением на {{Форматировать иллюстрацию}}.
  • {{Форматировать иллюстрацию}} пользуется аргументом %PAGE%, чтобы извлечь размеченную область «иллюстрация». Если такой нет, то просто возвращает пустоту.
  • {{Перенос}} просто содержит в себе перенос.

Пользуясь этим знанием, хочу добавить в шаблон возможность указывать дополнительную или, лучше, альтернативную иллюстрацию. EvilCat (обсуждение) 15:07, 6 октября 2021 (MSK)

Альтернативная/дополнительная иллюстрация[править]

Пока не получается придумать, как добавить альтернативную/тематическую иллюстрацию, не затрудняя использования рубрик.

Что надо:

  • При добавлении статьи в рубрику, чтобы использовать другую иллюстрацию чем стандартную, помечаешь заключаешь её в <section begin=иллюстрация />теги раздела<section end=иллюстрация />, который назыается согласно рубрике (например, «иллюстрация фурсьюта»).

Чего не хватает:

  • DPL не может отправлять в вызываемые шаблоны аргументы, продиктованные строкой форматирования, а только аргументы из найденной статьи и несколько магических слов (%PAGE%, %TITLE%, %DATE%, %USER%, %CATLIST%). Ни один из них не специфичен для страницы, где находится код DPL, или параметров кода DPL.
  • DPL также не может определить, что искомый шаблон, тег или вызов найдены или не найдены. Сначала разрешается строчка формата и только потом — этот формат используется для генерации включения (включения шаблонов происходят после этого). В самом формате нет никаких условных конструкций, разве что включение шаблона .default, если что-то не найдено.

У нас есть возможность включить раздел с подтемой потому, что ему не требуется никакой обработки: просто находится раздел с названием «подтема» и включается. Картинку нужно как минимум передвинуть вправо, влево или по центру.

Даже если извлечённые из статьи данные затем прогонять через Lua-модуль и хирургически извлекать одну картинку из 0-2 включённых, кажется, у нас нет способа передать Lua-скрипту рубрику, о которой идёт речь.

Таким образом, лучшее, что можно пока сделать — это рекомендовать в разделе подтемы захватывать как текст, так и картинку, не нуждающуюся в коррекции. EvilCat (обсуждение) 16:41, 6 октября 2021 (MSK)