Você pode querer que seu plugin adicione uma nova página à aplicação. Pode ser uma página de configurações separada ou um painel editorial no back-end ou uma nova página pública no site voltado para o leitor.
Um plugin genérico pode fazer isso conectando-se ao ciclo de vida da solicitação e carregando seu próprio PageHandler.
Você deve entender o Ciclo de vida da solicitação e estar familiarizado com a arquitetura, especialmente Manipuladores, antes de prosseguir.
O exemplo abaixo mostra uma solicitação para uma página personalizada.
http://example.org/publicknowledge/tutorialexample
class TutorialExamplePlugin extends GenericPlugin {
public function register($category, $path, $mainContextId = null) {
$success = parent::register($category, $path, $mainContextId);
if ($success && $this->getEnabled()) {
HookRegistry::register('LoadHandler', array($this, 'setPageHandler'));
}
return $success;
}
public function setPageHandler($hookName, $params) {
$page = $params[0];
if ($page === 'tutorialexample') {
$this->import('TutorialExamplePluginHandler');
define('HANDLER_CLASS', 'TutorialExamplePluginHandler');
return true;
}
return false;
}
}
import('classes.handler.Handler');
class TutorialExamplePluginHandler extends Handler {
public function index($args, $request) {
$plugin = PluginRegistry::getPlugin('generic', 'tutorialexampleplugin');
$templateMgr = TemplateManager::getManager($request);
return $templateMgr->display($plugin->getTemplateResource('example.tpl'));
}
}
O TutorialExamplePluginHandler
pode ter mais de um op e suporta todas as capacidades de um PageHandler
normal.
Leia sobre a estrutura de autorização para manter suas páginas privadas seguras.
Veja mais exemplos.