美国虚拟主机Hostease

Mediawiki中文技术论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8559|回复: 0

教你使用自定义插件扩展Mediawiki

[复制链接]
发表于 2011-12-29 10:46:03 | 显示全部楼层 |阅读模式
美国主机侦探
 Mediawiki 是一个应用于包括WIKIMEDIA在内的许多网站的高效的PHP WIKI程序,它的可扩展性与安全性,以及其极其简易的应用性使得用户很轻松的为它编写插件程序。

  假如你想把自己的生活经历在WIKI里发表,WIKI 的程序文件经常会发生变化,并且WIKI一定要反映其内部文件的情况。你可以编写一个插件来解决这个现象。这些插件的目录位于

  extensions/ subdirectory等目录下,有许多插件可以下载。如果你具备对PHP基本的了解,你就可以写出自己貌似与WIKI程序无缝对接的插件来。

  下面的内容将会显示通过WIKI页面所提交的内容,这个文件一定要在服务器端具有可读的属性。

以下是引用片段:
  1.   // Add the hook function call to an array defined earlier in the wiki code execution.
  2.   $wgExtensionFunctions[] = "wfFile";
  3.   // This is the hook function. It adds the tag to the wiki parser and tells it what callback function to use.
  4.   function wfFile() {
  5.   global $wgParser;
  6.   # register the extension with the WikiText parser
  7.   $wgParser->setHook( "file", "renderFile" );
  8.   }
  9.   # The callback function for converting the input text to HTML output
  10.   function renderFile( $input ) {
  11.   $file = NULL;
  12.   if (isset($input))
  13.   {
  14.   switch($input)
  15.   {
  16.   case "/tmp/status";
  17.   $file = "/tmp/status";
  18.   break;
  19.   case "/var/lib/foo":
  20.   $file = "/var/lib/foo";
  21.   break;
  22.   }
  23.   }
  24.   if (file_exists($file))
  25.   {
  26.   $data = file($file);
  27.   $data = implode($data, "");
  28.   } else {
  29.   $data = "Invalid version";
  30.   }
  31.   $return= "
  32.   " . $data . "
  33.   ";
  34.   return $return;
  35.   }
  36.   ?>
复制代码
如果你没有把输入的内容进行过滤的话,一定要当心了。因为这个插件可能会具有危险性,在这段代码里,我们明确检测到如果$input 这个变量是一个或两个文件时,如:/var/lib/foo or /tmp/status,如果两者都不是,这个$file 变量就不会被设置并且仍然为NULL。如果提交的文件名是这两个文件中的任意一个,它就会被检索到然后返回MEDIAWIKI显示出来。
  将以下内容增加到LocalSettings.php 文件中,用来包含扩展文件。(假设这个文件起名 PLUGIN——FILE.PHP)

  include("./extensions/plugin_file.php");

  最后,要想在MEDIAWIKI里应用这个插件,你需要用以下代码创建或编辑一个页面:

  /tmp/status

  我们通过$wgParser->setHook的调用来使用插件程序,我们用相关的功能来定义这个文件

  如你能看到的,这个例子十分的简单,能够为一个网站添加自己编写的代码,这将给你扩展自己的WIKI带来无限的可能。
回复

使用道具 举报

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

本版积分规则

美国主机评测网站

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

GMT+8, 2024-4-20 05:39 , Processed in 0.038631 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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