Seleccionar idioma:
Realizar Donación - Mods Premium - Portfolio



Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.
* Tutorial utilizar SSI (Avanzado)
  Leído 3971 veces
* Viendo el foro
 0 Usuarios y 1 Visitante están viendo este foro.


*
Autor: lucas-ruroken
Jun 11 2010
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
Código: [Seleccionar]
<?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:
Código: [Seleccionar]
<?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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
<?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.
Código: [Seleccionar]
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:
Código: [Seleccionar]
<?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


« Última Modificación: Junio 11, 2010, 01:54:58 pm por lucas-ruroken »



Muchísimas gracias Lucas, la verdad que sos un grande y siempre respondes rápido y con la respuesta justa que yo busco.

Ahora tengo de donde empezar a unir mi web con mi smf y dejarla toda como a mi me gusta :D

Cualquier problemita que tenga ya se, me las tengo que arreglar solo :P
no mentira, cualquier cosa te chiflo :D

Gracias otra vez !!

Nos leemos




Si man, cualquier cosa me dices y no problem.

Un saludo.




Bueno lucas acá te dejo una screen de mis primeros pasos  :D




Después voy posteando mis avances :D




Con esto tambien puedes desarrollar bloques para adk (estaria bueno)

Na chiste, pero si quieres estaria bueno, en la zona de adkportal/español/tutoriales vas a ver uno tuto de 5 renglones :P y vas a ver que es como hacer un archivo en blanco.




Tengo una duda, yo tengo lo siguiente en el index.template

Código: [Seleccionar]
foreach ($context['menu_buttons'] as $act => $button)
{
echo '
<a href="', $button['href'], '"> ', $button['title'], '</a>';
}

a lo que me devuelve
Código: [Seleccionar]
Inicio   ForoLpp   Ayuda   Buscar   Admin   Moderar   Tu Cuenta   Mensajes   Usuarios   Salir

hay alguna manera de poder hacer que quede así:

Código: [Seleccionar]
Inicio :: ForoLpp :: Ayuda :: Buscar :: Admin :: Moderar :: Tu Cuenta :: Mensajes :: Usuarios :: Salir

Porque logro ponerlo, pero me salen los  ::  al inicio y final de la cadena también y no quiero eso.

osea me termina quedando así:
Código: [Seleccionar]
:: Inicio :: ForoLpp :: Ayuda :: Buscar :: Admin :: Moderar :: Tu Cuenta :: Mensajes :: Usuarios :: Salir ::

probe con implode() pero me tira error, no me deja poner el link  adentro del implode()

Pd: ¿que paso acá con todos los botones bbc para responder los mensajes? No me sale ninguno.




foreach ($context['menu_buttons'] as $act => $button)
$button[] =  '<a href="', $button['href'], '">   ', $button['title'], '[/url]';

echo implode(' :: ',$button);

Prueba de esa forma




no, me tira el mismo error que me tiraba a mi, en esta linea:

$button[] =  '<a href="', $button['href'], '">   ', $button['title'], '[/url]';

Citar

Parse error: syntax error, unexpected ',' in .../index.template.php  on line 482

473:       </td>';
474: }
475:
476: function template_menu2()
477: {
478:    global $context, $settings, $options, $scripturl, $txt;
479:
480: echo ' <font class="content"> ';
481: foreach ($context['menu_buttons'] as $act => $button)

482: $button[] =  '<a href="', $button['href'], '">   ', $button['title'], '[/url]';

483:
484: echo implode(' :: ',$button);
485:    echo '</font>';
486: }


ahora si modifico cualquier ','  el error cambia a :

Parse error: syntax error, unexpected T_VARIABLE




$button[] =  '<a href="'. $button['href']. '">   '. $button['title']. '[/url]';

intenta asi




Ya pude hacerlo :D

le cambie el nombre a la variable y separe el echo del foreach con {}
porque sino me devolvía todos los datos de los array

'title' => titulo
'href' => link
'show' => valor
'sub_buttons' => array

y me quedaba así:

inicio :: www.miweb.com.ar :: 1 :: array :: foro :: www.miforo.com.ar :: 1 :: array .... etc

asi quedo el código:

Código: [Seleccionar]
foreach ($context['menu_buttons'] as $act => $button) {
$buttons[] =  '<a href="'. $button['href']. '">   '. $button['title']. '</a>';


}
echo implode(' :: ',  $buttons );

Muchas gracias por la ayuda lucas  ;)




Otros temas de su interes




Usuario:
Contraseña:
Sesión:
hermes bracelet replica, christian louboutin replica, van cleef and arpels replica, red bottoms replica, cartier love bracelet replica christian louboutin replica, christian louboutin replica, hermes bracelet replica,