CakePHP根据域加载不同的布局/数据?

时间:2011-02-02 17:42:57

标签: model-view-controller cakephp dns cakephp-1.3

我需要运行2个站点,一个用于高端客户,一个用于低端客户。

他们几乎都做同样的事情,但看起来不同。例如,它们都可能有产品A,但价格和描述(没有重复内容)会有所不同。

然而,在大多数情况下,它们将拥有不同的产品,高端产品的高端产品和低端产品的低端产品。

如果两个站点使用相同的底层结构,则更容易,因此不必重复许多重叠部分。特别是在变化时。但它需要在必要时允许每个站点使用不同的逻辑。

因此,如果我将2个不同的域(让我们称之为highend.com和lowend.com)指向同一台服务器。处理这个问题的最佳方法是什么?

应该/我可以确定app_controller中正在使用的域,并指定要使用的布局或设置子控制器使用的变量吗?怎么样?

有没有办法可以为数据库中的某些字段添加前缀。例如,如果有products表以及products.highend_nameproducts.lowend_name字段。然后在代码中引用Product.name,但根据使用的域,使用正确的域。但是对于像style_number这样的重叠场,只有products.style_number没有前缀,因为它的方式相同。有没有办法设置这样的东西?怎么样?

最好的办法是做这样的事情吗?是否有一个不同的框架可以更好地处理这个?

1 个答案:

答案 0 :(得分:2)

在控制器中:

$host = $_SERVER['SERVER_NAME'];
if($host=='www.posh.com')
{
    $this->layout = 'posh';
}
elseif($host=='www.cheap.com')
{
    $this->layout = 'cheap';
}
else
{
    $this->layout = 'default';
}