Notes

出自Notes

How to Build a CMS

如果你跟我一样是一个租用独立空间的用户,拥有自己的空间,自己的数据库。于是你部署了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

  1. 下载安装Wordpress。默认放在根目录,之后就可以通过http://sharpmark.net/直接访问了。
  2. 可选步骤。为了使ftp根目录简洁,我打算将wordpress移动到blog目录下,并且不会影响目前的url结构。
    1. 首先,登录后台,将WordPress address (URL)修改成http://sharpmark.net/blog,注意,Blog address (URL)表示外界访问目录,如果默认根目录,则不要修改。
    2. 将所有有关文件移动到blog目录中。
    3. 在根目录中再创建一个index.php,内容如下,即可完成配置。
<?php

	define('WP_USE_THEMES', true);
	require('./blog/wp-blog-header.php');

?>

部署wiki

安装wiki
  1. 安装mediawiki到wiki目录下。
  2. 按照Quick Set Up Wiki Farm这种方法配置wiki farm。(单个wiki则更简单)。
  3. 修个每个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 } ?>