如何用mediawiki建一个wikiblog

作者: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



评论权限被关闭.



赞助商

文章索引模板

好友推荐链接

强力推荐链接

分类目录

   

统计信息

Translator

Chinese (Simplified) flagItalian flagKorean flagChinese (Traditional) flagPortuguese flagEnglish flagGerman flagFrench flagSpanish flagJapanese flagArabic flagRussian flagGreek flagDutch flagBulgarian flagCzech flag
Croatian flagDanish flagFinnish flagPolish flagSwedish flagNorwegian flag          

标签

专利战 世界 中国 为什么 介绍 使用 公司 分析 利用 功能 原谅我红尘颠倒 发现 天涯 如何 实现 工具 慕容雪村 技术 插件 搜索引擎 支持 数据库 文件 方式 时间 服务器 用户 简单 系统 网站 美国 解决 谁的心不曾柔软 进行 部分 问题 AJAX blog Google LAN Linux MySQL PHP plugin WordPress

热门浏览