Ограничить трансклюзию категорий при использовании динамически генерируемых категорий в MediaWiki

StackOverflow https://stackoverflow.com/questions/612419

  •  03-07-2019
  •  | 
  •  

Вопрос

Сначала я не был уверен, что вопрос о том, как сделать что-то продвинутое в MediaWiki, относится к этому месту, но, прочитав faq и поразмыслив об этом, я решил, что вики-разметка - это такой же собственный язык, как HTML и CSS, и если эти вопросы приветствуются здесь, то, надеюсь, и этот тоже!Если я ошибаюсь, не стесняйтесь отметить этот вопрос. Обновить: Ну, как свидетельствуют 3 просмотра, которые получил этот вопрос, я полагаю, что, хотя, возможно, это соответствует правилам Stackoverflow, может быть, не так много знаний по этому вопросу!Я полагаю, мне нужно будет вынести этот вопрос на официальные форумы (содрогаюсь)


Проблема

В вики, которую я настраиваю с помощью MediaWiki, у меня есть шаблон, который выводит, среди прочего, динамически создаваемые категории.Это означает, что страница, которая вызывает шаблон, будет классифицирована на основе некоторых переменных, переданных шаблону.Динамически генерируемые категории находятся внутри <includeonly> блокирует, чтобы предотвратить попадание категорий на саму страницу шаблона.

Проблема в том, что затем я перехожу это страница переходит на другие страницы, что приводит к тому, что категории также будут переведены, и теперь на этой третьей странице есть все категории всех страниц, которые она перевела.

Я хочу каким-то образом отформатировать шаблон таким образом, чтобы страница, вызывающая шаблон, использовала категории, но любые страницы, которые перекрывают страницу вызова, не будут наследовать категории.

Пример

Вот мой лучший пример настройки.Если этого недостаточно, я могу предоставить ссылки на мой реальный пример.

Template:Food
Страница, которая принимает пару переменных и выводит высокоформатированный блок, объясняющий продукты питания, включая вывод категории на основе переменной "type".

Banana
Эта страница вызывает Template:Food шаблон с несколькими переменными, включая type установить на "fruit".Результатом является то, что пользователь просматривает "Banana"страница они получают красиво отформатированную страницу с некоторой базовой информацией о фрукте.Кроме того, если пользователь переходит к Category:Fruit страницу, они увидят банановую страницу в списке.

Banana Nut Bread Recipe
Это проблемная страница.На этой странице рецепта автор хочет перевести все страницы с ингредиентами, чтобы каждый ингредиент был указан в своем красиво оформленном блоке.Однако, когда он выходит за рамки Banana страница, использующая {{:Banana}}, тот Fruit категория переведена вместе с ним, и теперь Banana Nut Bread Recipe страница указана как находящаяся в Fruit категория, которая неверна.

Это было полезно?

Решение

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

Возможные решения:

1- Не помещайте информацию о категории в Template:Food.Просто поместите это непосредственно на страницу каждого ингредиента или, если вам действительно необходимо, создайте Template:Food_category или что-то подобное.Тогда каждая страница могла бы содержать любое количество {{Food}}s и the {{food category}}s нужно было бы указать явно.

Другие советы

Расширение Трансклюзии помеченных разделов позволяет помечать части исходной статьи ярлыками и выполнять трансклюд на основе этих тегов.Теги могут перекрываться, так что у вас есть очень детальный контроль над тем, что проходит через них.

https://www.mediawiki.org/wiki/Extension:Labeled_Section_Transclusion

Я бы подумал, что с надписью Section Transclusion вы могли бы перевести как Type: fruit, так и описание Banana в отдельные инструкции transclusion на странице Banana, но перенесите описание только на страницу рецепта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top