为coder建立了一个“编程百科 ”http://codingwiki.info,codingwiki采用mediawiki,这里记录详细的配置:
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
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
|
}
|
相关推荐
meidawikiReact 使用React构建Media Wiki客户端 演示: :
MediaWiki在Windows安装部署——XAMPP安装-附件资源
将meidawiki项目处理好只需要运行sql初始化到mysql中并修改安装目录下LocalSettings.php对应的数据库及站点访问信息就可以直接部署
mediawiki-1.31.14.tar.gz
Java 员工管理系统项目是一个基于 Java 编程语言开发的桌面应用程序,旨在管理员工的信息、津贴、扣除和薪资等功能。该系统通过提供结构和工具集,使公司能够有效地管理其员工数据和薪资流程。 系统特点 员工管理:管理员可以添加、查看和更新员工信息。 津贴管理:管理员可以添加和管理员工的津贴信息。 扣除管理:管理员可以添加和管理员工的扣除信息。 搜索功能:可以通过员工 ID 搜索员工详细信息。 更新薪资:管理员可以更新员工的薪资信息。 支付管理:处理员工的支付和生成支付记录。 模块介绍 员工管理模块:管理员可以添加、查看和更新员工信息,包括员工 ID、名字、姓氏、年龄、职位和薪资等。 津贴管理模块:管理员可以添加和管理员工的津贴信息,如医疗津贴、奖金和其他津贴。 扣除管理模块:管理员可以添加和管理员工的扣除信息,如税收和其他扣除。 搜索功能模块:可以通过员工 ID 搜索员工详细信息。 更新薪资模块:管理员可以更新员工的薪资信息。 支付管理模块:处理员工的支付和生成支付记录 可以作为毕业设计项目参考
CAD实验报告:制药车间动力控制系统图、烘烤车间电气控制图、JSJ型晶体管式时间继电器原理图、液位控制器电路图
项目简介: 本项目将教您如何使用 Arduino 和 Python 实时数据绘图来构建温度监控系统。通过这个项目,您将学习如何从 Arduino 到 Python 进行串行通信,并实时收集和监控温度数据。 项目目标: 实时监控和绘制温度数据。 提供用户友好的操作界面。 提高用户的编程技能,特别是Arduino和Python的应用能力。 项目功能 实时温度监控: 传感器每秒读取一次温度数据,并通过串行监视器发送到Python程序。 数据保存: Python程序将温度数据保存到CSV文件中。 实时数据绘图: 使用Matplotlib库实时绘制温度数据,温度在Y轴,时间在X轴。 项目优势 高效的数据监控: 实时监控和绘制温度数据,提高数据监控的效率。 用户友好: 界面简洁,操作简单,用户可以轻松使用该应用程序。 提高编程技能: 通过实践项目,提高对Arduino和Python的应用能力。 项目技术细节 项目详情: 项目名:使用 Arduino 和 Python 实时数据绘图的温度监控系统 项目平台:Arduino 和 Python 使用的编程语言:C++(Arduino)、Python ID
本测试计划提供给深圳移动公司PMS核心小组成员,对PMS EXPRESS 系统进行功能测试。测试计划主要通过对基站项目管理过程的模拟,从项目的立项开始直至基站的验收交付以及知识沉淀,对基站建设全过程中涉及的管理内容进行模拟测 试。测试计划中设计了两个基站项目一明宁花园、椰风海岸。其中明宁花园按 原计划如期完工,而椰风海岸因为设备没能如期到货导致了个整个项目工期的延误。
博物馆智能化系统的解决方案.pptx
基于STM32的电子罗盘试验
【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真。VR界面设计。 (GUI interface design, four rotor aircraft simulation. The VR interface design. ) 【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真。VR界面设计。
项目简介: 本项目实现了一个基于VHDL(VHSIC硬件描述语言)的倒车雷达系统。倒车雷达用于检测车辆后方障碍物的距离,以辅助驾驶员安全倒车。系统通过超声波传感器检测距离,并使用LED显示或蜂鸣器提示障碍物的接近程度。 项目模块: 传感器接口模块: 处理超声波传感器的信号。 发送触发信号,接收回波信号。 计算回波时间,进而计算距离。 距离计算模块: 根据传感器回波时间计算距离。 处理和转换距离数据,准备用于显示和警报。 警报显示模块: 基于计算出的距离提供视觉和听觉警报。 使用LED显示不同的距离范围。 使用蜂鸣器发出不同频率的警报声。 控制模块: 控制各模块的协调工作。 管理超声波传感器的触发和数据采集周期。
行业报告
毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一款针对在线课堂微信小程序的数据管理系统,旨在便捷用户对小程序中的信息进行有效管理。系统设计注重功能完善和用户体验,力求使用户能轻松找到所需信息。采用JAVA技术开发,并结合现有成熟源代码模板,确保了平台的可操作性和实用性。关键词:在线课堂微信小程序;JAVA。
国内锂矿加速开发,四川锂矿详细梳理
一个基于react框架的资源文件 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 内容来源于网络分享。仅供学习使用。请勿商用。如有侵权,请联系我。我将立即删除
MQD企业大学建设思路与年度工作重点.pptx
Java语言基础入门教程 Java实训教程 13.反射 共38页.pptx
网上购物商城数据库设计报告.docx
单机成本核算统计表.docx