本来两个网站是一套Drupal 7,使用一个主题(theme),使用两个域名,只是显示时看起来象两个,因为根据域名来判断显示代码。
后来另外有人做其中一个网站的主题(theme),和我原来的主题不同,这样如果坚持用一个主题就有很多代码需要修改... ... 就重新再看Drupal 7多站点
的配置,这次还算顺利。
首先是网站别名的问题,在sites目录下,复制文件example.sites.php,取名为sites.php,然后添加如下一行(这是示例):
$sites['www.cinderellas.ca.test'] = 'slipers.cinderellas.ca'
上面来自Drupal 7文档,可是我试验不成功,到drupal网站上看,很多人说不好用。下面建立了子目录,试了一下,可以用。
$sites = array(
'aoy.cinderellas.ca' => 'slipers.cinderellas.ca',
);
$sites['aoy.cinderellas.ca'] = 'slipers.cinderellas.ca'
cinderellas.ca.test 是一个别名,表示在浏览器地址栏填写 cinderellas.ca/test即可访问新建的slipers.cinderellas.ca这个站点。
下面是介绍如何建立slipers.cinderellas.ca子站点和cinderellas.ca站点共享一套核心代码,自己有数据库,用户数据共享,一次登陆,同步session。
1)在sites下建立子目录:slipers.cinderellas.ca
2)一个办法是将install.php直接拷贝到子目录slipers.cinderellas.ca下,在浏览器里输入cinderellas.ca/sites/slipers.cinderellas.ca/install.php直接安装。
另一个办法是在slipers.cinderellas.ca子目录下建files, modules, themes 目录,在数据库里再建一套表,表名前缀要有别于cinderellas.ca的那一套。这个方法我还没试成功。
然后,根据default.settings.php来建settings.php,把数据库信息写上。把用户表共享。示例如下:
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'cin_xxx',
'username' => 'cin_xxx',
'password' => 'password',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => array (
'default' => 'yyy_', // the prefix for tables that are not shared.
'users' => 'y_',
'sessions' => 'y_',
'role' => 'y_',
'authmap' => 'y_',
'users_roles' => 'y_',
),
),
),
);
cinderellas.ca用的是前缀为y_的数据库表。
4)调试完成后可以将sites.php中这一行$sites['aoy.cinderellas.ca'] = 'slipers.cinderellas.ca' 用#号注释掉。这样就可以直接用:
slipers.cinderellas.ca来访问了。多站点就建成了。
5)因为sites/all/modules目录下的module是共用的,这里模块虽然不用上传,但需要设置一下,比如和PHPBBS的同步模块。
另外,all/themes的theme并不和all目录下的子目录slipers.cinderellas.ca共用的。根目录下的可共用。
相关链接:Drupal 7: 多站点的实现