2012年12月24日星期一

整合DoWiKi和WordPress


整合DoWiKi和WordPress

3.x版本的整合文件已经更新,可以从下面的地址下载,并且要添加5.6两个步骤

这里将介绍无缝整合dokuwiki和你的wordpress的方法,这样无论你在哪一个登录,都会同时登录到另一个去,并且用户是完全一样的。你可以访问http://muagames.com这个演示站点。在wordpress中的默认角色在dokuwiki中会成为用户群,你可以分配wiki权限给他们!这需要少量改变你的dokuwiki的安装方法,如果wordpress版本高于2.6的话,也需要少量更改,低于这个版本则无需更改。并且你不需要任何php知识和其他东西来完成这次整合。
概述:
我们将要为dokuwiki创建一个定制的身份验证模块,这个模块将会使用wordpress的认证工具而不是dokuwiki的。我们也要调整一些设置以便让dokuwiki知道什么用户可以做什么和不可以做什么,就是实现用户的不同权限。然后设置他让wordpress用户变成wiki的用户。[more]
安装和下载:
首先,如果你还没有wordpress和dokuwiki,那就上传和安装他们,我建议为他们在同一目录下各建立一个文件来存放,像下面这样。
|-目录
|-/wordpress目录
|-/dokuwiki目录
但着不是必要的。无论你安装在哪里,记下他们的安装路径,因为我们需要在下一步用到他们。现在,下载这个压缩包然后解压他们到某个地方进行访问:dokuwiki_wordpress_integration_v1.1(适用于2.x版本的wordpress,如果你的是3.x版本的请到文章开头给出的链接下载整合文件),接下来就可以开始整合啦~
第一步:身份验证模块
从刚才下载的压缩包中复制keeyaiwp.class.php文件到你的dokuwiki目录/inc/auth文件夹中,然后用编辑器打开他,找到下面这行
$wordpresspath=’../wordpress/’;这应该是文件中除注释中的第一行代码。改变’../wordpress/’为你的wordpress文件夹相对于dokuwiki文件夹的路径,如果你的安装目录像上面所说的,那么就不需要改动了。
第二步:wiki配置选项
进入你的dokuwiki/conf文件夹目录,找到local.php文件。如果这个文件不存在,把local.php.dist这个文件重命名为local.php。这个文件包含一些wiki设置,包括让dokuwiki使用我们创建的身份验证模块也是在这里设置,打开local.php然后添加和修改下面的给出内容。注意:@administrator不是@admin。
        $conf['useacl'] = 1;
 $conf['superuser'] = '@administrator';

 $conf['disableactions'] = 'register';  // Disable the ability to register: handle with wordpress
 $conf['autopasswd'] = 0;     // Disable password autogen: not important if users can't register
 $conf['resendpasswd']= 0;     // Disable password resend:
 $conf['profileconfirm'] = '1';  // password must be verified when editing profile
 $conf['passcrypt'] = 'smd5';   // Not sure what passcrypt needs to be set to, but this works

 // use wordpress login system
 $conf['authtype'] = 'keeyaiwp';

 // default group name
 $conf['defaultgroup']= 'user';
第三步:wiki权限
进入你的dokuwiki/conf文件夹目录,找到acl.auth.php文件。如果这个文件不存在,把acl.auth.php.dist这个文件重命名为acl.auth.php,这个文件控制wiki用户和用户群组的默认权限,我们将要添加四个低级的wordpress角色(我们已经添加管理员角色通过设置他为superuser)作为wiki用户群组。你应该调整这些设置以便你的wiki按照你需要的方式工作。名字都是wordpress roles-不要需改他们-那些数字全是dokuwiki权限。这是dokuwiki的ACL文档,下面的数字的意思可以从里面找到。你只需选择你需要的最大的数字——每一个包含低于他的数字的所有权限。我的默认设置是让所有人可以阅读,所有的登录用户(投稿者,作者)可以阅读/编辑/创建页面,而编辑者和管理员可以上传媒体和删除页面,只有Administrators group的用户可以访问wiki管理工具。
打开文件并添加以下行(与以上所述的任何调整):
   *               @ALL             1
 *  @editor  16
 *  @author  4
 *  @contributor 4
 *  @subscriber 4
第四步:wordpress的编辑功能
高版本wordpress的问题是is_ssl函数的重复声明,要解决他,我们需要打开wordpress的文件然后让他只在is_ssl函数不存在的情况下定义is_ssl函数。具体操作如下:
1.打开wp-includes/funtions.php,寻找is_ssl函数,然后更改他为下面给出的代码,并在开始和结束位置添加大括号。在wp2.9.1中他在第3091行。
if(!function_exists('is_ssl')) {
function is_ssl() {
 if ( isset($_SERVER['HTTPS']) ) {
  if ( 'on' == strtolower($_SERVER['HTTPS']) )
   return true;
  if ( '1' == $_SERVER['HTTPS'] )
   return true;
 } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
  return true;
 }
 return false;
}
}
很好,现在已经整合成功了,很简单吧?现在你的博客和wiki的登录应该是同步的了。做完以上步骤后,你可以使用wiki管理工具来进一部调整用户和用户组的权限,而不需要再次进入代码里修改了。
第五步:(wordpress3.x执行这一步,2.x不需要)
我们需要创建两个新的文件。首先,因为我们不打算使用WordPress的
config文件,但我们需要它里面的信息,我们需要复制并重新命名它。
复制wp – config.php文件,并将其重命名WP-doku-config.php文件。然后改变从最后一行
require_once(ABSPATH . 'wp-settings.php');

为

require_once(ABSPATH . 'wp-doku-settings.php');
第六步:(wordpress3.x执行这一步,2.x不需要)
复制下载文件中的wp-doku-settings.php文件到wordpress文件夹中
注意:
wordpress升级到3.x版本后,作者特别强调,这是一个hack,通过丑陋的方法实现wordpress和dowiki的整合,虽然他能正常工作。