1

私は2つのサイトを持っています。 www.xxx.com&www.yyy.com

CakePHP ソリューションを使用していますが、www.xxx.com正常に動作します。

www.yyy.comサイトで と同じコントローラーと DB を使用するようにしたいと考えていwww.xxx.comます。しかし、それはまったく異なる CTP と CSS を持つことです。もちろん、全体をコピーすることもできますが、www.yyy.com2 セットのコードを維持する必要があります。CTPS と CSS の 2 つの異なるセットを維持したいだけです。

質問は次のとおりです。

  1. コントローラーとビューを 2 つの異なる URL に分割できますか?
  2. 1に対する答えがイエスであると仮定します。同じコントローラーと DB を使用しているが、まったく異なるビューと CSS を表示する 2 つの異なるサイトを作成できますか?
  3. あなたの経験からこれを行う前に何を考えるべきですか?

ありがとう。

4

1 に答える 1

0

あなたの質問は、デスクトップ版とモバイル版が必要なサイトとよく似ています。そのために使用されるソリューションを調査できます。

beforeFilter() メソッドで変数を設定する AppController を作成して (この場合はリクエスト ドメインを確認してください)、この変数を render メソッドで使用して、使用するレイアウト ファイルとビュー ファイルを選択することで、このようなものを作成しました。

function render($action = null, $layout = null, $file = null) {                
    $view_file = false;
    $layout_file = false;

    // test for availability of layout does not work for null so set to default setting of null.
    if ($layout === null) {
        $layout = $this->layout;
    }

    // if not mobile: show desktop version.
    if (!$this->is_mobile) {
        $view_file = file_exists(VIEWS . $this -> name . DS . 'desktop/' . $file . '.ctp');
        $layout_file = file_exists(LAYOUTS . 'desktop/' . $layout . '.ctp');
    }

    return parent::render($action, ($layout_file ? 'desktop/' : '') . $layout, ($view_file ? 'desktop/' : '') . $file);
}

このように、is_mobile が false の場合、サブディレクトリ 'desktop' のビュー/レイアウトがデフォルトのものではなく使用されました。同じシステムを使用して、2 つのドメインに別々のビュー/レイアウトを作成できます。

これは、時々提案される afterFilter() を使用する代わりに、render() をオーバーライドすることによって行います。本当の理由は忘れましたが、afterFilter() を使って思ったように動作させることができなかったためだとわかっています;-)

于 2013-04-17T12:37:27.883 に答える