Трансклюзия
Поступило предложение об объединении этой страницы или раздела с Help:Transclusion.(Обсудить) |
Трансклюзия — это включение содержимого одного документа в другой через ссылку. В контексте вики это использование функциональности MediaWiki-шаблонов для включения одного и того же контента в несколько документов без необходимости редактировать эти документы по отдельности.
Как работает трансклюзия
Для трансклюзии любой страницы - "источника" (внутри какого-либо одного проекта MediaWiki, такого как Википедия) на другую страницу вставьте в эту другую следующий код: {{SOMEPAGE}}
, где вместо SOMEPAGE подставьте название исходной страницы.
Когда мы передаём содержимое страницы B на странице A, оно полностью отобразится там, где мы вставим шаблон трансклюзии - название упоминаемой страницы в двойных фигурных скобках
Например, вы можете решить поместить приветствие на странице обсуждения у каждого нового участника. Трансклюзия создает "живую" связь (link "ссылку") между страницей шаблона приветствия и страницей участника или страницами неограниченного числа участников, на которых приветствие отобразится. Изменения на странице шаблона отобразятся на всех страницах, куда вставлена ссылка на него в указанном формате трансклюзии.
Вы можете также захотеть создать страницу (шаблона) со своим почтовым адресом и включить этот шаблон не только на свою страницу, but но и на страницы всех своих друзей. Переехав на другую квартиру, вы сможете поменять данные на странице шаблона вашего адреса, и он автоматически обновится на страницах всех ваших друзей.
Разметка и синтакси трансклюзии
Если источник расположен в пространстве имён «Шаблон» (например, «Template:Welcome»), просто используйте название шаблона само по себе, отдельно:
{{Welcome}}
Если источник расположен в основном статейном пространстве имён (например, «VisualEditor»), перед названием должно быть добавлено «:» (двоеточие):
{{:VisualEditor}}
Если источник расположен в любом другом пространстве имён (например, «User:Example»), вы должны использовать название полностью, включая пространство имён:
{{User:Example}}
Если источник является подстраницей целевой страницы, (например, «Transclusion/ja»), вы можете просто указать имя подстраницы независимо от пространства имён:
{{/ja}}
Этимология
Тед Нельсон придумал термин «трансклюзия», наряду с терминами «гипертекст» и «гипермедиа», в книге 1982 года «Литературные машины».
Частичная трансклюзия
Используя теги разметки "noinclude" ("не включать"), "onlyinclude" and "includeonly", ("включать только") можно задать выводить на целевую страницу лишь часть страницы источника вместо целой. Частичная трансклюзия может быть и с других страниц - например, подстраниц. Часто желательно отображать не всю информацию - например, не выводить за пределы исходной страницы документацию шаблона и его категории.
Примеры использования полной или частичной трансклюзии
Use full transclusion when you want to include the full content of a source page in a target page. For example, you could include the full content of a page about apples in a page about tree fruits. Use partial transclusion when you only want to include part of a source page in a target page. For example, you could include only information about Granny Smith apples from a page about apples in a page about ingredients commonly used in baking.
Разметка частичной трансклюзии
- noinclude - Разметка
<noinclude>...</noinclude>
означает, что текст между тегами видим исключительно на странице-источнике и не может быть включён на другую страницу. Это полезно для документаций шаблонов и категорий. - includeonly - Разметка
<includeonly>...</includeonly>
означает, что текст между тэгами будет скрыт на странице-источнике и будет отображаться только на любой другой странице. Это может быть полезно, например, для простановки категорий на страницы, содержащие тот или иной шаблон, без добавления самого шаблона в эти категории. - onlyinclude - Разметка
<onlyinclude>...</onlyinclude>
означает, что текст между тегам будет видимым на странице-источнике и видимым при включении в любую другую страницу. Этот тег частичной трансклюзии самый тонкий, так как нередко отменяет действие других. Если на странице есть хоть одна пара тегов "onlyinclude", то когда мы задаем ее трансклюзию, только материал между тегами "onlyinclude" выводится на целевую страницу. There can be several such "onlyinclude" sections on a page. Это может пригодиться для повторения небольшой части одной страницы на другой: просто заключите эту небольшую часть между тегами onlyinclude, и она отобразится на нужной другой странице.
<noinclude>
, <includeonly>
, and <onlyinclude>
behave differently inside <nowiki>
tags. nowiki tags enable escaping special markup, and does this for <noinclude>
and <includeonly>
tags. However, <onlyinclude>
tags within <nowiki>
tags produces only the content inside the <onlyinclude>
tag.Разметка | Output when transcluded |
---|---|
<nowiki><noinclude> My content </noinclude></nowiki>
|
<noinclude> My content </noinclude>
|
<nowiki><includeonly> My content </includeonly></nowiki>
|
<includeonly> My content </includeonly>
|
<nowiki><onlyinclude>My content</onlyinclude></nowiki>
|
My content |
You can nest all three transclusion types within each other, which enables you to refine exactly what content is displayed on the current page and is visible on transcluded pages.
Подстраницы
You can cut and paste the text to be transcluded into a subpage, then use the name of the subpage in the transclusion template. This approach can be used only where subpages are enabled; for example, on the English Wikipedia, subpages can be used only from User, Talk or Wikipedia pages; currently, subpages cannot be created from main article pages.
Example: you want to discuss the deletion and redirecting of Pussycat to Cat. First, create the subpage Talk:Pussycat/Let's delete Pussycat!, write your comment into it, then transclude it in Talk:Pussycat and Talk:Cat using the template {{Talk:Pussycat/Let's delete Pussycat!}}. Comments posted in either talk page will be shown in both.
Служебные страницы
Некоторые Special:SpecialPages также могут быть включены в другие, например, Special:AllPages, Special:PrefixIndex, Special:NewFiles, Special:NewPages, Special:RecentChanges м Special:RecentChangesLinked.
- Special:AllPages
- Special:PrefixIndex
- Special:NewFiles
- Special:NewPages
- Special:RecentChanges
- Special:RecentChangesLinked
Пример: {{Special:Newpages/3}} даёт три новые страницы.
URL parameters can be given like template parameters, e. g.
{{Special:RecentChanges|namespace=10|limit=5}}.
Alternatives to transclusion by template
Occasionally you may want to use a template, but for one reason or another may not want to use transclusion. The automatic one-time copying of a template's code/text to the location of a template tag is called Template substitution or subclusion (substitution + transclusion). To subclude a template's code/text, the template tag is modified from the standard transclusion tag to a substitution tag, simply by adding subst:, creating a tag with the form: {{subst:template name}}.
Labeled Section Transclusion
An extension called Labeled Section Transclusion enables marked sections of text to be transcluded.
Scribunto
You can transclude page content, or even parts of it, using Lua with the Scribunto extension. See Module:Transcluder for an example on this wiki.
Semantic MediaWiki
The Semantic MediaWiki extension uses inline queries to query and display semantic data. There are currently two ways to perform transclusion or something similar:
- Transclusion proper. The display format "embedded" ensures that selected pages (mainspace articles, templates, etc.) are transcluded. As with templates, sections placed between noinclude tags will be omitted.
- Selected passages in a page can be assigned a property of type 'Text'. These selections can be requested by running an inline query for this type of property.
See inline queries for further information.
Страницы, связанные с трансклюзией MediaWiki
Шаблоны
Смотрите также
- Request for template transclusion from Commons (interwiki templates, etc.)
- w:Wikipedia:Substitution (the opposite of transclusion)