知识的荒漠

不积跬步无以至千里,不积小流无以成江海;千里之行,始于足下!

用户工具

站点工具


服务器:源码:dokuwiki

源码简介

DokuWiki是一个开源wiki引擎程序,运行于PHP环境下。DokuWiki程序小巧而功能强大、灵活,适合中小团队和个人网站知识库的管理。DokuWiki不需要数据库,直接采用文本文件直接存储。

运行环境

Apache 2.4.25, PHP 5.6.30, GD2 and SQLite

源码部署

打开官网:https://download.dokuwiki.org/
选择stable(Recommended),Languages勾选zh-中文,Popular Plugins全部勾上,然后点击Download
把下载的文件解压并命名为wiki,上传到/var/www/html/tool,设置权限755,用户及用户组www-data
浏览器输入:https://www.zjzj.xyz/tool/wiki/install.php,依据提示安装好后删除install.php
避免输入麻烦,创建个软连接

sudo ln -s /var/www/html/tool/wiki /var/www/html

这样就可以直接访问https://www.zjzj.xyz/wiki

插件及优化

插件列表

管理→扩展管理器→手动安装(搜索和安装有时候会提示连不上服务器)→从URL安装,分别输入URL地址后点击安装

插件名称 中文描述 安装地址
IndexMenu Plugin 侧边栏显示文章列表 https://github.com/samuelet/indexmenu/archive/master.zip
Add New Page Plugin 新建页面(安装了IndexMenu可不用此插件) https://github.com/samwilson/dokuwiki-plugin-addnewpage/zipball/master
Move Plugin 文章移动重命名 https://github.com/michitux/dokuwiki-plugin-move/zipball/master
markdowku Plugin markdown支持 https://komkon2.de/markdowku/markdowku.tgz
ImgPaste Plugin 图片复制粘贴 https://github.com/cosmocode/dokuwiki-plugin-imgpaste/zipball/master
Cache and Revisions Eraser Plugin 清除所有缓存和编辑历史 https://github.com/justburn/DokuWiki_CacheRevisionsEraser/archive/master.zip
ToDo Plugin 待办列表,并且可以打勾等操作 https://github.com/leibler/dokuwiki-plugin-todo/archive/stable.zip
SyntaxHighlighter3 Plugin 代码高亮,有点问题… https://github.com/crazy-max/dokuwiki-plugin-syntaxhighlighter3/raw/master/dist/syntaxhighlighter3.zip
CKGEdit Plugin WYSIWYG editor https://github.com/turnermm/ckgedit/archive/master.zip
catlist Plugin 用Catlist插件配置dokuwiki首页 https://github.com/xif-fr/dokuwiki-plugin-catlist/zipball/master
SMTP Plugin 邮件发送 https://github.com/splitbrain/dokuwiki-plugin-smtp/zipball/master

文件以中文保存

sudo nano /var/www/html/tool/wiki/conf/local.php
//末尾增加
$conf['fnencode'] = 'utf-8';
sudo nano /var/www/html/tool/wiki/inc/pageutils.php
//LAMP环境下修改utf8_encodeFN函数
function utf8_encodeFN($file,$safe=true){
global $conf;
if($conf['fnencode'] == 'utf-8') return $file;
if($safe && preg_match('#^[a-zA-Z0-9/_-.%]+$#',$file)){
return $file;
}
if($conf['fnencode'] == 'safe'){
return SafeFN::encode($file);
}
   // $file = urlencode($file);                      //注释掉
   //   $file = str_replace('%2F','/',$file);        //注释掉
return $file;
}
//LAMP环境下修改utf8_decodeFN函数
function utf8_decodeFN($file){
global $conf;
if($conf['fnencode'] == 'utf-8') return $file;
if($conf['fnencode'] == 'safe'){
return SafeFN::decode($file);
}
   // return urldecode($file);          //注释掉
   return $file;                        //换成这句
}

ps:所有页面文件外源编辑后,都要以utf-8格式保存

基本使用

在/var/www/html/tool/wiki/data/pages目录里新建文件夹工程造价,并设置权限及用户
接着,返回welcome界面,点击sidebar

