A-A+

如何用mediawiki建一个wikiblog

2009年10月22日 学习随笔 暂无评论 阅读 1 次

作者:Shizhao

刚刚用mediawiki(wikipedia所使用的wiki平台)建了一个wikiblog(又叫作bliki)——维基观察,就是一个建立于wiki平台上的blog。所使用的主要的mediawiki扩展如下(这里可以看到我所使用的全部扩展):

WikiSkin:优点是可以完全定制自己wiki网站的版面布局(在这里定制),缺点是原来系统自带的所有CSS样式斗废掉了,全部要自己在Common.css里重写,当然这样会更灵活和方便。在LocalSettings.php里设定:

require_once(”extensions/Wikiskin.php”);
$wgWikiSkinArticle=Wikiskin;

HeaderFooter定制自己每个页面的头部和脚部,这里头部是页面中条目标题开始处,脚部是条目内容结束处,不是整个页面的头部和脚部。这个扩展非常灵活,甚至可以对每个页面都定义不同的脚部和头部,搭配wikiskin就更加强大灵活。设定:

require_once( “$IP/extensions/HeaderFooter/2.0.1/HeaderFooter.php” );

StubManagerHeaderFooter扩展所需的东西。设定:

require_once( “$IP/extensions/StubManager/1.3.0/StubManager.php” );

ArticleComments:为wikiblog的每篇文章增加blog风格的留言系统。设定:

require_once(’extensions/ArticleComments.php’);
$wgArticleCommentsNSDisplayList = array(NS_MAIN, NS_TALK, NS_USER_TALK); //设定在哪些名字空间显示留言板
$wgArticleCommentDefaults['showurlfield'] = true; //是否显示url填写区域

DynamicPageList2:根据你设定的条件显示内容。我的wikikblog的側边栏和首页等都是用他生成的,这样就不用像平常的wiki那样一页一页手工更新内容了。可能的问题是,过于复杂的DPL会增加服务器的负荷。设定:

require_once(”$IP/extensions/DynamicPageList/DynamicPageList2.php”);

WikiArticleFeeds:blog怎能没有feed?但是mediawiki所提供的几个rss输出的都是wiki化文本,不是浏览器可读的HTML。这个扩展则可以在某个页面生成该页面的rss。但是问题是这个扩展对于中文系统的支持有问题,中文下无法检测出作者和日期。设定:

require_once(’extensions/WikiArticleFeeds.php’);
$wgFeed = false; //禁止掉系统自带的rss
$wgMaxCredits =-1;

各种条件判别等比需有ParserFunctions ,这样你的wiki才够强大,才可以作很多事情。如果你要向我一样弄个分类云,则要装ParserFunctions (extended) Variables

require_once(”$IP/extensions/ParserFunctions/ParserFunctions.php”);
require_once( “$IP/extensions/Variables/Variables.php” );


blog上还会用上许多
 Widgets,那就装上它:

require_once(”$IP/extensions/Widgets/Widgets.php”);
$widgetNamespaceIndex = 274;
$wgGroupPermissions['sysop']['editwidgets'] = true;

不要让人随便编辑,那么就装上 EditOnlyYourOwnPage。这样其他注册的用户就只能编辑自己的用户页和用户对话页。和ArticleComments搭配非常完美,用户可以通过它在对话页留言。

有了这几个扩展,一个wikiblog就基本建成了。为了增强更多的功能,更像一个blog,可以设置一下:

$wgUseTrackbacks = true;  //启用Trackback功能。但是貌似只能提供本站的Trackback,而不能ping别人(我自己顺便测试一下)
$wgNoFollowLinks = false;  //对http://这样的连接不使用NoFollow
$wgShowSQLErrors = true;  //调试用
$wgHideInterlanguageLinks = true; //把mediawiki上的跨语言连接功能去掉
$wgUseCommaCount = false;  //文章计数方式
$wgAllowExternalImages = true; //可以直接引用外部图像

设定网站的logo:

$wgStylePath   = “皮肤所在路径”;
$wgLogo        = “{$wgStylePath}/common/images/logo.png”;

设定网站的favicon.ico(可以用这个在线制作

$wgFavicon = “$wgScriptPath/favicon.ico”;

设定好cache,优化访问速度:

$wgUseFileCache = true; /* default: false */
$wgFileCacheDirectory = “$IP/cache”;

如果要使用维基共享资源上的图片,可以这样设定(必须是1.13以上版本才支持):

$wgForeignFileRepos[] = array( 'class' => 'ForeignAPIRepo', 'name' => 'shared', 'apibase' => 'http://commons.wikimedia.org/w/api.php', 'fetchDescription' => true, // Optional 'descriptionCacheExpiry' => 43200, // 12 hours, optional 'apiThumbCacheExpiry' => 43200, // 12 hours, optional, but required for local thumb caching );

现在基本上看不出太多的wiki痕迹了。但是还有一些问题目前不好解决。一个是评论功能只能一篇文章显示它最近的一条评论,而不能按照顺序列出一篇文章的多个评论。二是目前的这个wikiblog没有tag功能,貌似wiki天生就看不上tag,我这里就是勉强用分类来代替tag。三是文章的存档还是必须自己来弄,系统不会自己生成。

另外,用medawiki建立blog并不是只有这一种方法。例如用wiki左右编辑平台,而文章出版平台用wordpress,见WikiToWordPress。或者是用wordpress的评论功能作为wikiblog的留言系统,见WordPress Comments。甚至以用户为单位的blog系统:My blog。(这个适合作多用户的wikiblog,或者叫做WBSP?哈哈 )如果你有服务器的操作权限,你也可以用wikilog这个扩展建立blog(这个扩展相当不错)。可以参考这个wikiblog

给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录