0%

MediaWiki的内容隐藏

  MediaWiki + VIM是我最近折腾的两大重心。当初选择wiki程序的时候也曾被dokuwiki和moinmoin勾引过好久,dokuwiki不用数据库,很轻巧,moinmoin有我喜欢的Python。不过到最后还是因为维基百科而选择了MediaWiki。永久了也就越来越放不下了,至于其他的两个,先把 MediaWiki折腾好了再说。

  个人认为在MediaWiki里面写东西的时候内容隐藏的功能绝不可少。特别像我这种喜欢贴代码和流程思想的人,往往一页写下来老长老长。而且我对 MediaWiki最不满的就是目录无法自动滚动,所以再次浏览或编辑这条目的时候只能PageUp/Down的狂摁,相当难受。

  于是乎我今天就在找到了个好东西—>Toggle。他们自己是这样定义的:This feature allows for toggling the visibility of any part of the page.(能让我们切换页面上一切元素的显示/隐藏状态)哈哈,这下赚大发了。

  Toggle不是基于MediaWiki的插件,而是js代码。要想在MediaWiki用它必须修改MediaWiki:Common.js页面(用MediaWiki的原话来说在此处的JavaScript将加载于所有用户每一个页面)。修改方法也很简单,用管理员登陆,在MediaWiki的搜索框中输入MediaWiki:Common.js。点击进入,不存在的话直接创建页面就行了。直接在浏览器中进入可能会出现403Forbidden的情况(亲测,估计是哪个权限没配好)。最后在这个页面增加以下代码http://www.mediawiki.org/wiki/MediaWiki:Common.js

  —————————以下是使用介绍—————————

  我们可以给为任意元素来生成一个Toggler(就是隐藏/显示的切换器,以下统一用Toggler)。

  最简单的方法是手动增加Toggler。要定义一个基本的toggler,只要增加这样的一个元素就行了。

1
<span class\="\_toggler-CLASS"\>toggler</span\>

  其中“_toggler-CLASS”的“CLASS”对应你要切换的页面元素的Class名称因此像下面的代码就能完美地完成我的目标。

1
2
<div style\="display: none;" class\="test"\>隐藏测试</div\>
<span class\="\_toggler-test"\>隐藏测试</span\>

  代码很好理解,首先创建了一个默认为隐藏的DIV,

填入我们想隐藏的任何东西(代码、图片…)。然后创建了对应这个DIV的切换器。事实上我更喜欢把创建切换器写到创建DIV之前,效果更好。

  最方便的方法是使用MediaWiki的模板,首先创建模板Template:Hide,填入以下代码并保存。

1
2
<includeonly\><span class\="\_togglegroup \_toggle\_initshow \_toggle \_toggler toggle-visible" style\="display:none;"\>\[show\]</span\><span class\="\_toggle\_inithide \_toggle \_toggler toggle-hidden" style\="display:none;"\>\[hide\]</span\>
<div class\="\_toggle\_inithide \_toggle toggle-hidden"\>{{{1}}}</div\></includeonly\><noinclude\>

  Usage

1
<nowiki\>{{hide|text to hide}}</nowiki\> or <nowiki\>{{hide|1=text to hide}}</nowiki\>. The second form is required when "text to hide" contains an equals sign. This produces:{{hide|text to hide}}</noinclude\>

  接下来我们就可以在Wiki里面就可以用

1
{{hide|要隐藏的内容}}

  来添加Toggler了,很方便吧… 最有意思的用法是这样的,你点击它的时候把它自己也隐藏了,哈哈。

1
2
<span class\="\_toggler-toggle toggle"\>隐藏测试</span\>
<div style\="display: none;" class\="toggle"\>隐藏测试</div\>

  相对高级的应用: toggler可以切换其他的toggler的显示状态,甚至是本身。以下代码就生成了两个相互切换的toggler

1
2
#<span class\="\_toggler-toggler2 toggler1"\>Toggle #2</span\>
#<span class\="\_toggler-toggler1 toggler2"\>Toggle #1</span\>

  你可以使用”_toggler_OPERATION-CLASS”来增加指定功能的toggler,这个Operation包括三种:reset、show、hide。

1
  同时我们也可以同过元素的ID来增加toggler,方法便是\_toggler--myelement(此Toggler对应的便是用<div id="myelement>...</div>来定义的元素)。

  更详细的可见OpenWetWare:Toggle,上面还有其他的模板。

—————————以下是扯淡—————————

  今天还有另一个收获就是发现了下一步的折腾目标:MediaWiki+Latex和TOC的自动浮动,MediaWiki+Latex好像有蛮多插件,TOC的自动浮动就不知道怎么弄了,继续折腾吧…