然后点击创建该页面

输入内容为:

{{NEWPAGE}}
{{indexmenu>..#1|js#bj-tango.png nsort msort noscroll nomenu}}
//{{indexmenu>..#1|js#bj-tango.png nsort msort noscroll}}

#1表示展开到1级目录
js#bj-tango.png:使用js渲染菜单树,并且使用bj-gango.png图标样式
nsort:排序名称空间
msort:菜单按照indexMenu的元数据排序,在文章起始添加{{indexmenu_n>1}}
noscroll:顾名思义,不显示滚动条
nomenu:不显示右键菜单,这个参数建议还是不要加
点击保存,就能看到多了侧边栏列表和增加页面(如命名空间不显示新建的工程造价文件夹,重装插件下)

修改代码注释字体

默认代码注释字体为italic,很不好看,修改为Georgia
打开/lib/styles/geshi.less,修改相关如下

.co0 {
    color: #666666;
    font-style: Georgia;
}
.co1, .coMULTI, .sc-1 {
    color: #808080;
    font-style: Georgia;
}

其它优化

树级索引去掉红色三角形

进入dokuwiki/lib/plugins/indexmenu/style.css找到下面的.dtree .indexmenu_tocbullet这个样式,把 background 注释掉即可

//background: transparent url(images/toc_bullet.gif) no-repeat scroll;

隐藏sidebar树节点

在节点树中默认会显示slibar,如果想隐藏,进入管理配置页面,在图中位置填写以下内容:/(sidebar|.\*:sub.\*|.\*:api$)/

显示页面设置文件首行标题设为文件的显示标题(仅限导航),建议这个不要改

调整界面显示宽度

//进入dokuwiki/lib/tpl/dokuwiki/目录,打开style.ini
_site_width_ = "105em"; 默认是 75em

或打开:管理→模板样式设置,修改全站的宽度

修改行距

最新版的模板很简洁,但美中不足的是行间距过小.用英文的人一般不会觉得,但中文就显得太挤了
在conf下建立userstyle.css,内容如下

.dokuwiki div.page
{
line-height: 26px;
}

查看人员贡献

运行此命令以获取每个用户在Wiki中进行的编辑数量的列表

cd /var/www/html
find data/meta/ -name '*.changes' -exec cat {} \; | awk -F"\t" '{print $5}' |sort|uniq -c|sort -n
//输出到gx.txt,在添加定时运行即可
find data/meta/ -name '*.changes' -exec cat {} \; | awk -F"\t" '{print $5}' |sort|uniq -c|sort -n | sudo tee gx.txt

修改代码块字体

修改/lib/tpl/dokuwiki/css/basic.less中
272行background-color: @ini_background_site;background-color: #cfc;
273行color: @ini_text;color:#cd0a0a;
@ini_text表示使用与正文一样的颜色

重写url配置

先在/wiki/conf/dokuwiki.php中设置$conf['userewrite'] = 1;
或在配置设置->高级设置->userewrite中选择.htaccess
然后winscp远程登录服务器,复制.htaccess.dist.htaccess
开启重写的代码段(把前面的#去掉)

RewriteEngine on
RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
RewriteRule ^index.php$               doku.php

如不在根目录,根据实际情况修改RewriteBase /指向你的DokuWiki目录的路径
例如安装是这样的:http://www.whatever.com/projects/documents/doku.php那么,这行应该改成RewriteBase /projects/documents

顶部导航条

//新建lib/tpl/dokuwiki/header.html,内容如下
<div class="topbar">
<?php tpl_include_page('topbar') /* includes the wiki page "topbar" */ ?>
</div>
//新建conf/userall.css,内容如下
@media screen {
/* top bar */
.dokuwiki .topbar {
position: absolute;
top: 0;
left: 0;
width: 100%;
}
.dokuwiki .topbar ul {
text-align: center;
max-width: 600px; /* change accordingly */
margin: 0 auto;
padding: 0;
list-style: none;
background-color: __background_alt__;
border: solid __border__;
border-width: 0 1px 1px;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
box-shadow: 0 1px 3px #999;
overflow: hidden;
}
.dokuwiki .topbar ul li {
margin: 0;
padding: 0 2px;
display: inline-block;
font-size: 85%;
}
.dokuwiki .topbar ul li a {
color: __text__;
display: inline-block;
min-height: 16px; /* make sure icons are not cut off (most icons are 16x16) */
}
/* for IE7 */
*+html .dokuwiki .topbar ul li,
*+html .dokuwiki .topbar ul li a {
display: inline;
}
/* changes specific for the default "dokuwiki" template,
   other templates need other changes! */
#dokuwiki__header {
padding-top: 3.5em;
}
#dokuwiki__usertools {
top: 2em;
}
/* IE8 needs this in the default template */
.dokuwiki .topbar ul li img {
max-width: none;
}
} /* /@media */
/* for screens less than 480px wide */
@media only screen and (max-width: 480px) {
/* move topbar back to the bottom */
.dokuwiki .topbar {
position: static;
}
/* un-do some specific template changes */
#dokuwiki__header {
padding-top: .5em;
}
} /* /@media */
@media print {
/* don't print the topbar */
.dokuwiki .topbar {
display: none;
}
} /* /@media */
//新建https://www.zjzj.xyz/topbar页面,内容如下
  * [[:start|Home]]
  * [[名词解释:名词解释]]
  * [[政策法规:政策法规]]
  * [[造价咨询:造价咨询]]
  * [[软件技巧:软件技巧]]
  * [[服务器:服务器]]

