我覺得這種模式可以工作...
主題文件夾結構
/path/to/themes
/path/to/themes/some_theme
/path/to/themes/some_theme/layout.phtml
/path/to/themes/another_theme
/path/to/themes/another_theme/layout.phtml
配置/ module.config.php
return array(
'view_manager' => array(
'template_path_stack' => array(
'/path/to/themes',
),
),
);
Module.php
namespace Something;
class Module
{
public function onBootstrap(\Zend\EventManager\EventInterface $e)
{
$application = $e->getApplication();
$em = $application->getEventManager();
$em->attach('route', function($e) {
// decide which theme to use by get parameter
// $layout = 'some_theme/layout';
// $layout = 'another_theme/layout';
$e->getViewModel()->setTemplate($layout);
});
}
}
//編輯:改爲使用路由事件,而不是controllerLoader
我聽到這個問題,以及有關監聽活動。他們的意思是,在你的Module.php類中,你嚮應用程序註冊了一個事件。然後,根據某些條件更改佈局文件。當然,每個佈局文件都是使用diff CSS文件的「主題」。我會嘗試建立一個鏈接到我看到的這個網頁。 –