`
pjq518
  • 浏览: 6845 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
最近访客 更多访客>>
社区版块
存档分类
最新评论

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实现

image

直接贴代码,详细效果见

http://codingwiki.info/%E9%A6%96%E9%A1%B5

http://codingwiki.info/%E5%88%86%E7%B1%BB:.NET

 

001 <?php
002 $wgHooks [ 'ParserFirstCallInit' ][] = 'efCodingWikiTagParserInit' ;
003    
004 function efCodingWikiTagParserInit( & $parser ) {
005          $parser ->setHook( 'hotpages' , 'efHotPageRender' );
006          $parser ->setHook( 'hotcategories' , 'efHotCategoryRender' );
007          $parser ->setHook( 'newpage' , 'efNewPageRender' );
008          return true;
009 }
010  
011 function makePageListItem( $row ) {
012          global $wgUser ;
013          $title = Title::makeTitleSafe( $row ->page_namespace, $row ->page_title );
014          if ( ! is_null ( $title ) ) {
015              $skin = $wgUser ->getSkin();
016              $link = $row ->page_is_redirect
017                      ? '<span class="allpagesredirect">' . $skin ->makeKnownLinkObj( $title ) . '</span>'
018                      : $skin ->makeKnownLinkObj( $title );
019              return ( "<li>{$link}({$row->page_counter}次)</li>\n" );
020          } else {
021              return ( "<!-- Invalid title " . htmlspecialchars( $row ->page_title ) . " in namespace " . htmlspecialchars( $row ->page_namespace ) . " -->\n" );
022          }
023 }
024       
025 function 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  
069 function 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  
092 function 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 }
0
3
分享到:
评论

相关推荐

    meidawiki-react:使用React构建Media Wiki客户端

    meidawikiReact 使用React构建Media Wiki客户端 演示: :

    MediaWiki在Windows安装部署——XAMPP安装-附件资源

    MediaWiki在Windows安装部署——XAMPP安装-附件资源

    mediawiki-1.33.0部署程序.zip

    将meidawiki项目处理好只需要运行sql初始化到mysql中并修改安装目录下LocalSettings.php对应的数据库及站点访问信息就可以直接部署

    mediawiki-1.31.14.tar.gz

    mediawiki-1.31.14.tar.gz

    Java 员工管理系统项目源代码(可做毕设项目参考)

    Java 员工管理系统项目是一个基于 Java 编程语言开发的桌面应用程序,旨在管理员工的信息、津贴、扣除和薪资等功能。该系统通过提供结构和工具集,使公司能够有效地管理其员工数据和薪资流程。 系统特点 员工管理:管理员可以添加、查看和更新员工信息。 津贴管理:管理员可以添加和管理员工的津贴信息。 扣除管理:管理员可以添加和管理员工的扣除信息。 搜索功能:可以通过员工 ID 搜索员工详细信息。 更新薪资:管理员可以更新员工的薪资信息。 支付管理:处理员工的支付和生成支付记录。 模块介绍 员工管理模块:管理员可以添加、查看和更新员工信息,包括员工 ID、名字、姓氏、年龄、职位和薪资等。 津贴管理模块:管理员可以添加和管理员工的津贴信息,如医疗津贴、奖金和其他津贴。 扣除管理模块:管理员可以添加和管理员工的扣除信息,如税收和其他扣除。 搜索功能模块:可以通过员工 ID 搜索员工详细信息。 更新薪资模块:管理员可以更新员工的薪资信息。 支付管理模块:处理员工的支付和生成支付记录 可以作为毕业设计项目参考

    CAD实验报告:制药车间动力控制系统图、烘烤车间电气控制图、JSJ型晶体管式时间继电器原理图、液位控制器电路图

    CAD实验报告:制药车间动力控制系统图、烘烤车间电气控制图、JSJ型晶体管式时间继电器原理图、液位控制器电路图

    使用 Arduino 和 Python 实时数据绘图的温度监控系统源码(可做毕设项目参考)

    项目简介: 本项目将教您如何使用 Arduino 和 Python 实时数据绘图来构建温度监控系统。通过这个项目,您将学习如何从 Arduino 到 Python 进行串行通信,并实时收集和监控温度数据。 项目目标: 实时监控和绘制温度数据。 提供用户友好的操作界面。 提高用户的编程技能,特别是Arduino和Python的应用能力。 项目功能 实时温度监控: 传感器每秒读取一次温度数据,并通过串行监视器发送到Python程序。 数据保存: Python程序将温度数据保存到CSV文件中。 实时数据绘图: 使用Matplotlib库实时绘制温度数据,温度在Y轴,时间在X轴。 项目优势 高效的数据监控: 实时监控和绘制温度数据,提高数据监控的效率。 用户友好: 界面简洁,操作简单,用户可以轻松使用该应用程序。 提高编程技能: 通过实践项目,提高对Arduino和Python的应用能力。 项目技术细节 项目详情: 项目名:使用 Arduino 和 Python 实时数据绘图的温度监控系统 项目平台:Arduino 和 Python 使用的编程语言:C++(Arduino)、Python ID

    软件测试-软件测试方案pdf

    本测试计划提供给深圳移动公司PMS核心小组成员,对PMS EXPRESS 系统进行功能测试。测试计划主要通过对基站项目管理过程的模拟,从项目的立项开始直至基站的验收交付以及知识沉淀,对基站建设全过程中涉及的管理内容进行模拟测 试。测试计划中设计了两个基站项目一明宁花园、椰风海岸。其中明宁花园按 原计划如期完工,而椰风海岸因为设备没能如期到货导致了个整个项目工期的延误。

    博物馆智能化系统的解决方案.pptx

    博物馆智能化系统的解决方案.pptx

    基于STM32的电子罗盘

    基于STM32的电子罗盘试验

    【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真 VR界面设计

    【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真。VR界面设计。 (GUI interface design, four rotor aircraft simulation. The VR interface design. ) 【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真。VR界面设计。

    基于VHDL的倒车雷达项目(免费提供全部源码)

    项目简介: 本项目实现了一个基于VHDL(VHSIC硬件描述语言)的倒车雷达系统。倒车雷达用于检测车辆后方障碍物的距离,以辅助驾驶员安全倒车。系统通过超声波传感器检测距离,并使用LED显示或蜂鸣器提示障碍物的接近程度。 项目模块: 传感器接口模块: 处理超声波传感器的信号。 发送触发信号,接收回波信号。 计算回波时间,进而计算距离。 距离计算模块: 根据传感器回波时间计算距离。 处理和转换距离数据,准备用于显示和警报。 警报显示模块: 基于计算出的距离提供视觉和听觉警报。 使用LED显示不同的距离范围。 使用蜂鸣器发出不同频率的警报声。 控制模块: 控制各模块的协调工作。 管理超声波传感器的触发和数据采集周期。

    2024年动力电池回收行业市场分析报告.pptx

    行业报告

    ssm框架在线课堂微信小程序源码+项目说明(高分毕设)

    毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一款针对在线课堂微信小程序的数据管理系统,旨在便捷用户对小程序中的信息进行有效管理。系统设计注重功能完善和用户体验,力求使用户能轻松找到所需信息。采用JAVA技术开发,并结合现有成熟源代码模板,确保了平台的可操作性和实用性。关键词:在线课堂微信小程序;JAVA。

    国内锂矿加速开发,四川锂矿详细梳理

    国内锂矿加速开发,四川锂矿详细梳理

    一个基于react框架的资源文件

    一个基于react框架的资源文件 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 内容来源于网络分享。仅供学习使用。请勿商用。如有侵权,请联系我。我将立即删除

    MQD企业大学建设思路与年度工作重点.pptx

    MQD企业大学建设思路与年度工作重点.pptx

    Java语言基础入门教程 Java实训教程 13.反射 共38页.pptx

    Java语言基础入门教程 Java实训教程 13.反射 共38页.pptx

    网上购物商城数据库设计报告.docx

    网上购物商城数据库设计报告.docx

    单机成本核算统计表.docx

    单机成本核算统计表.docx

Global site tag (gtag.js) - Google Analytics