Linux下面安装MediaWiki环境的方法,可以参照我上一篇文章linux使用xampp安装MediaWiki环境

重置用户密码

使用维护脚本

可以使用maintenance/changePassword.php维护脚本来重置一名用户的密码。必须在命令行下运行该脚本,需要登录到安装wiki的服务器,然后进入命令行提示符。进入安装目录,然后进入maintenance子目录。运行下列命令:

php changePassword.php --user=someuser --password=somepass

这里可见的“somepass”就是您将要设置的密码,而“someuser”就是您将修改其密码的用户名,该用户名应出现在数据库的“user”表中

直接修改数据库

同样可以使用直接修改数据库的老办法。假设变量$wgPasswordSalt已被设为true值(默认),您可以在MySQL中运行下列SQL查询:

UPDATE user SET user_password = MD5(CONCAT(user_id, '-',  MD5('你的密码'))) WHERE user_name = '你的用户名';

修改维基名称

在wiki代码根目录,找到LocalSettings.php,修改相应代码为:

$wgSitename = "你的百科名称";

修改logo

现将文件上传到对应目录,即/opt/lampp/htdocs/wiki/resources/assets/。图片大小改动可以使用这个网站

在wiki代码根目录,找到LocalSettings.php,修改相应代码为:

## The URL path to the logo.  Make sure you change this from the default,
## or else you'll overwrite your logo when you upgrade!
$wgLogo = "$wgResourceBasePath/resources/assets/wiki.gif";

即将原先的wiki.png改为wiki.gif

页面底部显示最后修订人名称

在wiki代码根目录,找到LocalSettings.php,增加代码

$wgMaxCredits = 2;

这样一来就可以显示最后修改的2条记录,比如说

本页面被小芒果最后修改于2019年10月11日 (星期五) 08:10。 基于芒果百科用户小番茄的工作。

所在机器默认跳转到wiki

安装xampp后,index默认跳转到 本机xampp主页,即http://IP地址/xampp/,需要修改

修改index.php,改为

<?php
if (!empty($_SERVER['HTTPS']) &amp;&amp; ('on' == $_SERVER['HTTPS'])) {
$uri = 'https://';
} else {
$uri = 'http://';
}
$uri .= $_SERVER['HTTP_HOST'];
header('Location: '.$uri.'/wiki/');
exit;
?>

关闭游客注册/修改/查看权限

在wiki代码根目录,找到LocalSettings.php,,在最后面附加如下代码:

$wgGroupPermissions['*']['createaccount'] = true;
$wgGroupPermissions['*']['read'] = true;
$wgGroupPermissions['*']['edit'] = false;

即打开游客 注册 / 浏览 权限,关闭 修改 权限

文档归类

为了防止出现信息孤岛,所有百科页面都该有分类,方便层层跳转。

为了将当前页面自动归类,增加如下代码即可将当前页面自动归类,比如我们有个归类,专门用来教导用户更好的使用wiki,即Wiki使用教程

[[category:Wiki使用教程]]

定制侧边栏

进入URL: /index.php/MediaWiki:Sidebar

我们将上面使用的那个分类加入侧边栏,增加一行** 分类:Wiki定制化|更好地使用wiki,其中|后的文案,即你要显示在侧边栏的文本。

* navigation
** mainpage|mainpage-description
** recentchanges-url|recentchanges
** helppage|help
** 分类:Wiki定制化|更好地使用wiki * SEARCH
* TOOLBOX
* LANGUAGES

修改后的侧边栏

Markdown文本转MediaWiki格式

有些人不熟悉mediawiki的语法,更习惯使用markdown进行文档编写;或者有大量的markdown格式的文档需要转到wiki中来,怎么办呢?

我们可以这么做:

少量文字直接使用在线版

https://pandoc.org/try/?text=&from=markdown&to=mediawiki

大量文字使用下载版

官网下载相应系统版本,比如我们使用windows版本

下载后放到任意盘(我放在D盘),将所在目录加入环境变量,输入指令进行转化

D:\>pandoc.exe -f markdown -t mediawiki test.md > test.txt

文件上传

官方上传文档教程

在wiki代码根目录,找到LocalSettings.php,添加允许的格式即可,比如允许bmp

$wgFileExtensions[] = 'bmp';

有些文件比较特殊,就算加到运行上传列表还不够,还要从黑名单里删除,比如exe

$wgFileExtensions[] = 'exe';
$wgFileBlacklist = array_diff( $wgFileBlacklist, array ('exe') );

自定义皮肤

下载皮肤

下载链接,选择1.33版本

放置到/opt/lampp/htdocs/维基目录/skins/下面,解压

$ tar xvf apex-REL1_33-9f99205.tar.gz

加载皮肤

在wiki代码根目录,找到LocalSettings.php,在最后加入代码:

