Meidawiki 配置攻略
为coder建立了一个“编程百科”http://codingwiki.info,codingwiki采用mediawiki,这里记录详细的配置:
codingwiki编程百科站点是一个为Coder而建的关于编程(Coding)的wiki站点,我们期望“新人在这里可以学习提高,熟手在这里可以跨越瓶颈,迈向高手之路”。 ?codingwiki编程百科 的内容来自国外优秀的Coding博客或者 Coding技术站点。它属于非盈利性的,我们在这里创作、改进、收集和整理 编程(Coding)相关的中文文档,当然,我们热烈欢迎您也参与我们的翻译,您可以点击帮助了解相关信息。 如果想要与他人交流获得问题解答(多数情况作为最后选项,既然您已经来了这里:P),请参见建议的通讯方法。1、首先,配置logo
# logo
$wgLogo = "/logo.png";
2、配置时间
## Timezone Settings
$wgLocaltimezone = "Asia/Shanghai";
$oldtz = getenv("TZ");
putenv("TZ=$wgLocaltimezone");
$wgLocalTZoffset = date("Z") / 3600;
putenv("TZ=$oldtz");
3、配置上传
#开启图片上传
$wgEnableUploads= true;
#上传文件类型
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg','doc','ppt','pdf' );
4、urlrewrite Url重写
#url REWRITE
$wgScriptPath??????? = "";
$wgArticlePath????? = "/$1";
$wgUsePathInfo????? = true;
$wgScriptExtension? = ".php";
服务器采用nginx,添加下面的配置
location / {if (!-e $request_filename) {rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1&$2 last;}}5、添加常用扩展
#SyntaxHighlight
require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");
#ParserFunctions
require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );
6、实现自己的扩展——找出wiki最热条目和最新条目,以及热门分类,通过扩展tag实现

直接贴代码,详细效果见
http://codingwiki.info/%E9%A6%96%E9%A1%B5,
http://codingwiki.info/%E5%88%86%E7%B1%BB:.NET
?
);022????????}023}024?????025function efHotPageRender( $input, $args, $parser, $frame ) {026????????global $wgRequest, $wgOut, $wgContLang, $wgLang;027????????$dbr = wfGetDB( DB_SLAVE );028????????$limit = isset($args["count"])?$args["count"]:10;029????????$res = null;??????? 030????????if(isset($args["category"])){031????????????$res = $dbr->select(032????????????????array('page','categorylinks'),033????????????????'*',034????????????????array('cl_to' => "{$args['category']}"),035????????????????__METHOD__,036????????????????array(037????????????????????'ORDER BY' => 'page_counter DESC',038????????????????????'LIMIT' => "$limit",039????????????????????'OFFSET' => '0',040????????????????),041????????????????array( 'categorylinks' => array('JOIN','page_id=cl_from') ) 042????????????);043????????}else{044????????????$res = $dbr->select(045????????????????'page',046????????????????array(047????????????????????'page_namespace',048????????????????????'page_title',049????????????????????'page_counter',050????????????????????'page_is_redirect'051????????????????),052????????????????array('page_namespace'=>'0'),053????????????????__METHOD__,054????????????????array(055????????????????????'ORDER BY' => 'page_counter DESC',056????????????????????'LIMIT' => "$limit",057????????????????????'OFFSET' => '0',058????????????????)059????????????);060????????}061????????$result = "<ul>";062????????foreach ( $res as $row ) {063????????????????$result .= makePageListItem( $row );064????????}?? 065????????$result .= "</ul>";?????? 066????????return $result;067}068?069function efHotCategoryRender( $input, $args, $parser, $frame ) {070????????global $wgRequest, $wgOut, $wgContLang, $wgLang;071????????$dbr = wfGetDB( DB_SLAVE );072????????$limit = isset($args["count"])?$args["count"]:10;073????????$res = $dbr->select(074????????????'category',075????????????'*',076????????????array(),077????????????__METHOD__,078????????????array(079????????????????'ORDER BY' => 'cat_pages DESC',080????????????????'LIMIT' => "$limit",081????????????????'OFFSET' => '0',082????????????)083????????);084????????$result = "<ul>";085????????foreach ( $res as $row ) {086????????????????$result.= "<li><a href='/分类:{$row->cat_title}'>{$row->cat_title}</a>(<a href='/分类:{$row->cat_title}'>{$row->cat_pages}</a>)</li>\n" ;087????????}?? 088????????$result .= "</ul>";?????? 089????????return $result;090}091?092function efNewPageRender( $input, $args, $parser, $frame ) {093????????global $wgRequest, $wgOut, $wgContLang, $wgLang;094????????$dbr = wfGetDB( DB_SLAVE );095????????$limit = isset($args["count"])?$args["count"]:10;096????????$res = null;097?????????098????????if(isset($args["category"])){099????????????????$res = $dbr->select(100????????????????????array('page','categorylinks'),101????????????????'*',102????????????????array('cl_to' => "{$args['category']}"),103????????????????__METHOD__,104????????????????array(105????????????????????'ORDER BY' => 'page_id DESC',106????????????????????'LIMIT' => "$limit",107????????????????????'OFFSET' => '0',108????????????????),109????????????????array( 'categorylinks' => array('JOIN','page_id=cl_from') ) 110????????????);111????????}else{112????????????$res = $dbr->select(113????????????????'page',114????????????????array(115????????????????????'page_namespace',116????????????????????'page_title',117????????????????????'page_counter',118????????????????????'page_is_redirect'119????????????????),120????????????????array(),121????????????????__METHOD__,122????????????????array(123????????????????????'ORDER BY' => 'page_id DESC',124????????????????????'LIMIT' => "$limit",125????????????????????'OFFSET' => '0',126????????????????)127????????????);128????????}129????????$result = "<ul>";130????????foreach ( $res as $row ) {131????????????????$result .= makePageListItem( $row );132????????}?? 133????????$result .= "</ul>";?????? 134????????return $result;135}