我正在尝试根据URL在Drupal中设置环境。 例如,如果我转到mysite.local,它将使用localdb,它会将站点名称更改为“Local Mysite”;如果我去mysite.com,它将自动切换到使用productiondb并将名称设置为“Mysite”。
这是我用于大多数基于MVC的框架的类似设置:
define('DEVELOPMENT', 'mysite.local');
define('PRODUCTION', 'mysite.com');
switch ($_SERVER['SERVER_NAME']) {
case DEVELOPMENT:
// development server
$config['base_url'] = "http://mysite.local";
$config['title'] = "DEVELOPMENT Mysite";
$config['debug'] = 1;
break;
default:
// live server
$config['base_url'] = "http://mysite.com/";
$config['title'] = "Mysite";
$config['debug'] = 0;
break;
}
Drupal7中是否有类似的东西(我不想使用不同的网站,只有同一网站的不同设置),并且有某种惯例,这种切换需要发生(我正在考虑的settings.php)。
答案 0 :(得分:4)
我个人没有将settings.php提交到版本控制中,(settings.default.php是),然后在每个环境中保留一个基于settings.default.php的自定义settings.php文件。
但是,如果您更喜欢以这种方式设置环境,那么这样的内容将适用于您的sites / default / settings.php文件。
define('DEVELOPMENT', 'mysite.local');
define('PRODUCTION', 'mysite.com');
switch ($_SERVER['SERVER_NAME']) {
case DEVELOPMENT:
// development server
$db_url = 'mysql://user:pass@localhost/mydb_dev';
$db_prefix = '';
$base_url = 'http://mysite.local';
$conf = array(
'site_name' => 'Development Environment',
);
break;
default:
// live server
$db_url = 'mysql://user:pass@localhost/mydb_prod';
$db_prefix = '';
$base_url = 'http://mysite.com';
$conf = array(
'site_name' => 'My Site',
);
break;
}
请记住,对于您在此处使用的每个变量,您需要注释掉它们是否在settings.php的其他部分中定义。
我还应该补充一点,我认为多站点用于开发环境是一个坏主意,我想同样的原因我更喜欢每个环境都有自己的自定义settings.php文件。在大多数情况下,我更喜欢保持代码的可移植性,因为我不需要任何代码或文件系统引用任何环境,除了我运行代码的环境的设置文件。
将Drupal的多站点功能用于您需要开发和启动的每个环境,正如其他人在此建议的那样,管理起来会非常疯狂。
答案 1 :(得分:1)
你所描述的内容在Drupal中被称为multi-site configuration 简单地说,在多站点配置中,您将Drupal设置为使用基于用于访问站点的域名的不同配置文件。它允许对指向同一服务器的不同域名使用相同的代码,就像您要使用不同域名访问同一Web服务器一样。
您也对Run multiple sites from the same code base (multi-site)中报告的内容感兴趣。
答案 2 :(得分:0)
我认为使用单独的网站是您想要的。我有类似的设置,不同的网站都有自己的settings.php文件。但后来我对模块和主题目录进行了符号链接,以便我没有重复的文件。但是,如果要为开发设置一个环境,则需要将它们分开。
所以我有这样的事情:
drupal/sites/mysite.com/themes
drupal/sites/mysite.com/modules
drupal/sites/mysite.com/settings.php
drupal/sites/mysite.local/themes => ../../mysite.com/themes
drupal/sites/mysite.local/modules => ../../mysite.com/modules
drupal/sites/mysite.local/settings.php
drupal/sites/default => mysite.com
Drupal将根据网址使用正确的网站配置。