2013-01-10 17 views
2

首先讓我解釋一下我的情況: 我有兩個域,兩個網站,佈局相同,但內容不同,用途不同。 我會想做什麼:設置基於主機名的默認插件CakePHP

這兩個系統之間分享:

  • 的功能,佈局模板和管理。

所不同的是:

  • 在瀏覽的網頁,一些控制器。

的選項我認爲:

選項1

  1. 使兩個網站一個插件
  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/

所以我會用3個應用程序文件夾:例1,例2,常見的。但我不知道是否可以讓app文件夾包含example1和common OR example2和common的內容。

選項4

從這裏有人#2一個真棒想法。

在此先感謝!

回答

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')); 
    ... 
} 

你也可以包括/開關整個文件,如果這使得它更容易閱讀/維護。

+0

謝謝!這樣簡單的解決方案!我可以在Router :: connect函數中填寫一個插件變量! null爲主站點和example1爲分拆! :d –