Agregar una pagina a nuestro foro (test.php)

imported_Jhonnyf Seguir

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
Bueno, esto es lo que deben saber para poder hacer una pagina nueva para su vBulletin, y los primeros pasos si desean hacer un plugin que necesite de una pagina php adicional.

PHP:
<?
// ######################## SET ENTORNO PHP ###########################
error_reporting(E_ALL & ~E_NOTICE);

// ##################### DEFINIR COSNTANTES IMPORTANTES #######################

define('THIS_SCRIPT', 'test');  
/*
este es el nombre de este Scrit, asi que en las plantillas podran usar una condicion asi:(en el Navbar o footer por ejemplo)
<if condition="THIS_SCRIPT == 'test'">
    No mostrar Adsense, algo especial etc, etc
</if>
*/
// #################### PRE-CACHE DATOS Y PLANTILLAS ######################
//Obtener Grupo de Frases  Especiales
$phrasegroups = array();

//Obtener Plantillas Especiales desde el datastore
$specialtemplates = array();

// pre-cache Plantillas usadas en todas las Acciones de este php
$globaltemplates = array(
        // Pon aqui todas las plantillas que hayas creado, pero curiosamente si no las pones, igualito funciona (esto es lenguaje c pues
        'test', //RECUERDA QUE ESTE ES EL NOMBRE DE LA PLANTILLA QUE CREASTE
);

// pre-cache Plantillas usadas para Acciones Estemplates used by specific actions
$actiontemplates = array();

// ########################## REQUERIDO ############################
require_once('./global.php'); //con esto cargas todas las opciones de vBulletin, ademas de la conexion, acceso a MySQL, etc, etc

// #######################################################################
// ######################## COMIENZO DEL SCRIPT PRINCIPAL ############################
// #######################################################################

$navbits = array(); 
$navbits[$parent] = 'Pagina de Prueba';  //esto se vera en el NavBar (el arbol que sale cuando entras a un tema, etc en el navbar)

$navbits = construct_navbits($navbits); //Que vBulletin lo compile a su manera
eval('$navbar = "' . fetch_template('navbar') . '";'); //Luego usamos esa compilacion con la plantilla navbar (que será llamado en la plantilla prueba
eval('print_output("' . fetch_template('test') . '");'); //y Finalmente llamamos a nuestra plantilla personalizada
?>
Lo grabamos como test.php y lo subimos al Hosting...
Si intentas entrar no verán nada ya que ese php no imprime nada de por si solo, imprime el contenido de la plantilla test, asi que creamos esa plantilla...

Vamos Estilos y Plantillas -> Administrador de Estilos ->

Abrimos el <<>> y en el combo escogemos CREAR NUEVA PLANTILLA
nuevaplantillayw2.jpg


en la plantilla ponemos lo siguiente (todo aqui es importante pero a la vez lo puedes sacar) y lo grabas como test

HTML:
$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>$vboptions[bbtitle] - NOMBRE QUE SALDRÁN COMO TITULO EN EL NAVEGADOR</title>
</head>
<body>

$header 
$navbar <!--Esto llama a la variable que se construyó en el php-->

 <!--INICIO DEL CONTENIDO QUE DESEAS MOSTRAR-->
 <!--Basicamente se hace para que se vea una tabla usando los colores de su foro-->
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" 

align="center">
<tr>
<td class="tcat">Titulo de la Tabla, usando los colores de Categoria</td>
</tr>
<tr>
<td class="alt1">una celda de un color </td>
</tr>
<tr>
<td class="alt2">Otra celda de otro color </td>
</tr>
<tr>
<td class="tfoot">Pîe de la Tabla</td>
</tr>
</table>

 <!--FIN DEL CONTENIDO QUE DESEAS MOSTRAR-->

$footer
</body>
</html>
Y finalmente entras asi tuforo.com/test.php


y para que aparesca en ONLINE cuando ven esa pagina... crea 2 plugin con la siguiente Estructura:
PHP:
Producto: vBulletin
Hook: online_location_process
Titulo del Plugin: Localizacion de Test
Codigo PHP del Plugin: 
if ($filename == 'test.php')
{
        $userinfo['activity'] = 'test';
}
Plugin Activo: Yes/Si
PHP:
Producto: vBulletin
Hook: online_location_unknown
Titulo: Localizacion (Parte 2)
PHP del Codigo: 
if ($userinfo['activity'] == 'test')
{
        $userinfo['action'] = 'Viendo Pagina Test';
        $userinfo['where'] = '<a href="./test.php?' . $vbulletin->session->vars['sessionurl'] . '">Pagina Test</a>';
        $handled = true;
}
Plugin Activo: Yes/Si
Y al final verán algo como esto (borre el logo y esas cosas porque es mi foro de prueba U_U)
nuevaplantilla11fc8.jpg
 

thecarnal

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 May 2008
Mensajes
419
Bueno ya tengo creada la pagina pero le puse el plugin para que salga en oonline :S pero no sale nose que me falta ... o que mas debo de hacer , haber si me das una mano para solucionar eso .

Gracias.
 

Actors

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
15 Oct 2008
Mensajes
141
Jhonny, en esta pagina nueva que tengo que poner al final para que aparezcan los WHO IS ONLINE.

Slaudos.
 

Actors

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
15 Oct 2008
Mensajes
141
si, eso si, pero para que aparezca el modulo WHOSONLINE al pie de la pagina creada?

