2

まず、私の状況を説明させてください。私は 2 つのドメイン、2 つの Web サイト、同じレイアウトですが、異なるコンテンツと異なる目的を持っています。私がしたいこと:

これら 2 つのシステム間で共有:

  • 機能、レイアウト テンプレート、および管理。

違い:

  • ビュー内のページ、いくつかのコントローラー。

私が検討したオプション:

オプション1

  1. 2 つのサイトのいずれかをプラグインにする
  2. ホスト名: $_SERVER['HTTP_HOST'] を確認し、プラグインを使用するかどうかをコアまたはブートストラップで示します。

このようなもの:

if ($_SERVER['HTTP_HOST'] == 'www.example1.com') {
    Configure::write('defaultplugin', 'example1');
} else {
    Configure::write('defaultplugin', null);
}

これは可能ですか

オプション 2

仮想アドレスですが、ルーティングが次のように構成されているため、これも実現が困難です。

Router::connect("/{$prefix}/:language/:plugin", $indexParams, $shortParams);

たぶん、このルートを次のように変更する必要があります。

Router::connect("/{$prefix}/:plugin/:language", $indexParams, $shortParams);

しかし、以前の提案が可能であれば、それを希望します。なぜなら、最後の解決策がいくつかのレベルで正しく機能するかどうかわからないからです。

オプション 3

ここで説明されている方法を使用してください: http://rickguyer.com/cakephp-one-core-many-apps/

したがって、example1、example2、common の 3 つのアプリ フォルダーを作成します。しかし、app フォルダーを example1 と common または example2 と common の内容で構成できるかどうかはわかりません。

オプション 4

ここStackoverflowの誰かからの素晴らしいアイデア。

前もって感謝します!

4

1 に答える 1

0

ドメインに基づいて routes.php コンテンツを切り替えます。このようにして、多くの構成/ハッキング/切り替えを行う必要なく、すべての柔軟性を得ることができます。

関連するルートを切り替える/置き換えるだけで、残りは問題ありません。

例えば:

if ($isDomainX) {
    Router::connect('/', array('plugin' => 'shop', 'controller' => 'shop', 'action' => 'index', 'slug' => $slug), array('pass' => array('slug')));
    ...
} else {
     Router::connect('/', array('controller' => 'custom_pages', 'action' => 'homepage'));
    ...
}

ファイル全体を含める/切り替えることもできます。これにより、読み取り/保守が容易になります。

于 2013-01-10T10:41:58.293 に答える