wfLoadSkin( 'apex' );

自定义CSS

进入MediaWiki:Vector.css特殊页面,然后编辑你要覆盖重写的CSS内容

MediaWiki:Vector.css 页面

提供个不错的主题CSS: DarkVector主题CSS

给默认的vector加上本博客的样式

#p-tb {
margin-top: 10px;
}
.mw-body p {
font-size: 16px;
color: #444;
}
pre, .mw-code {
display: block;
overflow-x: auto;
padding: 20px !important;
background: #edf0f3 !important;
border: none !important;
font-family: 'Consolas','Courier New',Courier,monospace !important;
font-size: 14px !important;
} div#mw-panel #p-logo + div.portal div.body {
margin: 0;
}
div#mw-panel div.portal {
background-image: none;
}
div#mw-panel div.portal div.body {
margin: 0;
} div#mw-panel div.portal div.body ul {
border-top: 10px solid #CAD2DE;
background: #2B497B;
} div#mw-panel div.portal div.body ul li {
border-bottom: 1px dotted #fff;
padding: 0.2em 10px;
line-height: 15px;
} div#mw-panel div.portal div.body ul li:hover {
background: #A3181E;
} div#mw-panel div.portal div.body ul li a {
font-size: 10px;
display: block;
color: #FFF;
font-weight: normal;
text-decoration: none;
text-transform: uppercase;
} div#mw-panel div.portal div.body ul li a:visited {
color: #EEE;
} div#mw-panel div.portal h3 {
font-size: 15px;
background: #A3181E;
color: white;
display: block;
padding: 5px 10px;
} .mw-body h1 {
font-size: 2.5em;
font-family: "微软雅黑";
font-weight: normal;
} .mw-body h2 {
font-size: 2em;
margin: 1em 0 0.25em;
padding: 10px 0px;
border-bottom: 5px solid #F1F4F9;
font-family: "微软雅黑";
font-weight: bold;
} .mw-body h3:before {
content: "\25BA ";
} .mw-body a.external {
text-decoration: none;
color: orange !important;
border-bottom: 1px dashed;
padding-bottom: 2px;
} .mw-body a.external:before {
content: "\27A5";
} .mw-body code {
font-family: "Courier New",sans-serif !important;
font-size: 12px !important;
background-color: #f5f5f5 !important;
padding: 0 5px !important;
border-radius: 3px !important;
border:none;
line-height: 1.8;
margin: 1px 5px;
vertical-align: middle;
display: inline-block;
} .mw-body blockquote {
background-color: #f7f7f7;
word-break: break-word;
font-weight: 400;
line-height: 30px;
padding: 1.5em;
background: #E1E8FB;
border-left: 5px solid #D2D8FB;
margin: 10px 10px 10px 0px;
} #catlinks {
background-color: #f1f4f9;
color: #f1f4f9;
padding: 10px 0px;
border: none;
} #catlinks li {
border: none;
} #catlinks li a:link {
position: relative;
display: inline-block;
height: 30px;
padding: 0 12px;
line-height: 30px;
vertical-align: top;
text-decoration: none;
background: #fff;
color: #aaa;
text-transform: uppercase;
letter-spacing: 1px;
font-size: 11px;
} #catlinks li a:hover{
background: #237dac;
color: white;
} #mw-normal-catlinks > a {
position: relative;
display: inline-block;
height: 30px;
padding: 0px 0px 0px 20px;
line-height: 30px;
vertical-align: top;
text-decoration: none;
text-transform: uppercase;
letter-spacing: 1px;
font-size: 11px;
} /* 编辑按钮 */
.editButtons input {
color: #fff;
background-color: #1890ff;
border-color: #1890ff;
text-shadow: 0 -1px 0 rgba(0,0,0,0.12);
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.045);
box-shadow: 0 2px 0 rgba(0,0,0,0.045);
line-height: 1.5;
position: relative;
display: inline-block;
font-weight: 400;
white-space: nowrap;
text-align: center;
background-image: none;
border: 1px solid transparent;
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.015);
box-shadow: 0 2px 0 rgba(0,0,0,0.015);
cursor: pointer;
-webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
transition: all .3s cubic-bezier(.645, .045, .355, 1);
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-ms-touch-action: manipulation;
touch-action: manipulation;
height: 32px;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border-color: #d9d9d9;
} .editButtons input {
color: #fff;
background-color: #1890ff;
border-color: #1890ff;
text-shadow: 0 -1px 0 rgba(0,0,0,0.12);
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.045);
box-shadow: 0 2px 0 rgba(0,0,0,0.045);
line-height: 1.5;
position: relative;
display: inline-block;
font-weight: 400;
white-space: nowrap;
text-align: center;
background-image: none;
border: 1px solid transparent;
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.015);
box-shadow: 0 2px 0 rgba(0,0,0,0.015);
cursor: pointer;
-webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
transition: all .3s cubic-bezier(.645, .045, .355, 1);
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-ms-touch-action: manipulation;
touch-action: manipulation;
height: 32px;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border-color: #d9d9d9;
} .editButtons input:hover {
background-color: #40a9ff;
} .editButtons input {
color: #fff;
background-color: #1890ff;
border-color: #1890ff;
text-shadow: 0 -1px 0 rgba(0,0,0,0.12);
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.045);
box-shadow: 0 2px 0 rgba(0,0,0,0.045);
line-height: 1.5;
position: relative;
display: inline-block;
font-weight: 400;
white-space: nowrap;
text-align: center;
background-image: none;
border: 1px solid transparent;
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.015);
box-shadow: 0 2px 0 rgba(0,0,0,0.015);
cursor: pointer;
-webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
transition: all .3s cubic-bezier(.645, .045, .355, 1);
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-ms-touch-action: manipulation;
touch-action: manipulation;
height: 32px;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border-color: #d9d9d9;
} .editButtons input:hover {
background-color: #40a9ff;
} #wpSave {
background-color: #009100;
} #wpSave:hover {
background-color: #00A600;
} .mango-alert {
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
color: rgba(0,0,0,0.65);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5;
list-style: none;
font-feature-settings: 'tnum';
position: relative;
padding: 8px 15px 8px 37px;
word-wrap: break-word;
border-radius: 4px;
margin: 10px 0px 10px 0px;
} .mango-alert-info {
background-color: #e6f7ff;
border: 1px solid #91d5ff;
} .mango-alert-warn {
background-color: #fffbe6;
border: 1px solid #ffe58f
} .mango-alert-error {
background-color: #fff1f0;
border: 1px solid #ffa39e;
} /**
* 左侧导航栏拓宽
*/ div#mw-panel {
width: 13em;
} .mw-body {
margin-left: 14em;
} #left-navigation {
margin-left: 14em;
} #p-logo a {
width: 13em;
} div#footer {
margin-left: 13em;
} /**
* 表格样式
*/ table.wikitable {
border: none !important;
} table.wikitable td {
border: none !important;
padding: 0.2em 2em !important;
} /*设置奇数行颜色*/
table.wikitable tr:nth-child(odd) {
background: #EEE;
} /*设置偶数行颜色*/
table.wikitable tr:nth-child(even) {
background: #FFF;
} table.wikitable th {
background-color: #2894FF !important;
color: white;
text-align: center;
font-weight: bold;
letter-spacing: 1em;
border: none !important;
padding: 0.2em 2em !important;
} table.wikitable tr:nth-child(1) {
background-color: #2894FF;
color: white;
text-align: center;
font-weight: bold;
letter-spacing: 1em;
} table.wikitable tbody:last-child {
border-bottom: 1px solid;
}

