美国主机Lunarpages

Mediawiki中文技术论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6209|回复: 0

Mediawiki的插件扩展

[复制链接]
发表于 2010-12-23 16:16:22 | 显示全部楼层 |阅读模式
美国主机侦探
关于扩展插件

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

插件启用

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


  1. include("extensions/插件文件名");
复制代码



插件简介

CharInsert

    * 本插件的功能是使得mediawiki可以解释<charinsert></charinsert>标签,从而实现在编辑界面时,点击此标签内的字符即可将其输入到编辑区内。
    * 安装:将CharInsert.php文件置于extensions文件夹内。在localsettings.php文件中加入如下代码(最好隔几行加入要不有的可能不显示):

include("extensions/CharInsert.php");

    * 进入特殊页面之系统界面,修改编辑界面下的文本所在的name,直接修改MediaWiki:Copyrightwarning。尝试加入<charinsert>代码在其中加入符号,举例如下:

  1. 中文标点: <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");
          o 第一个参数,是标签名,第二个参数是标签处理函数的函数名
          o 函数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"; /**

  1. *关联标签和标签处理函数
  2. */
复制代码


function wfExFun(){

  1.   global $wgParser;
  2.   $wgParser->setHook("tclist","tclist");
复制代码


}

/**

  1. *
  2. */
复制代码



function tclist($input,$argv){

  1.    $returnstr = "";
  2.    if(!empty($input)) $returnstr .= "
  3. ".wfMsg('meta_content').":{$input}";
  4.    if(!empty($argv['tcid'])) $returnstr .= "
  5. ".wfMsg('meta_attri_id').":{$argv['tcid']}";
  6.    return $returnstr;
复制代码


} ?>

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



通过hooks来扩展

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


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

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


动态页面列表插件

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

美国主机评测网站

Archiver|手机版|小黑屋|Mediawiki中文技术论坛

GMT+8, 2024-4-24 07:06 , Processed in 0.043920 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表