• ¡Bienvenido a XenFácil!

    Estás viendo el sitio como Invitado. Para poder participar en este sitio

    y obtendrás privilegios adicionales, acceso a otras áreas y mucho mas.

    ¡Es gratis!


    ¿Ya eres miembro? Inicia sesión

Tutorial Crear Páginas Externas

Adrian Barabino

PoLiZeADM
XenForoUser
Mensajes
495
Puntuación de reacciones
266
Puntos
63
Sitio web
www.adrianbarabino.com.ar
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:

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)
    {
debemos agregar
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)
{
debemos colocar:
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;
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:
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);
por:
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
        );
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.
 
Arriba