模板功能

进入模板:提示路由,即可建立名字为提示的模板。

<div style="background-color: #e6f7ff;border: 1px solid #91d5ff; -webkit-box-sizing: border-box; box-sizing: border-box;margin: 0; color: rgba(0,0,0,0.65);font-size: 14px;font-variant: tabular-nums;line-height: 1.5;list-style: none; font-feature-settings: 'tnum';position: relative;padding: 8px 15px 8px 37px;word-wrap: break-word;border-radius: 4px;margin: 10px 0px 10px 0px;">
<span style="font-size: 1.5em;"></span> {{{文本}}}
</div>

上面的代码中,{{{文本}}}即你可以填写变量的地方,变量名就叫做文本。保存后,在其他页面这样使用

{{提示 | 文本=这样就可以使用模板啦!]]}}

样式如下所示:

当然了,css写在单独文件是比较好的习惯,直接给div加上相应的类就好了!

嵌套模板

上面的模板,还可以设置一个母模板,以方便采用多种样式的提示框

进入模板:提示框路由,即可建立名字为提示框的母模板。

<div class="mango-alert mango-alert-{{{类型}}}">
<span style="font-size: 1.5em;">{{{图标}}}</span> {{{文本}}}
</div>

然后,重新编辑上面的模板提示

{{提示框
|类型=info
|图标=
|文本={{{文本}}}
}}

在自定义CSS中加入以下代码

.mango-alert {
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
color: rgba(0,0,0,0.65);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5;
list-style: none;
font-feature-settings: 'tnum';
position: relative;
padding: 8px 15px 8px 37px;
word-wrap: break-word;
border-radius: 4px;
margin: 10px 0px 10px 0px;
} .mango-alert-info {
background-color: #e6f7ff;
border: 1px solid #91d5ff;
} .mango-alert-warn {
background-color: #fffbe6;
border: 1px solid #ffe58f
} .mango-alert-error {
background-color: #fff1f0;
border: 1px solid #ffa39e;
}

