【发布时间】:2015-01-06 14:46:54
【问题描述】:
我正在使用 Mediawiki 创建一个 wiki。我在其他 wiki 上看到了每个页面的右侧栏。 像这样:http://minecraft.gamepedia.com/Diamond_Ore
右侧栏包含有关 wiki 帖子解释的内容或任何内容的信息。
我想知道是否可以在每个页面上制作它,以及如何制作?
我制作了一个示例页面:[链接已删除]
这是我的 wiki,我想知道如何在页面上添加侧边栏。
【问题讨论】:
我正在使用 Mediawiki 创建一个 wiki。我在其他 wiki 上看到了每个页面的右侧栏。 像这样:http://minecraft.gamepedia.com/Diamond_Ore
右侧栏包含有关 wiki 帖子解释的内容或任何内容的信息。
我想知道是否可以在每个页面上制作它,以及如何制作?
我制作了一个示例页面:[链接已删除]
这是我的 wiki,我想知道如何在页面上添加侧边栏。
【问题讨论】:
要制作简单而优雅和灵活的信息框,首先检查是否安装了ParserFunctions extension。然后使用以下 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>
将“param1”、“param2”等替换为您的信息框实际需要的参数,例如“name”、“birth-date”等。如果您需要更多参数,只需复制(复制-paste) 现有参数之一并对其进行修改。
然后转到 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;
}
最后,转到需要信息框的 wiki 页面并复制以下 wikitext,将“Infobox”替换为您为模板指定的名称,并将“param1”、“param2”等替换为您的名称已经给了你的参数:
{{Infobox
|title =
|image =
|param1 =
|param2 =
|param3 =
|param4 =
|param5 =
}}
您可以放心地留空或删除您不使用的任何参数,因为它们都是可选的。如果未提供“标题”,则信息框将默认为页面名称,这通常是您想要的。
我不得不为无数客户开发这样的信息框,我慢慢地找到了这个解决方案,因为它在复杂性和灵活性方面都是最佳的。希望它可以帮助某人!
PS 对于任何高级用户:我建议使用 HTML 而不是 wikitext 来定义主表,因为这样我们可以避免与 #ifs 的管道发生冲突。在 Wikipedia 中,通过使用插入管道的名为 {{!}} 的模板来避免这种冲突,但这会导致 wikitext 不可读。
【讨论】:
信息框只是带有右侧浮动和一些额外格式的表格。
{| style="float:right;border:1px solid black"
| My fantastic infobox
|-
| More info
|}
为了获得最佳实践,您应该在 wiki 的 CSS 的一个类中包含信息框格式,并定义一个信息框 template,而不是在每个页面上创建单独的表格。
【讨论】:
不确定@Sophivorus 的帖子有多新鲜 - 没有日期,所以我假设它是从 2018 年开始的,如果不是 - 抱歉。
我正在寻找一个教程来解释讨厌的信息框及其创建过程,但没有运气。维基本身没有帮助。 2,5 晚上后,我终于放弃并找到了 Sophivorus 的帖子。它给了我一个提示,也许用简单的 CSS 在 HTML 中创建一个信息框是一个更好的广告更容易的想法。我认为 Wiki 必须将其 s&&&ty 信息框转换为 HTML,我没有错! :) 我有一个不错的信息框,无需学习 wiki 的 scribunto-lua-srua-wikitext 怪物以及 HTML 和 CSS 方面的大量知识。
我想一步一步地为像我这样的傻瓜分享解决方案。
<table class"[..] 标记。请注意,当您将鼠标悬停在 <table class=" 上时,整个信息框都会突出显示
<table class="infobox" bla bla bla>)2)标题/标题类信息框-副标题(或其他;<th class="infobox-subtitle" bla bla>)3)给副标题一个类如果你想要任何字幕 (<td class="infobox-subtitle" bla bla>)。从这里复制 CSS 或使用上面提到的类自己在 CSS 中创建代码
.infobox {
background-color: #ffff00;
border: 2px solid #008600;
float: right;
margin: 0 0 1em 1em;
padding: 1em;
width: 400px;
}
.infobox-title {
border: 1px solid #000000;
font-size: 1.5em;
text-align: center;
background-color: #ff0000;
}
.infobox-subtitle {
font-size: 1em;
text-align: center;
background-color: #fff00;
}
.infobox-image {
text-align: center;
background-color: #ffff00;
}
在 HTML 中: 在您希望用户添加信息的地方粘贴 {{{somenamehere}}} 然后创建一个模板,您必须将其放置在其他页面上以调用您的 Examplenamehere 模板:
{|Examplenamehere
|{{{somenamehere1}}}
|{{{somenamehere2}}}
|etc. etc.
|}
在表格顶部放置带有页面名称的标题:{{{nazwa|{{PAGENAME}}}}},而不是标题。
如果您想检查或复制我的模板,请转到此处:http://wiki.mrowki.ovh/index.php?title=Szablon:Opis 并检查页面
【讨论】: