allwiki首页  
天下维客 你可以修改的网络知识库
首页最近更改优秀条目专题展示电脑科技词典软件学习网络知识电脑安全明星时尚天下百科
 

Mediawiki简明扩展教程

天下维客,你可以修改的网络知识库

Jump to: navigation, search
MediaWiki扩展简明教程 Inputbox帮助文档 使用Spam黑名单 内容折叠隐藏 动态文章列表 指定图片链接
代码高亮处理 预置初始编辑文本 页面访问限制 所见即所得编辑器 QQ在线信息
交流:扩展使用 投票与评分 内容随机展示 wikitex 改进设想 ...更多
加入google地图和51地图标注功能 Ajax五颗星评分插件

目录

关于扩展插件

mediawiki不但提供了基本的功能,而且预留了扩展功能。其目的就是方便二次开发,扩充wiki功能。一般mediawiki的插件都是PHP文件。mediawiki安装目录下的extensions即是放置扩展插件的目录。

插件启用

在extensions文件夹放置插件后,在localsettings.php文件添加代码,一般是如下格式:


 include("extensions/插件文件名");

插件简介

CharInsert

  • 本插件的功能是使得mediawiki可以解释<charinsert></charinsert>标签,从而实现在编辑界面时,点击此标签内的字符即可将其输入到编辑区内。
  • 安装:将CharInsert.php文件置于extensions文件夹内。在localsettings.php文件中加入如下代码(最好隔几行加入要不有的可能不显示):
 include("extensions/CharInsert.php");
  • 进入特殊页面之系统界面,修改编辑界面下的文本所在的name,直接修改MediaWiki:Copyrightwarning。尝试加入<charinsert>代码在其中加入符号,举例如下:
 中文标点: <charinsert>“+” ‘+’ 「+」 『+』 (+) 【+】《+》 〈+〉</charinsert>

此时,编辑界面下应有可以点击输入的中文标点了。

  • 相关链接:

http://cvs.sourceforge.net/viewcvs.py/wikipedia/extensions/CharInsert/ http://meta.wikimedia.org/wiki/Category:Mediawiki_Extensions

关于如何扩展有wiki之我见

概述

  • 方法一,通过meta来扩展
  • 方法二,通过hooks来扩展
  • 方法三,meta和hook并不能满足需要的话.那么可以通过SpecialPage来达到你所想要的.我就是这么做的

通过meta来扩展

  1. 新建扩展文件,extensions/filename.php

把extensions/filename.php包含到LocalSetting.php中

  • require_once('extensions/filename.php")

注册meta标签到$wgExtensionFunctions数组中,通知wiki处理该扩展函数

  • $wgExtensionFunctions[] = "wfExFun"
  • 定义一个函数wfExfun,如function wfExFun(){}
  • 在函数wfExFun()注册你的meta.,该语句为$wgParser->setHook("tclist","tclist");
    • 第一个参数,是标签名,第二个参数是标签处理函数的函数名
    • 函数tclist()有二个参数,即$input和$argv,要求返回string
      • input表示标签内容<tclist>tc_list_mesg</tclist>,其中$input="tc_list_mesg"
      • argv是一个关联数组容器,装载着标签属性,比如<tclist tcid="52"></tclist>,则$argv['tcid']="52"

filename.php源码 <?php $wgExtensionFunctions[] = "wfExFun"; /**

*关联标签和标签处理函数
*/

function wfExFun(){

  global $wgParser;
  $wgParser->setHook("tclist","tclist");

}

/**

*
*/

function tclist($input,$argv){

   $returnstr = "";
   if(!empty($input)) $returnstr .= "
".wfMsg('meta_content').":{$input}"; if(!empty($argv['tcid'])) $returnstr .= "
".wfMsg('meta_attri_id').":{$argv['tcid']}"; return $returnstr;

} ?>

如此,则可以使用自己的标签了 <tclist tcid="4856"></tclist> <tclist></tclist> <tclist>测试</tclist>


通过hooks来扩展

  • 你确保看了hooks doc.
  • 挂钩子
  • 注册钩子函数 ,使钩子事件和钩子处理函数关联对应
  • 通知wiki调用钩子处理函数
    • 钩子函数的三种返回值,true,false,string
    • 钩子函数的参数
    • 除了钩子函数,还有,代码段,对象....
  • 写钩子函数

通过Special来增加你想要的功能

  • 增加自己的特殊页面SpecialMySpecPage.php
  • 增加自己的函数wfSpecialMySpecpage()函数,并在这里做你想做的事情
  • 把这个特殊页面加到Special:Specialpages里,即把SpecialPage或其它二个实例增加到$wgSpecialPages数组中

动态页面列表插件

文件代码在DynamicPageList.php,插件说明在动态页面列表 需要注意的是在设置文件中加include的时候 多隔几行,要不效果可能显示不出来。

Personal tools
工具
金银币拍卖 金币拍卖预展  金银币网店 熊猫金银币 生肖金银币