如此一来,便可以实现嵌套模板啦!

启用更强的编辑功能

如图,点击右上角设置,按照下面的设置选中相关选项即可

自动给标题加编号

如图,点击右上角设置 > 显示,按照下面的设置选中相关选项即可

升级时候全wiki只读

在wiki代码根目录,找到LocalSettings.php,增加代码

$wgReadOnly = '系统维护中,请2019年10月25日上午10点后操作....';

当用户修改文件时,将会显示下面的提示

MediaWiki定制化改动的更多相关文章

  1. pre-commit 钩子,代码质量检查:在 vue-cli 3.x 版本中,已经使用尤大改写的yorkie,yorkie实际是fork husky,然后做了一些定制化的改动,使得钩子能从package.json的 "gitHooks"属性中读取

    pre-commit 钩子,代码质量检查:在 vue-cli 3.x 版本中,已经使用尤大改写的yorkie,yorkie实际是fork husky,然后做了一些定制化的改动,使得钩子能从packag ...

  2. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  3. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  4. Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段

    在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...

  5. Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...

  6. kettle系列-4.kettle定制化开发工具类

    要说的话这个工具类还是比较简单的,每个方法体都比较小,但用起来还是可以的,把开发中一些常用的步骤封装了下,不用去kettle源码中找相关操作的具体实现了. 算了废话不多了,直接上重点,代码如下: im ...

  7. cobbler重装、web、定制化

    cobbler重装 根据此文已自动化安装centos 7的版本http://www.cnblogs.com/shhnwangjian/p/5858900.html 在cobbler-test主机上重装 ...

  8. jquery-ui-datepicker定制化,汉化,因手机布局美观化源码修改

    感谢浏览,欢迎交流=.= 公司微信网页需要使用日历控件,想到jquery-mobile,但是css影响页面布局,放弃后使用jquery-ui-datepicker. 话不多说,进入正题: 1.jque ...

  9. 定制化Azure站点Java运行环境(5)

    Java 8下PermGen及参数设置 在上一章节中,我们定制化使用了Java 8环境,使用我们的测试页面打印出了JVM基本参数,但如果我们自己观察,会发现在MXBeans中,没有出现PermGen的 ...

随机推荐

  1. Scanner的基本语法及用法

    一.Scanner对象 基本语法中并没有实现程序和人的交互,但是Java给我们提供了一个这样的工具类,我们可以获取用户的输入.java.util.Scanner是Java5的新特征,我们可以通过Sca ...

  2. Qt 入门 ---- 如何在程序窗口显示图片?

    步骤: 1. 选择资源(准备图片) 2. 加载资源(导入图片) 3. 使用资源(显示图片) 具体操作流程: ① 从网上寻找合适的图片素材,下载到本地,在项目根目录下创建一个images文件夹存储程序中 ...

  3. Hadoop 3.1.1 - Yarn 服务 - 总览

    YARN 服务 总览 Yarn 服务框架为在 Yarn 原生环境里长时间运行的服务,提供了一流的支持和接口.简言之,它扮演了容器编排系统的角色,统一管理 Yarn 上运行的容器化服务.它同时支持 Do ...

  4. 开机时自动启动的AutoHotkey脚本 2019年07月08日19时06分

    ;;; 开机时自动启动的AutoHotkey脚本;; 此脚本修改时间 2019年06月18日20时48分;; 计时器创建代码段 ------------------------------------ ...

  5. javascript的入门学习

    目录 JavaScript的学习 什么是javascript,如下简称JS 正式使用js js的两种引入方式 head标签与body标签的区别 js定义变量 可以分为如下四种类型: 有3种特殊的数据类 ...

  6. OpenGL学习笔记(三)着色器

    目录 Shader是什么 GLSL 数据类型 输入与输出 顶点着色器向片段着色器发送数据 Uniform 制作三色渐变三角形 对着色器程序进行封装 参考资料:OpenGL中文翻译 Shader是什么 ...

  7. CentOS 8.0 安装docker 报错:Problem: package docker-ce-3:19.03.4-3.el7.x86_64 requires containerd.io >= 1

    1.错误内容 package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of th ...

  8. Java面向对象05——创建对象内存分析

  9. 电脑常用快捷键及常用的DOS命令

    电脑常用快捷键 Ctrl+C:复制 Ctrl+V:粘贴 Ctrl+A:全选 Ctrl+X:剪切 Ctrl+Z:撤销 Ctrl+S:保存 Alt+F4:关闭窗口 Shift+delete:永久删除 Wi ...

  10. 使用Cobertura做代码覆盖率测试

    经验总结:首先要把cobertura.jar包含ant的classpath路径中,其次要求它包含在测试用例的classpath中: 使用cobertura做代码覆盖率测试中出现的问题:覆盖率始终为0, ...