2009-12-24 6 views
0

У нас есть Geeklog удалось сайт работает наIntegratiing Zend Framework и Geeklog

http://bhaa.ie

Мы недавно установки приложения ZEND на поддомен, который управляет этой страницей

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

Мы надеясь лучше интегрировать два домена, чтобы мы могли назвать этот URL-адрес

http://bhaa.ie/event/list

и обработать запрос zend, в то время как geeklog обрабатывает все остальные запросы.

Как я вижу - у нас есть 2 варианта

1: Обновление файла .htaccess для фильтрации запросов URL-адресов между экземплярами Geeklog и Зенд. или 2: обновите geeklog index.php, чтобы включить базовый код zend

Мне просто интересно, есть ли у кого-нибудь какие-либо опыты, которые могут это сделать, или могли бы рекомендовать, какой путь следовать?

ответ

1

Если у вас есть только несколько URL в вашем ZF-приложении (т.е. event/list и только несколько других), я бы с первым решением: добавить пару RewriteRules в файл .htaccess веб-сайт geeklog, чтобы перенаправить конкретные URL-адреса в приложение на основе ZF.

Таким образом, ваши два приложения остаются полностью разделенными: у вас нет какого-либо кода, смешанного между двумя приложениями, как это подразумевает ваше второе решение.

0

GeekLog позволяет включить внешнюю страницу, но вам необходимо вызвать собственный метод geeklog в вашей Zend по умолчанию ./public/index.php.

В приведенном ниже примере, я должен был

  1. Включите библиотеку Geeklog PHP в set_include_path()
  2. причем способ EXP_externalAccess() перед вызовом приложения Zend вызова.

Полный код «/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 'и' footer ', обертывающее html, отображаемое приложением zend.

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

// .. ZEND LAYOUT STUFF 

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