Tutorial utilizar SSI (Avanzado)

Started by lucas-ruroken, June 11, 2010, 12:19:05 PM

Previous topic - Next topic

lucas-ruroken

Tutorial utilizar SSI (Avanzado)

Este es un tutorial a pedido de mi friend Heracles. Con este tutorial veremos como usar el SSI, pero de una forma mucho mas personalizada, no simplemente poniendo el nombre de la funcion, sino que tambien poder trabajar con ella y darle un estilo propio.

Para entender este tutorial vamos a necesitar tener un minimo conocimiento PHP y HTML. Voy a tratar de explicar lo mas claro posible de todas formas.

Empezemos por algo simple, yo voy a trabajar con el SSI de SMF 2.0 pero en este caso es lo mismo para ambas versiones. Recomendaria que antes de empezar con esto lean Este tutorial, que es el inicio de SSI.

Empezemos con la funcion ssi_logout();

si nosotros en nuestro archivo colocamos

<?php
require_once("foro/SSI.php");
ssi_logout();
?>



Nos devolvera directamente el link para deslogearnos, pero esta funcion la podemos trabajar un poco más.

Por ejemplo:

<?php
require_once("foro/SSI.php");
$variable ssi_logout('','array');
echo
'<div align="center">'.$variable.'</div>';
?>



Lo que hacemos es decirle es guardar la funcion en una variable, y luego le damos otro estilo y posteamos el link.
Para saber que es lo que se va a guardar en la variable podemos abrir el SSI.php y buscar
function ssi_logout(

y ahi dentro de esa funcion donde dice return

if ($output_method == 'echo')
echo $link;
else
return $link;


Aca nos dice que si hubiesemos puesto asi ssi_logout('','echo'); o no hubiesemos puesto nada, se hubiese imprimido el link, pero nosotros pusimos 'array' por lo tanto nos devolverá con return y entonces se podrá guardar en la variable.

Espero que hasta acá allan entendido, cualquier cosa pueden preguntar.



Ok pasemos con algo mas avanzado  8).

Usemos la funcion ssi_recentTopics

Entramos al SSI.php y analizamos la funcion, buscamos function ssi_recenTopics(
y podremos ver que dice

function ssi_recentTopics($num_recent = 8, $exclude_boards = null, $include_boards = null, $output_method = 'echo')


Entonces nosotros podemos poner la cantidad o dejar el default (8), los foros que no quieres que salgan, los que quieres que salgan y si quieres que te imprima directamente o poder guardarlo en una variable. ('array','echo')

Nosotros preferimos aca guardarlo en una variable para poder darle nuestra forma. Entonces lo que vamos a hacer es lo siguiente

<?php
require_once("foro/SSI.php");
$variable ssi_recentTopics(10,NULL,NULL,'array');


Lo que hacemos aca es traer 10 temas, y todos los foros que se pueda ver y no excluimos nada (Siempre que el user tenga permiso ;))
Prosigamos:

Analizemos en que parte de la funcion nos devolvera la variable.

if ($output_method != 'echo' || empty($posts))
return $posts;


entonces miremos mas arriba y veremos de donde empìeza la variable $post
$posts[] = array(

y el gigante array ;D. Pero si miramos bien dice $post[], entonces eso quiere decir que tenemos un array y que para poder usar los 10 temas, tendremos que pasar por un foreach, while o for (Yo prefiero foreach).

Entonces para que nos quede todo bien bonito hacemos esto:

<?php
require_once("smf2theme/SSI.php");
$variable ssi_recentTopics(10,NULL,NULL,'array');

echo
'
<table border="1" align="center" width="100%" style="-moz-border-radius: 10px;">
<tr>
<td style="font-weight: bold;">
Tema
</td>
<td style="font-weight: bold;">
Foro
</td>
<td style="font-weight: bold;">
Autor
</td>
</tr>'
;
foreach(
$variable AS $var)
{
echo'
<tr>
<td>
'
.$var['subject'].'
</td>
<td>
'
.$var['board']['name'].'
</td>
<td>
'
.$var['poster']['name'].'
</td>
</tr>'
;
}
echo
'
</table>'
;
?>



Entonces lo que hacemos es darle un poco mas de forma (Oviamente con html le podemos dar todos los toques que querramos, nosotros acá aplicamos un toquesito de css3 nada más). y despues pasamos nuestra $variable por foreach y que eso se repita hasta el limite que dimos, o hasta que no halla mas temas.

Demo en un archivo en blanco: http://i48.tinypic.com/5kou81.jpg

De esta forma, pueden hacer lo mismo con cualquier variable SSI, es cuestion de que la analizen y ver que nos puede devolver.

Cualquier duda consultenla.

Lucas-ruroken
Adk Portal 3.1 is coming....

Design your universe!

zutzu

Gracias por la info lukas, muy útil en verdad, a leerlo detenidamente ;)

saludos!

lucas-ruroken

De nada zutzu, a mas de uno creo que le servira ;)
Adk Portal 3.1 is coming....

Design your universe!

vicram10

buen tuto, pero (siempre hay un pero ^-^ )
todo buen tutorial y avanzado tendría que agregar cada uno de los ssi explicado y con ejemplo y el resultado final (puedes usar una pagina demo tambien de paso)

de esa forma cubres todos los angulos y cada uno verá en accion cada cosa...

lucas-ruroken

Adk Portal 3.1 is coming....

Design your universe!

vicram10

Pero con explicacion incluida no como el ssi_example que solo muestra como queda.. sino para que todos sepan y aprendan a incluso usar de diferentes formas la misma funcion.... ahi si estaría completito y excelente para cualquier usuario que quiera aprender...

lucas-ruroken

ando armando eso precisamente, solo es cuestion de ver como me va a kedar :P pero me llevara un tiempo, pero ya traere lo que dices.
Adk Portal 3.1 is coming....

Design your universe!

^HeRaCLeS^

Estaría muy bueno un tutorial como el que piden.
De igual manera a mi me ayudo mucho este, me enseño como empezar a manejar los ssi y a comprender como modificarlos a mi antojo.

Gracias Lucas :D
^HeRaCLeS^
*¤×• Ni te molestes en enviarme un Mp porque el soporte lo doy solo por el foro •×¤*


SMFPersonal

lucas-ruroken

You're welcome, fue creado a pedido tuyo 8)
Adk Portal 3.1 is coming....

Design your universe!

Advertisement: