接触建站以来,总想了解多一些建站程序,所以,很早就知道了mediawiki和hdwiki,也一直想弄个百科站,不过每次都是安装好就停手。
最近因为想建个团队wiki,于是多弄了几天wiki程序。算是了解多了一些吧,发现wiki不仅仅是百科而已,拿来作为文档库也很合适,比如discuz技术文库就是用mediawiki搭建的。还有作为开源电子书也是不错的。而且不仅仅是团队wiki,个人知识管理使用wiki程序也是一种很好的选择,于是就打算在建一个个人wiki。
mediawiki还是hdwiki?
这个挺纠结的,很多大站用的mediawiki,于是也想用mediawiki,不过安装之后实在是不习惯,没有后台,编辑词条时也没发现上传图片的地方。所以最终还是选择了hdwiki。
hdwiki和ucenter整合
不得不说,hdwiki这个整合搞的真心蛋疼。我第一次装hdwiki的时候,大概是几个月前,提示uc_client目录不存在,于是那次试验就以失败告终了,直到这一次,我才知道原来是hdwiki 5.1打包时把uc_client给遗漏了。这次下载的今年5月更新的软件包到是没这个问题了,但是新问题更加恼火。眼看着整合成功了吧,uc通信也正常,从discuz过去的用户也登录了,不过要你激活,可是,无论你怎么弄,就是激活不了。
用phpmyadmin看一下,才发现只有用户名写入了数据库,用户的密码和邮箱都是空的。
求助百度和google大神,不过资料比之discuz实在太少,找到的都是千篇一律的整合方式,而且他们貌似都成功了。难道他们真的成功了吗?
无奈之下逼自己去看源码,还没写过php程序的人看uc接口代码真的是头疼,找到了同步登录的函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
function synlogin($get, $post) { !API_SYNLOGIN && exit(API_RETURN_FORBIDDEN); $cookietime = 2592000; $timestamp=$get['time']; $discuz_auth_key = md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT']); header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); $username=$get['username']; $password=$get['password']; $email=$member['email']; $uid=$get['uid']; $user = $this->db->fetch_first("select * from ".DB_TABLEPRE."user where username='$username'"); if(!is_array($user)){ if($usernum=$this->db->result_first("select count(*) from ".DB_TABLEPRE."user where uid= $uid")){ $maxuid=$this->db->result_first("select max(uid) from ".DB_TABLEPRE."user"); $maxuid+=1; $this->db->query("update ".DB_TABLEPRE."user set uid=$maxuid where uid=$uid"); update_field($uid,$maxuid); } //$password=$email=""; $ip = $_SERVER['REMOTE_ADDR']; $groupid = 2; $this->db->query("replace into ".DB_TABLEPRE."user (uid,username,`password`,email,regip,regtime,groupid) values ($uid,'$username','$password','$email','$ip',$timestamp,$groupid)"); $user = $this->db->fetch_first("select * from ".DB_TABLEPRE."user u where u.uid=$uid and u.username='$username'"); } |
注意看被我注释掉的那一行:$password=$email=""; 让密码和邮箱都为空。难道是这里出了问题?
注释掉之后,在去实验,先是兴奋了一下,因为discuz的用户到hdwiki直接登录了,不用去激活,用phpmyadmin看,密码也写入hdwiki的user表里了。不过这兴奋没有持续多久,因为又发现虽然同步登录了,但写入hdwiki user表里的用户密码是ucenter中的用户密码,而ucenter和discuz中保存的用户密码的加密方式貌似是不一样的,这就意味着用户无法在hdwiki端通过discuz的用户名密码登录。可能还是uc接口文件出了问题。
还有其他一些问题:
- 不能同步退出。从discuz退出,hdwiki也会退出,但是从hdwiki退出,discuz不会退出。
- discuz新注册用户必须先退出,在登录一次才可以自动登录hdwiki,这对用户体验很不好。
算了,没有技术,修改不了uc接口文件,就先放弃吧,或者,把hdwiki的注册登录全部关了,只用discuz的注册和登录,不过还是有用户体验的问题。而且,后患比较多。
hdwiki做个人wiki
还是弄个人wiki吧,无需整合ucenter。不过还是有不尽如人意的地方。做个人wiki,很不喜欢hdwiki那个首页。而mediawiki已某个可以编辑的页面作为首页我感觉很好。但是没有找到hdwiki编辑首页的方法,只好直接改模版的index.htm文件。不过这个比较麻烦,还不能用后台的模版编辑,因为那个不支持中文。所以每次在本地编辑好才能上传。
我改好的如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
{template header} <script type="text/javascript"> $(document).ready(function(){ $("#tpbk img,#tjct img").each(function(i){ var w = this.width; var h = this.height; if(w > 100 || h > 75){ if(w/h>4/3){ this.style.width = "100px" }else{ this.style.height = "75px" } } }); $("input[name*='searchtext']") .focus(); }); </script> <!--首页模拟词条自这里开始--> <div class="l w-710 o-v"> <!--标题--> <h1 class="title_thema"> <span id='doctitle'>AnnHe's Personal Wiki</span></h1> <hr /> <div class="nav_model"></div> <!--内容区--> <div class="content_1 wordcut"> <div class="content_topp"> </div> <!--目录--> <fieldset id="catalog"> <legend><a name='section'>目录</a></legend> <ol id="hidesection"> <li> <a href="#1">欢迎来到我的个人Wiki</a> </li> <li> <a href="#2">建设网站的一般方法</a> </li> <li> <a href="#8">加入我一起编写文档</a> </li> </ol> </fieldset> <!--正文--> <a name="1"></a> <h3><span class="texts">欢迎来到我的个人Wiki</span></h3> <div class = "content_topp" style="padding-left:40px;text-align:left"> 欢迎来到我的个人<a href=javascript:innerlink('Wiki') class="baikelink" title="Wiki" >Wiki</a>。本Wiki目前由我个人维护。<br /> Wiki不仅适合团队协作管理团队知识,还是一个很好的个人知识管理工具,本Wiki打算记录我建站的经验总结及专业学习上面的一些总结,大致包括Linux服务器运维,Discuz,PHP以及C语言等内容。 <br /> </div> <a name="2"></a> <h3><span class="texts">建设网站的一般方法</span></h3> <div class = "content_topp" style="padding-left:40px;text-align:left"> 本章总结搭建一个网站的基本流程,包括申请域名,购买虚拟主机或服务器,上传网站程序,安装网站程序,维护网站等等。<br /> 进入文档:<a href=javascript:innerlink('建设网站的一般方法') class="baikelink" title="建设网站的一般方法" >建设网站的一般方法</a> </div> <a name="8"></a> <h3><span class="texts">加入我一起编写文档</span></h3> <div class = "content_topp" style="padding-left:40px;text-align:left"> 虽然这是一个个人Wiki,但并不排斥多人协作。如果你和我有相似的兴趣并且希望和我共同维护此Wiki,欢迎联系我,<a href="https://www.annhe.net/about-me" target="_blank">点此查看我的联系方式</a><br /> 如果你不了解Wiki,请先阅读: <a href=javascript:innerlink('什么是Wiki') class="baikelink" title="什么是Wiki">什么是Wiki</a>。<br /> 如果你不了解如何编辑Wiki,请先阅读:<a href=javascript:innerlink('我是新手,怎样编写文档') class="baikelink" title="我是新手,怎样编写文档" >我是新手,怎样编写文档</a>。 </div> </div> <div class="nav_model"></div> <!--ad start --> <!--{if isset($advlist[2]) && isset($setting[advmode]) && '1'==$setting[advmode]}--> <div class="ad" id="advlist_2"> {$advlist[2][code]} </div> <!--{elseif isset($advlist[2]) && (!isset($setting[advmode]) || !$setting[advmode])}--> <div class="ad" id="advlist_2"> </div> <!--{/if}--> <!--ad end --> </div> <!--右边栏--> <div class="r w-230"> <div id="block_right">{block:right/}</div> </div> <!--标签和友链--> <div class="c-b"></div> <div id="block_bottom">{block:bottom/}</div> <!--以下js取自viewdoc.htm,用于首页显示内链--> <script type="text/javascript"> function innerlink(title){ location.href='{WIKI_URL}/index.php?doc-innerlink-'+encodeURI(title); } </script> {template footer} |
效果如图:
百度吧,很久没弄hdwiki了
你好,能不能把dokuwiki的模板发我共享下,多谢
邮箱 wy-fang316@163.com
我用的默认模板
我是湖南的邹志斌,刚玩博客,来这里拜码头!恳请前辈多多指点:www.zouzhibin.cn
不敢当。。你博客做的挺好的