A ver, en un post habia comentado que se fijen en como esta hecho un mod para smf (mas precisamente el del chat) que es muy sumple de copiar, pero como solo comente, ahora voy a ir un poco mas profundo.
Para simplificar las cosas supongamos que queres agregar un boton en el menu superior llamado inserta que solo se encarga de mostrar el archivo cosas.html envuelto con el entorno grafico de SMF.
Necesitamos hacer algunas cosas para esto...
Debemos editar el archivo /index.php, fijarse que cerca de la linea 213 (puede depender de la version de SMF, aca me refiero a la version 1.1.4) estan las siguientes lineas:
// Here's the monstrous $_REQUEST['action'] array - $_REQUEST['action'] => array($file, $function).
$actionArray = array(
'activate' => array('Register.php', 'Activate'),
'admin' => array('Admin.php', 'Admin'),
... snip ...
'who' => array('Who.php', 'Who'),
'.xml' => array('News.php', 'ShowXmlFeed'),
);
Ese array es donde se definen las acciones que smf manejara y ahi mismo es donde debemos agregar la nuestra, por ende agregamos una componente mas al arreglo, esta sera
'inserta' => array('inserta.php', 'inserta'),
Ahora SMF acepta la accion inserta (?action=inserta en la url).
Guardamos el archivo y luego procedemos con crear los archivos de sooprta para inserta.
En /Sources debemos crear el archivo inserta.php que es un mini front-end que se encarga de llamar a la funcion:
<?php
if (!defined('SMF'))
die('Hacking attempt...');
function inserta() { // este es el nombre que definimos en el array
loadTemplate('inserta'); // llama a inserta.template.php
}
?>
Y finalmente creamos el archivo que realmente hace todo el laburo; para eso dentro de /Themes/default creamos el inserta.template.php que es el que muestra el archivo que queriamos:
<?php
function template_main()
{
global $boarddir;
echo ' <table width="100%" border="0" cellspacing="0" cellpadding="4" align="center" class="tborder">
<tr class="titlebg">
<td>Inserta Cosas! hehehee.</td>
</tr><tr>
<td class="windowbg">';
$archivo = $boarddir. "/cosas.html";
if (file_exists($archivo)) {
include($archivo);
} else {
echo "Error: no existen cosas! whaaaaa!!.";
}
echo '
</td>
</tr>
</table>';
}
?>
Y listo! ahora podemos definir el boton del menu superior para que al hacer click en el llame a la url http://tuforo.com/index.php?action=inserta pero no voy a hablar sobre eso ya que la info de como hacerlo esta publicada por ahi (http://www.argentop2p.net/index.php?topic=50366.msg376637#msg376637).
Facil, no?
Una cosa a tener en cuenta, esto inserta el contenido de cosas.html y SMF se encarga de crear el header html y todo eso, por ende, cosas.html solo debe tener cuerpo HTML pero no definir <header> ni <html> ni <body>, solo contenido.
Baii
Predi sos un groso
una ves mas gracias :jaja:
Genial predi , me di cuenta que así esta hecho el faq y el chat en argento, así que ya cuando vuelva de la facu me pongo a probar ya que todo queda mas estético si mantiene el mismo theme.
Saludos y gracias!