2009-12-24 5 views
0

우리는 geeklog 관리 사이트가Integratiing 젠드 프레임 워크와 Geeklog

http://bhaa.ie

우리는 최근 설정이 페이지 우리는있어

http://bhaa.ie/members/public/index.php/event/list

를 관리하는 하위 도메인에 젠드 응용 프로그램을 실행해야 두 도메인을 더 잘 통합하기 위해이 URL을 호출 할 수 있도록

http://bhaa.ie/event/list

zend가 요청을 처리하고 geeklog가 다른 모든 요청을 처리합니다. geeklog와 젠드 인스턴스간에 URL 요청을 필터링 할 htaccess로 파일을 업데이트 : - 내가보기로

우리는이 옵션

1

있습니다. 또는 2 : 기본 zend 코드를 포함하도록 geeklog index.php를 업데이트하십시오.

나는 어떤 경험이 있습니까? 아니면 따라야 할 경로를 추천 할 수 있습니까? 당신은 당신의 ZF 기반 응용 프로그램 에서 URL의 몇 가지 (즉, event/list 등의 몇)이있는 경우

답변

1

, 나는 첫 번째 솔루션으로 갈 것 :의 htaccess로 파일의 RewriteRules 몇 추가 Geeklog 웹 사이트에서 특정 URL을 ZF 기반 응용 프로그램으로 리디렉션합니다.

이렇게하면 두 응용 프로그램이 아주 구분되어 있습니다. 두 응용 프로그램간에 혼합 된 코드가 없습니다. 두 번째 솔루션이 의미하는 것처럼 말입니다.

0

GeekLog를 사용하면 외부 페이지를 활성화 할 수 있지만 기본 Zend ./public/index.php에서 geeklog 사용자 정의 메소드를 호출해야합니다.

아래의 예에서, 내가
  1. 로했다가 set_include_path에()
  2. 전화 젠드 응용 프로그램을 호출하기 전에 EXP_externalAccess() 메서드를 geeklog PHP는 라이브러리를 포함합니다.

'/public/index.php'의 전체 코드는이 사용자가 올바른 사용 권한이있는 경우 페이지 만 호출됩니다 보장

<?php 

// Define path to application directory 
defined('APPLICATION_PATH') 
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); 

// Define application environment 
defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); 

// Ensure library/ is on include_path 
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'), 
    realpath(APPLICATION_PATH), 
    '/home/bhaa1/public_html/lib-common.php', 
    get_include_path() 
))); 

/** Zend_Application */ 
require_once '/home/bhaa1/public_html/lib-common.php'; 

$page_name = substr($_SERVER['SCRIPT_NAME'], 1); 

if (!EXP_externalAccess($page_name)) { 
    $display = COM_siteHeader('menu'); 
    $display .= COM_startBlock($LANG_EX00['access_denied']); 
    $display .= '<div align="center"><b>' . 
       $LANG_EX00['access_msg'] . 
       '</b></div>'; 
    $display .= COM_endBlock(); 
    $display .= COM_siteFooter(yes); 
    echo $display; 
    exit; 
} 

require_once 'Zend/Application.php'; 

// Create application, bootstrap, and run 
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/dashboard.ini' 
); 

$application->bootstrap()->run(); 
?> 

입니다.

마지막 단계는 내 layout.phtml을 업데이트하여 geek-log '메뉴'와 zend app에서 렌더링 한 html을 래핑하는 'footer'를 업데이트하는 것입니다.

<?php echo COM_siteHeader('menu');?> 

// .. ZEND LAYOUT STUFF 

<?php echo COM_siteHeader('end');?> 
관련 문제