【问题标题】:CakePHP load different layout/data depending on domain?CakePHP 根据域加载不同的布局/数据?
【发布时间】:2011-02-02 17:42:56
【问题描述】:

我需要运行 2 个网站,一个面向高端客户,一个面向低端客户。

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

但是,在大多数情况下,他们会有不同的产品,高端网站的高端产品和低端网站的低端产品。

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

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

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

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

做这样的事情最好的方法是什么?有没有其他框架可以更好地处理这个问题?

【问题讨论】:

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


    【解决方案1】:

    在控制器中:

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

    【讨论】:

    • 我想我也可以尝试构建一个行为来处理加载不同的数据。
    • 不错的主意。它对于网站的开发人员视图也很有用,即dev.cheap.com
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    相关资源
    最近更新 更多