Hola gente, hoy les comparto este tutorial que traduje y añadí un par de cosas, el tutorial fué originalmente publicado por robdog en el tema "How I create my external pages". El objetivo es crear páginas externas, que se podrán editar desde las plantillas y añadir diferentes funcionalidades, además con esto lograrás crear una ruta especial para tus páginas externas (/paginas/).
Espero que te sea de ayuda, y si tenéis alguna duda consúltanos!
1er paso:
Antes que nada debemos crear ciertos archivos, que detallo a continuación, estos archivos y carpetas deberán ser creados.
Para añadir una página a este conjunto a "Paginas Externas" primero deberás crear un archivo php que llamaremos Holamundo.php
Este lo guardaremos en /library/ PaginasExternas/ControllerPublic/
El contenido sería el siguiente:
2do paso:
Ahora debemos crear un archivo llamado Navigation.php el cual deberemos guardarlo en /library/ PaginasExternas/Listeners/
El contenido deberá ser el siguiente:
3er paso:
Ahora nos falta añadir el código para el prefijo de ruta, el archivo se tendría que llamar paginas.php y debemos guardarlo en /library/PaginasExternas/Route/Prefix/
El contenido deberá ser el siguiente:
4to paso:
Crear un Complemento (Necesitarás configurar el modo debug en el config.php de tu foro)
5to paso:
Crea una ruta en la siguiente URL: /admin.php?route-prefixes/
6to paso:
Crear un detector de código de eventos (Opcional, solo si deseas añadir una pestaña en la navegación para tus páginas externas)
7mo paso:
Ahora lo último que nos queda es crear la plantilla holamundo donde incluiremos el contenido de la página que estamos realizando.
Añadir otra página en /paginas/
1er paso:
Debemos crear un fichero con el nombre de la página que queramos añadir, ej: Paginauno.php
(recuerden que uso paginauno como ejemplo, ustedes pueden usar cualquier otro nombre, como Publicidad, pero recuerden respetar donde está cada mayúscula, no usar siempre Publicidad o publicidad, hay secciones donde requiere tener una mayúscula en la primera letra de la página).
Este lo guardaremos en /library/ PaginasExternas/ControllerPublic/
El contenido sería el siguiente:
2do paso:
Ahora deberemos editar el archivo navigation.php que se encuentra en /library/PaginasExternas/Listeners/
después de
debemos agregar
3er paso:
Ahora nos queda editar el archivo paginas.php
Este archivo tendría que estar en /library/PaginasExternas/Route/Prefix/
Después de:
debemos colocar:
4to paso:
Solo nos quedaría crear una plantilla con el nombre de la página que hemos creado (paginauno) y listo, añadimos otra página externa!
Cambiar página defecto de /paginas/
Para realizar esto deberemos editar el archivo paginas.php
El archivo debería encontrarse en /library/PaginasExternas/Listeners/
donde dice:
deberíamos editarlo con los datos de la página que queremos que sea la default, en este caso configuraremos para que la página "paginauno" sea la default.
reemplazamos por:
Como añadir una página con un page_container (contenedor) diferente.
Para añadir una página donde queremos usar otro page_container (contenedor de la página), osea, donde no queremos usar exactamente el mismo header de xenforo y el footer, y deseamos editar esto exclusivamente para esta página, debemos editar el archivo de la página correspondiente, por ejemplo, holamundo.php
debemos reemplazar:
por:
Entonces podremos editar la plantilla holamundo como si fuera una página .php más en el sitio, y podremos agregar un header personalizado, por ejemplo.
Espero que te sea de ayuda, y si tenéis alguna duda consúltanos!
1er paso:
Antes que nada debemos crear ciertos archivos, que detallo a continuación, estos archivos y carpetas deberán ser creados.
Para añadir una página a este conjunto a "Paginas Externas" primero deberás crear un archivo php que llamaremos Holamundo.php
Este lo guardaremos en /library/ PaginasExternas/ControllerPublic/
El contenido sería el siguiente:
PHP:
<?php
class PaginasExternas_ControllerPublic_Holamundo extends XenForo_ControllerPublic_Abstract
{
public function actionIndex()
{
$visitor = XenForo_Visitor::getInstance();
$sessionModel = $this->getModelFromCache('XenForo_Model_Session');
$onlineUsers = $sessionModel->getSessionActivityQuickList(
$visitor->toArray(),
array('cutOff' => array('>', $sessionModel->getOnlineStatusTimeout())),
($visitor['user_id'] ? $visitor->toArray() : null)
);
$boardTotals = $this->getModelFromCache('XenForo_Model_DataRegistry')->get('boardTotals');
if (!$boardTotals)
$boardTotals = $this->getModelFromCache('XenForo_Model_Counters')->rebuildBoardTotalsCounter();
$viewParams = array(
'onlineUsers' => $onlineUsers,
'boardTotals' => $boardTotals
);
return $this->responseView('PaginasExternas_ViewPublic_Holamundo', 'Holamundo', $viewParams);
}
}
2do paso:
Ahora debemos crear un archivo llamado Navigation.php el cual deberemos guardarlo en /library/ PaginasExternas/Listeners/
El contenido deberá ser el siguiente:
PHP:
<?php
class PaginasExternas_Listeners_Navigation
{
public static function navtabs(array &$extraTabs, $selectedTabId)
{
$extraTabs['paginas/holamundo'] = array(
'title' => new XenForo_Phrase('Holamundo'),
'href' => XenForo_Link::buildPublicLink('full:paginas/holamundo/'),
'selected' => ($selectedTabId == 'paginas/holamundo/'),
'position' => 'middle',
);
}
}
3er paso:
Ahora nos falta añadir el código para el prefijo de ruta, el archivo se tendría que llamar paginas.php y debemos guardarlo en /library/PaginasExternas/Route/Prefix/
El contenido deberá ser el siguiente:
PHP:
<?php
class PaginasExternas_Route_Prefix_Paginas implements XenForo_Route_Interface
{
public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router)
{
$urlComponents = explode('/', $routePath);
$subPrefix = strtolower(array_shift($urlComponents));
switch($subPrefix)
{
case 'holamundo':
$controllerName = 'PaginasExternas_ControllerPublic_Holamundo';
$routeName = 'paginas/holamundo/';
break;
default:
$controllerName = 'PaginasExternas_ControllerPublic_Holamundo';
$routeName = 'paginas/holamundo/';
break;
}
return $router->getRouteMatch($controllerName, 'index', $routeName, $routePath);
}
}
4to paso:
Crear un Complemento (Necesitarás configurar el modo debug en el config.php de tu foro)
Add-on ID: PaginasExternas
Título: Páginas Externas
Version Serie: 1
Version ID: 1
5to paso:
Crea una ruta en la siguiente URL: /admin.php?route-prefixes/
Prefijo de ruta: paginas
Tipo de ruta: Publica
Clase de la ruta: PaginasExternas_Route_Prefix_paginas
Usar clase para crear enlace: Siempre
Complemento: Páginas Externas
6to paso:
Crear un detector de código de eventos (Opcional, solo si deseas añadir una pestaña en la navegación para tus páginas externas)
Detectar el evento: navigation_tabs
Retrollamada a ejecutar: PaginasExternas_Listeners_Navigation::navtabs
Retrollamada - Orden de ejecución: 1
Complemento: Páginas Externas
7mo paso:
Ahora lo último que nos queda es crear la plantilla holamundo donde incluiremos el contenido de la página que estamos realizando.
Añadir otra página en /paginas/
1er paso:
Debemos crear un fichero con el nombre de la página que queramos añadir, ej: Paginauno.php
(recuerden que uso paginauno como ejemplo, ustedes pueden usar cualquier otro nombre, como Publicidad, pero recuerden respetar donde está cada mayúscula, no usar siempre Publicidad o publicidad, hay secciones donde requiere tener una mayúscula en la primera letra de la página).
Este lo guardaremos en /library/ PaginasExternas/ControllerPublic/
El contenido sería el siguiente:
PHP:
<?php
class PaginasExternas_ControllerPublic_Paginauno extends XenForo_ControllerPublic_Abstract
{
public function actionIndex()
{
return $this->responseView('PaginasExternas_ViewPublic_Paginauno', 'Paginauno', $viewParams);
}
}
2do paso:
Ahora deberemos editar el archivo navigation.php que se encuentra en /library/PaginasExternas/Listeners/
después de
PHP:
public static function navtabs(array &$extraTabs, $selectedTabId)
{
PHP:
$extraTabs['paginas/paginauno'] = array(
'title' => new XenForo_Phrase('Paginauno'),
'href' => XenForo_Link::buildPublicLink('full:paginas/paginauno/'),
'selected' => ($selectedTabId == 'paginas/paginauno/'),
'position' => 'middle',
);
3er paso:
Ahora nos queda editar el archivo paginas.php
Este archivo tendría que estar en /library/PaginasExternas/Route/Prefix/
Después de:
PHP:
switch($subPrefix)
{
PHP:
case 'paginauno':
$controllerName = 'PaginasExternas_ControllerPublic_Paginauno';
$routeName = 'paginas/paginauno/';
break;
4to paso:
Solo nos quedaría crear una plantilla con el nombre de la página que hemos creado (paginauno) y listo, añadimos otra página externa!
Cambiar página defecto de /paginas/
Para realizar esto deberemos editar el archivo paginas.php
El archivo debería encontrarse en /library/PaginasExternas/Listeners/
donde dice:
PHP:
default:
$controllerName = 'PaginasExternas_ControllerPublic_Holamundo';
$routeName = 'paginas/holamundo/';
break;
reemplazamos por:
PHP:
default:
$controllerName = 'PaginasExternas_ControllerPublic_Paginauno';
$routeName = 'paginas/paginauno/';
break;
Como añadir una página con un page_container (contenedor) diferente.
Para añadir una página donde queremos usar otro page_container (contenedor de la página), osea, donde no queremos usar exactamente el mismo header de xenforo y el footer, y deseamos editar esto exclusivamente para esta página, debemos editar el archivo de la página correspondiente, por ejemplo, holamundo.php
debemos reemplazar:
PHP:
return $this->responseView('PaginasExternas_ViewPublic_Holamundo', 'Holamundo', $viewParams);
PHP:
return $this->responseView(
'PaginasExternas_ViewPublic_Holamundo', // view name
'Holamundo', // content template
$viewParams, // data to be passed to content template
array('containerTemplate' =>
'Holamundo') // container template
);