如果你跟我一样是一个租用独立空间的用户,拥有自己的空间,自己的数据库。于是你部署了Wordpress,部署了Wiki,还部署了很多很多的系统,如何将它们整合在一起就成了一个很大的问题。下面的这个wiki就是来讨论如何解决这个问题的。
目录 |
简介
我安装了Wordpress, MediaWiki。然后将它们整合在了一起。其他更多系统也可以按照此方法整合。由于重在整合,所以每个模块的具体安装就不再赘述。而所有配置也都是指导性配置,读者需要根据自己的情况自行调整。按照下面的步骤,就基本可以做成我这样的网站了。
步骤
我以wordpress为整体CMS的管理框架,并尝试集成更多的系统。
定义.htaccess
规划好目录后,写一个类似下方的.htaccess文件。其中/notes是我设定的wiki目录,如果有其他目录,则也添加到RewriteCond中。
DirectoryIndex index.php
Allow from all
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/notes(.*)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wiki/index.php [L]
</IfModule>
部署wordpress
- 下载安装Wordpress。默认放在根目录,之后就可以通过http://sharpmark.net/直接访问了。
- 可选步骤。为了使ftp根目录简洁,我打算将wordpress移动到blog目录下,并且不会影响目前的url结构。
- 首先,登录后台,将WordPress address (URL)修改成http://sharpmark.net/blog,注意,Blog address (URL)表示外界访问目录,如果默认根目录,则不要修改。
- 将所有有关文件移动到blog目录中。
- 在根目录中再创建一个index.php,内容如下,即可完成配置。
<?php
define('WP_USE_THEMES', true);
require('./blog/wp-blog-header.php');
?>
部署wiki
安装wiki
- 安装mediawiki到wiki目录下。
- 按照Quick Set Up Wiki Farm这种方法配置wiki farm。(单个wiki则更简单)。
- 修个每个wiki的LocalSettings,配置路径,这个路径可以不含wiki根目录。
优化配置
如果使用了wiki farm,则可以通过修改DefaultSettings.php来实现对多个wiki的统一修改。如果单一wiki,则修改LocalSettings.php。 修改内容如下:
= 美化Url
修改如下配置
$wgScriptExtension = ''; $wgScript = &$wgScriptPath; $wgRedirectScript = &$wgScriptPath;
上传路径修正
去掉路径中hash部分
$wgHashedUploadDirectory = false;
分别为每个wiki配置上传路径
$wgUploadPath = "/wiki/images/notes";
统一风格
皮肤统一
分别为两者写同样风格的皮肤。方法就是使用一套css,然后定义相同的页面结构和相应元素class/id即可实现。
导航栏
为了在几个系统中统一上方导航栏,可以写一个如下的文件,并在每个皮肤相应位置应用。
<?php function get_navbar()
{
$callingurl= strtolower($_SERVER['REQUEST_URI']); // get the calling url
$menuitems = array ( array ( '首页', ''),
array ( '博客', 'blog'),
array ( '关于', 'about-me'),
array ( '相册', 'album'),
array ( '笔记', 'notes'),
array ( '留言', 'guest-book'),
array ( '链接', 'friend-links') );
?>
<div id="navbar">
<ul class="navmenu">
<?php foreach ($menuitems as $item) { ?>
<li<?php if (strpos( $callingurl, $item[1])
|| ($item[1] == '' && $callingurl == '/')
) { ?> class="current_page_item" <?php } ?>>
<a href="/<?php echo $item[1]; ?>" title="<?php echo $item[0]; ?>">
<?php echo $item[0]; ?></a></li>
<?php } ?>
</ul>
</div>
<?php } ?>