2017-06-22 17 views
0

私はMediaWikiに表形式で情報を表示するためのテンプレートを用意しています。テンプレートは、(より良い概要については短縮)次のようになります。MediaWikiテンプレートテーブル条件付きカラム

{| align="center" border="1" cellpadding="1" cellspacing="1" style="width: 400px" 
| colspan="2" style="text-align: center; background-color: {{{Fon1}}}; color: {{{Fon2}}}"|'''Data''' 
|- 
| colspan="2" style="background-color: {{{Fon1}}}; color: {{{Fon2}}}"|<center>'''Overview'''</center> 
|- 
{{#if:{{{Soft Skills|}}}| 
{{!}} '''Soft Skills''' 
{{!}} {{{Soft Skills|}}} 
}} 
|- 
{{#if:{{{Picture|}}}| 
{{!}} {{{ Picture|}}} 
|- 
|} 

彼らは順不同リスト(<ul><li>Skill One</li><li>Skill Two</li> ... </ul>)で埋められます。時にはたくさんのことがありますので、5つ以上の列がある場合は2つの列を取ることをお勧めします。

私は条件付きテーブルを見ましたが、私を助けたものは見つかりませんでした。私もstackoverflowは検索しませんでしたが、何も見つかりませんでした。

これは何とかできますか?

答えて

0

リストを列に分割するのはかなり簡単です。これを行うウィキペディアのテンプレートがいくつかありますが、最も人気のあるものはTemplate:Div colです(CSSはMediaWiki:Common.cssに保存されていますが、これはdiv colのすべてのサブテンプレートと共にコピーする必要があります)。 other column templatesを調べて、その動作を確認することもできます。

難しい部分は、リストに5つ以上の項目があるかどうかを検出しています。テンプレートは{{{Soft Skills|}}}パラメータの内容しか見ることができないので、何らかの方法でそれを解析して項目数を調べなければなりません。あなたはMediaWikiのスタイルの両方順不同リストを持つことができるので、これは、トリッキーです:

* Item 1 
* Item 2 
* Item 3 

としてだけでなく、HTML形式のリスト:

<ul> 
<li>Item 1</li> 
<li>Item 2</li> 
<li>Item 3</li> 
</ul> 

また、HTML形式のリストには属性が含まれており、一貫性のないことができます空白など

代わりに、あなたは、あなたがこのような何かを行うことができますなど{{{Soft Skill 1}}}{{{Soft Skill 2}}}{{{Soft Skill 3}}}、のように、いくつかのソフトスキルパラメータを受け入れるためにあなたのテンプレートを再構築できます。

{{#if: {{{Soft Skill 5|}}} 
| {{div col||10em}} 
    {{unbulleted list 
    |{{{Soft Skill 1|}}} 
    |{{{Soft Skill 2|}}} 
    |{{{Soft Skill 3|}}} 
    |{{{Soft Skill 4|}}} 
    |{{{Soft Skill 5|}}} 
    |{{{Soft Skill 6|}}} 
    |<!-- Add as many more parameters here as you think you will need... --> 
    }} 
    {{div col end}} 
| {{unbulleted list 
    |{{{Soft Skill 1|}}} 
    |{{{Soft Skill 2|}}} 
    |{{{Soft Skill 3|}}} 
    |{{{Soft Skill 4|}}} 
    }} 
}} 

しかし、このためにはTemplate:Unbulleted listが必要です。もちろん、非常に醜いコードです。

これを改善するには、Scribunto拡張子を使用して、テンプレートをLuaに書き込みます。実際、上記のような構造はScribuntoがWikimedia wikiに導入された理由の大部分を占めていました。 (そしてテンプレート:BulletedリストにはScribuntoが必要です。)Scribuntoを使うと、ループを展開して有限回数だけ反復するのではなく、すべてのSoft Skillsパラメータに対してforループを書くことができます。

{{{Soft Skills}}}パラメータを実際に使用したい場合は、Scribuntoを使用してそのコンテンツを解析することもできますが、これは上記の理由で難しくなります。 wikitextを解析するとき{{{Soft Skill 1}}},{{{Soft Skill 2}}}などのパラメータを使用する方が信頼性の高い選択肢です。

+0

徹底的で十分な回答をいただきありがとうございます.D –