Transcluding
- Transclusion in MediaWiki: A Beginner's Guide
Transclusion is a powerful feature in MediaWiki that allows you to include the content of one page into another without duplicating that content. Think of it like copying and pasting, but with a crucial difference: if the original page is edited, all pages that *transclude* it are automatically updated to reflect those changes. This article will provide a comprehensive guide to transclusion, suitable for beginners, covering its benefits, syntax, common uses, potential pitfalls, and advanced techniques.
- What is Transclusion and Why Use It?
At its core, transclusion is about re-using content. Instead of copying large blocks of text, tables, or templates across multiple pages, you create the content once and then *include* it wherever needed. This offers several key advantages:
- **Maintainability:** If information needs updating (e.g., a definition, a standard disclaimer, a list of resources), you only need to edit it in *one* place. All pages using transclusion will automatically reflect the change. This drastically reduces the risk of inconsistencies and errors.
- **Consistency:** Ensures a uniform presentation of information across the wiki. For example, a standard warning message can be transcluded on all pages where it’s relevant, ensuring it looks and reads exactly the same.
- **Reduced Redundancy:** Saves storage space and makes the wiki easier to back up and manage. Repeating content needlessly increases the size of the wiki database.
- **Organization:** Encourages a more modular approach to content creation, making it easier to organize and update information. This ties in well with Help:Content_organization.
- **Dynamic Content:** Transclusion can be used to display dynamic content, such as the current date or the latest news from an external source (though this often requires extensions).
- The Basic Syntax: Template:...
The fundamental syntax for transclusion is using double curly braces `Template:...`. Inside the curly braces, you specify the name of the page you want to transclude.
For example, if you have a page named "Template:ImportantNotice" containing the following text:
```wiki Important Notice: This wiki is under construction. Content may change. Please contribute to help improve it! ```
You can transclude this notice onto any other page by using the following code:
```wiki Template:ImportantNotice ```
This will display the notice exactly as it appears on the "Template:ImportantNotice" page. If someone edits "Template:ImportantNotice", the changes will *immediately* appear on all pages that transclude it.
- Transcluding Templates vs. Pages
While you can technically transclude any page, transclusion is most commonly used with *templates*. Templates are specifically designed to be re-used across multiple pages. They often contain parameters (see below) to allow for customization. Using dedicated templates is a best practice for maintaining a well-organized and consistent wiki.
Think of a template as a reusable blueprint. A regular page is a completed building built from that blueprint. Changes to the blueprint (template) affect all buildings (pages) built from it.
- Parameters: Customizing Transcluded Content
Transclusion becomes even more powerful when you use *parameters*. Parameters allow you to pass values into a template, customizing the output each time it's transcluded. Parameters are specified after the template name, separated by vertical bars (`|`).
Let's modify our "Template:ImportantNotice" example to include a parameter for the notice type:
```wiki
```
Now, you can transclude this template with different parameters:
- `Template:ImportantNotice` will display: `Important Notice: This wiki is under construction...`
- `Template:ImportantNotice` will display: `Warning: This wiki is under construction...`
- `Template:ImportantNotice` will display: `Information: This wiki is under construction...`
- `Template:ImportantNotice` will display: `Notice: This wiki is under construction...` (using the default)
The `#switch` parser function allows you to select different content based on the value of a parameter. This is just one example of how you can use parameters to create flexible and reusable templates. Other useful parser functions include `#if`, `#ifeq`, and `#ifexist`. These are described in Help:Magic_words.
- Named Parameters
Instead of relying on positional parameters (like `{{{1}}}`, `{{{2}}}`, etc.), you can use *named parameters*. This makes your templates more readable and less prone to errors.
To define a named parameter, use the `{{{name=default}}}` syntax. To pass a value to a named parameter, use `name=value` in the transclusion.
For example, let's modify our template:
```wiki
```
Now you can transclude it like this:
- `Template:ImportantNotice`
- `Template:ImportantNotice`
- `Template:ImportantNotice` (uses the default "Notice")
The `|default` part of `default` specifies the default value if no value is provided for the `type` parameter. This increases the robustness of your templates.
- The `