ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: Predicador en Mayo 06, 2008, 03:28:28

Título: Boton y mini MOD en SMF
Publicado por: Predicador en Mayo 06, 2008, 03:28:28
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:
Código (index.php) [Seleccionar]

// 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:
Código (inserta.php) [Seleccionar]

<?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:
Código (inserta.template.php) [Seleccionar]
<?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
Título: Re: Boton y mini MOD en SMF
Publicado por: cazador en Mayo 06, 2008, 06:57:04
Predi sos un groso
una ves mas gracias  :jaja:
Título: Re: Boton y mini MOD en SMF
Publicado por: 4kstore en Mayo 06, 2008, 11:28:28
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!