2013-01-10 3 views
2

먼저 내 상황을 설명해 드리겠습니다. 두 개의 도메인, 두 개의 웹 사이트, 레이아웃이 있지만 콘텐츠와 용도가 다릅니다. 내가하고 싶은 것 :이 두 시스템 간의호스트 이름을 기반으로 기본 플러그인을 설정하십시오.

공유 :

  • 하는 기능, 레이아웃 템플릿 및 관리. 다른 무엇

: 뷰에서

  • 페이지, 일부 컨트롤러.

옵션은 내가 생각 :

옵션 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

여기에 설명 된 방법을 사용하여 예 1, 예 2, 일반 :

http://rickguyer.com/cakephp-one-core-many-apps/ 그래서 내가 3 개 응용 프로그램 폴더를 만들 것입니다. 하지만 응용 프로그램 폴더를 example1 및 common OR example2 및 common의 내용으로 구성 할 수 있는지 여부는 알 수 없습니다.

옵션 4

여기에 유래 누군가로부터의 멋진 아이디어.

미리 감사드립니다.

답변

0

도메인을 기준으로 routes.php 콘텐츠를 전환합니다. 이렇게하면 config/hacking/switching을 너무 많이하지 않아도 모든 유연성을 확보 할 수 있습니다.

관련 경로를 바꾸거나 바꾸면 나머지는 정상적으로 작동합니다. 즉, 쉽게 유지/읽을 수 있습니다 경우

예컨대 :

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이고, spinoff는 example1입니다! :디 –

관련 문제