Ограничить трансклюзию категорий при использовании динамически генерируемых категорий в MediaWiki
Вопрос
Сначала я не был уверен, что вопрос о том, как сделать что-то продвинутое в 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, но перенесите описание только на страницу рецепта.