No me aparece.... puse los dos modulos y no aparecio.
 

Actors

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
15 Oct 2008
Mensajes
141
este Modulo me gustaria que apareciera al pie de la pagina que yo cree. Como hago para llamarlo.

Sludos.

actors.jpg
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
ese modulo se llena con el index.php, de nada sirve que te indique que plantillas llamar, si no estan llenos con datos.......

pero si aun asi deseas incluirlo, la plantilla que arma el index es FORUMHOME y el que lo llena de datos es el index.php

por ejemplo, para usar el listado de los usuarios (solo listado) debes llamar en tu plantilla a <div>$activeusers</div> y para llenar esa plantilla debes poner en tu PHP el siguiente codigo:

PHP:
    // ### LOGGED IN USERS #################################################
$activeusers = '';
if (($vbulletin->options['displayloggedin'] == 1 OR $vbulletin->options['displayloggedin'] == 2 OR ($vbulletin->options['displayloggedin'] > 2 AND $vbulletin->userinfo['userid'])) AND !$show['search_engine'])
{
    require_once(DIR . '/includes/functions_bigthree.php');
    $datecut = TIMENOW - $vbulletin->options['cookietimeout'];
    $numbervisible = 0;
    $numberregistered = 0;
    $numberguest = 0;

    $hook_query_fields = $hook_query_joins = $hook_query_where = '';
    ($hook = vBulletinHook::fetch_hook('forumhome_loggedinuser_query')) ? eval($hook) : false;

    $forumusers = $db->query_read_slave("
        SELECT
            user.username, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid,
            session.userid, session.inforum, session.lastactivity,
            IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid
            $hook_query_fields
        FROM " . TABLE_PREFIX . "session AS session
        LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)
        $hook_query_joins
        WHERE session.lastactivity > $datecut
            $hook_query_where
        " . iif($vbulletin->options['displayloggedin'] == 1 OR $vbulletin->options['displayloggedin'] == 3, "ORDER BY username ASC") . "
    ");

    if ($vbulletin->userinfo['userid'])
    {
        // fakes the user being online for an initial page view of index.php
        $vbulletin->userinfo['joingroupid'] = iif($vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['usergroupid']);
        $userinfos = array
        (
            $vbulletin->userinfo['userid'] => array
            (
                'userid'            =>& $vbulletin->userinfo['userid'],
                'username'          =>& $vbulletin->userinfo['username'],
                'invisible'         =>& $vbulletin->userinfo['invisible'],
                'inforum'           => 0,
                'lastactivity'      => TIMENOW,
                'usergroupid'       =>& $vbulletin->userinfo['usergroupid'],
                'displaygroupid'    =>& $vbulletin->userinfo['displaygroupid'],
                'infractiongroupid' =>& $vbulletin->userinfo['infractiongroupid'],
            )
        );
    }
    else
    {
        $userinfos = array();
    }
    $inforum = array();

    while ($loggedin = $db->fetch_array($forumusers))
    {
        $userid = $loggedin['userid'];
        if (!$userid)
        {    // Guest
            $numberguest++;
            $inforum["$loggedin[inforum]"]++;
        }
        else if (empty($userinfos["$userid"]) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity']))
        {
            $userinfos["$userid"] = $loggedin;
        }
    }

    if (!$vbulletin->userinfo['userid'] AND $numberguest == 0)
    {
        $numberguest++;
    }

    foreach ($userinfos AS $userid => $loggedin)
    {
        $numberregistered++;
        if ($userid != $vbulletin->userinfo['userid'])
        {
            $inforum["$loggedin[inforum]"]++;
        }
        fetch_musername($loggedin);

        ($hook = vBulletinHook::fetch_hook('forumhome_loggedinuser')) ? eval($hook) : false;

        if (fetch_online_status($loggedin))
        {
            $numbervisible++;
            $show['comma_leader'] = ($activeusers != '');
            eval('$activeusers .= "' . fetch_template('forumhome_loggedinuser') . '";');
        }
    }
}
ese codigo es parte del index.php modificado para que use el
PHP:
    require_once(DIR . '/includes/functions_bigthree.php');
y asi pueda mostrarte la lista de usuario en linea (ojo, solo un listado comun)

Ver el ejemplo: http://www.ciudadanime.com/mostrar10.php
 

Actors

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
15 Oct 2008
Mensajes
141
Puf, muy complicado... pense que era un modulo que se llamaba con $whosonline... y chau....

Gracias Jhonny por todo...
 

ILUSION

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
21 Oct 2006
Mensajes
32
Disculpen por revivir, hice una página externa (sin plantilla) para poder incluír un formulario PHP pero la verdad, no puedo hacer que figure en la lista de online que estoy viendo esa página, para no crear un nuevo tema revivo este.

¿Alguna ayuda?

Saludos
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
está en este mismo tema, la condicion es que tu PHP tenga esta linea

PHP:
define('THIS_SCRIPT', 'test');

obviamente con el nombre de script que tu quieras y ese mismo nombre debes emplear al hacer los plugin en online_location_unknown y online_location_process
 

pappocapo

Dseda
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Feb 2008
Mensajes
1.008
Tengo una consulta sobre este tema. Luego de crearla y este funcionando correctamente, como hago para que esta pagina creda tenga permisos para ser visualizada solo por registrados?

edito...

creo que ya lo encontre en otra guia de jhonnyf
 
Arriba