增加换行功能

修改/inc/html.php的1838行左右

<?php echo $lang['mediaselect'] ?></a><?php }?></div>
//增加内容
<input value="wiki" type="button" onclick="chg()"/>
<input value="mkwiki" type="button" onclick="chg1()"/>
<input value="txt" type="button" onclick="back_chg()"/>
//增加内容
</div>
//增加内容
<Script Language="JavaScript">
function chg()
{
 str=document.getElementById("wiki__text").value;
 //str1=str.replace(/ /g,"");
 str1=str.replace(/\n[\n]+/g,"\n"); //先去空行
 str2=str1.replace(/\n/g,"\\\\ \n");//末尾加\\ ;末尾有个空格哦~
 str3=str2.replace(/=\\\\ /g,"=");//去掉自带编辑器标题后面的\\ ;末尾有个空格哦~
 document.getElementById("wiki__text").value=str3;
}
function chg1()
{
 str=document.getElementById("wiki__text").value;
//str="### 标题1\\ \n正文内容1\\ \n正文内容2\\ \n ### 标题2\\ \n正文内容3\\ \n"
 var strs=new Array();
 strs=str.split("\n");
 for (i=0; i<strs.length; i++ ){
mystr=strs[i]
//    if (mystr.charAt(0) == "#" ){
if (mystr.charAt(0) == "#" && mystr.charAt(mystr.length-3)=="\\" ){
strs[i]=mystr.slice(0,mystr.length-3)
  //console.log(strs[i])
}
 }
str1=strs.join("\n")
//console.log(str1);
 document.getElementById("wiki__text").value=str1;
}
function back_chg()
{
 str=document.getElementById("wiki__text").value;
 str1=str.replace(/\\\\ \n/g,"\n");
 document.getElementById("wiki__text").value=str1;
}
</Script>
//增加内容
<?php
html_form('edit', $form);
print '</div>'.NL;
}

chg函数:先去所有空行,然后在所有行末尾添加\\ ,在去掉自带编辑器标题后的换行符,如(===标题1===\\ )
chg1函数:去掉markdown标题末尾的换行符,如(### 标题1\\ )
back_chg函数:撤销

错误解决

如提示:it seems your data directory is not properly secured
参考:lamp 修改apache2.conf
indexmenu提示:Parameter must be an array or an...
打开wiki/lib/plugins/indexmenu/action.php修改224行
if(count($toc) > 1)修改为if(count((array)$toc) > 1)
dokuwiki系统时间错误:直接在inc/init.php修改date_default_timezone_set('PRC');或者参考ubuntu安装修改系统时区

服务器/源码/dokuwiki.txt · 最后更改: 2020/09/28 14:33 由 caiweizhi