2Likes
Esta es una discusión para el tema Agregar una pagina a nuestro foro (test.php) en el foro Tutoriales de Programación, bajo la categoría Lenguajes de Programación; 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.
Código PHP:
<? ...
Página:
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.
Lo grabamos como test.php y lo subimos al Hosting...Código 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
?>
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
en la plantilla ponemos lo siguiente (todo aqui es importante pero a la vez lo puedes sacar) y lo grabas como test
Y finalmente entras asi tuforo.com/test.phpCódigo 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 para que aparesca en ONLINE cuando ven esa pagina... crea 2 plugin con la siguiente Estructura:
Código 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
Y al final verán algo como esto (borre el logo y esas cosas porque es mi foro de prueba U_U)Código 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
![]()
Última edición por Jhonnyf; 22/08/2009 a las 21:00
no me va :S
no se donde la e piciado
http://cwalkers.es/test.php
he aprendido algo nuevo jeje
genial!!! funciona!!
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.
Muchas gracias, me sirvió para hacer una página para las reglas del foro![]()
Jhonny, en esta pagina nueva que tengo que poner al final para que aparezcan los WHO IS ONLINE.
Slaudos.
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.
no se a que te refieres, con ese codigo sale en online.php
tuforo.com/foro/online.php
este Modulo me gustaria que apareciera al pie de la pagina que yo cree. Como hago para llamarlo.
Sludos.
![]()
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:
ese codigo es parte del index.php modificado para que use elCódigo 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') . '";');
}
}
}
y asi pueda mostrarte la lista de usuario en linea (ojo, solo un listado comun)Código PHP:require_once(DIR . '/includes/functions_bigthree.php');
Ver el ejemplo: http://www.ciudadanime.com/mostrar10.php
Puf, muy complicado... pense que era un modulo que se llamaba con $whosonline... y chau....
Gracias Jhonny por todo...
Última edición por mcloud; 17/12/2008 a las 13:13