CakePHP загружает разные макеты / данные в зависимости от домена? - PullRequest
0 голосов
/ 02 февраля 2011

Мне нужно запустить 2 сайта, один для клиентов высокого уровня и один для клиентов низкого уровня.

Они оба делают одно и то же, но выглядят по-разному. Например, у них обоих может быть продукт А, но цена и описание (без дублирующегося контента) будут разными.

Однако, по большей части, они будут иметь различные продукты, продукты высокого класса для сайта высокого класса и продукты низкого уровня для сайта низкого уровня.

Проще, если оба сайта используют одну и ту же базовую структуру, поэтому не нужно дублировать множество перекрывающихся частей. Особенно во время перемен. Но при необходимости необходимо учитывать различную логику для каждого сайта.

Так что, если я укажу 2 разных домена (назовем их highend.com и lowend.com) на один и тот же сервер. Каков наилучший способ справиться с этим?

Должен ли я определить, какой домен используется в app_controller, и указать, какой макет использовать или установить переменную, которая будет использоваться дочерними контроллерами? Как?

Можно ли как-то добавить префиксы к некоторым полям в базе данных. Например, если есть таблица products и поля products.highend_name и products.lowend_name. Тогда в коде просто обратитесь к Product.name, но в зависимости от того, какой домен используется, используйте правильный. Но для перекрывающихся полей, таких как style_number, префикса просто нет products.style_number, поскольку он одинаков в любом случае. Есть ли способ настроить что-то подобное? Как?

Каков наилучший способ сделать что-то подобное? Есть ли другая структура, которая могла бы справиться с этим лучше?

1 Ответ

2 голосов
/ 02 февраля 2011

В контроллере:

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