你如何在mediawiki中制作"信息框"?

hal*_*mi4 3 mediawiki sidebar

我正在使用Mediawiki创建一个wiki.我在其他wiki上看过每个页面的右侧栏.像这样:http://minecraft.gamepedia.com/Diamond_Ore 右侧栏有关于wiki帖子解释或者什么的内容的信息.

我想知道是否可以在每个页面上制作,以及如何?

我做了一个示例页面:http://moreplus.mwzip.com/wiki/ExamplePage 这是我的wiki,我想知道如何在页面上添加侧栏.

Dav*_*eve 9

信息框只是带有右侧浮动和一些附加格式的表格。

{| style="float:right;border:1px solid black"
| My fantastic infobox
|-
| More info
|}
Run Code Online (Sandbox Code Playgroud)

作为最佳实践,您应该在 wiki 的 CSS 的一个类中包含您的信息框格式,并定义一个信息框模板,而不是在每个页面上创建单独的表格。

  • 这对于表示方面来说很好,但对于内容方面,还应该仔细考虑在哪里存储实际数据。可能性包括标准维基文本/模板语法、SemanticMediaWiki、Wikibase。 (3认同)

Sop*_*rus 9

要制作简单而优雅且灵活的信息框,请首先检查是否已安装ParserFunctions扩展.然后使用以下HTML和wikitext组合创建一个名为"Infobox"(或其他)的模板:

<div class="infobox">
<div class="infobox-title">{{{title|{{PAGENAME}}}}}</div>{{#if:{{{image|}}}|
<div class="infobox-image">[[File:{{{image}}}|300px]]</div>}}
<table>{{#if:{{{param1|}}}|<tr>
    <th>Parameter 1</th>
    <td>{{{param1}}}</td>
</tr>}}{{#if:{{{param2|}}}|<tr>
    <th>Parameter 2</th>
    <td>{{{param2}}}</td>
</tr>}}{{#if:{{{param3|}}}|<tr>
    <th>Parameter 3</th>
    <td>{{{param3}}}</td>
</tr>}}{{#if:{{{param4|}}}|<tr>
    <th>Parameter 4</th>
    <td>{{{param4}}}</td>
</tr>}}{{#if:{{{param5|}}}|<tr>
    <th>Parameter 5</th>
    <td>{{{param5}}}</td>
</tr>}}</table>
</div>
Run Code Online (Sandbox Code Playgroud)

将"param1","param2"等替换为您对信息框实际需要的参数,例如"名称","出生日期"等.如果您需要更多参数,只需复制(使用复制粘贴)现有参数之一并对其进行修改.

然后转到MediaWiki:Common.css并添加一些样式(如果您没有编辑MediaWiki:Common.css的必要权限,则必须将此CSS作为内联样式添加到模板中的HTML):

.infobox {
    background: #eee;
    border: 1px solid #aaa;
    float: right;
    margin: 0 0 1em 1em;
    padding: 1em;
    width: 400px;
}
.infobox-title {
    font-size: 2em;
    text-align: center;
}
.infobox-image {
    text-align: center;
}
.infobox th {
    text-align: right;
    vertical-align: top;
    width: 120px;
}
.infobox td {
    vertical-align: top;
}
Run Code Online (Sandbox Code Playgroud)

最后,转到需要信息框的wiki页面并复制以下wiki文本,将"Infobox"替换为您给模板的名称,将"param1","param2"等替换为您之前定义的参数:

{{Infobox
|title = 
|image = 
|param1 = 
|param2 = 
|param3 = 
|param4 = 
|param5 = 
}}
Run Code Online (Sandbox Code Playgroud)

您可以安全地留空或删除任何不使用的参数,因为它们都是可选的.如果未提供"标题",则信息框将默认为页面名称,这通常是您想要的.

我不得不为无数客户开发类似这样的信息框,我慢慢地在复杂性和灵活性方面达到最佳解决方案.希望它可以帮到某人!

PS适用于任何高级用户:我建议使用HTML而不是wikitext来定义主表,因为这样我们可以避免与#ifs的管道发生冲突.在维基百科中,通过使用插入管道的名为{{!}}的模板来避免这种冲突,但这会导致无法读取的wiki文本.