Simple Machines Community Forum

SMF Support => Español (Spanish) => Language Specific Support => Tutoriales => Topic started by: lucas-ruroken on April 23, 2010, 05:36:17 PM

Title: Banners diferentes por cada Foro
Post by: lucas-ruroken on April 23, 2010, 05:36:17 PM
Bueno en este tutorial paso a explicar como poder colocar baners diferentes por cada foro. Esto quiere decir que cada ves que un user entre a x foro si podra ver un banner asociado con ese foro en el que estemos.

Primero debemos localizar donde se encuentra nuestro banner en nuestro theme ya que no todos los themes son iguales. Por ejemplo en el Theme default de Smf 2.0 Rc3 y este se encuentra aqui:

<h1 class="forumtitle">
<a href="', $scripturl, '">', empty($context['header_logo_url_html_safe']) ? $context['forum_name'] : '<img src="' . $context['header_logo_url_html_safe'] . '" alt="' . $context['forum_name'] . '" />', '</a>
</h1>


Entonces un poquito mas arriba donde empiezan las globales vamos a crear una variable con nuestros diferentes logos.
Quote
Pongamos este ejemplo nosotros tenemos dos foros, uno con id 7 y otro con id 9

entonces despues de:

global $context, $settings, $options, $scripturl, $txt, $modSettings;


agregamos

$valid = array(
7 => 'url de imagen para el foro con id7.jpg',
9 => 'url de imagen para el foro con id9.jpg',
);

if(!empty($context['current_board']))
$logo = $valid[$context['current_board']];
else
$logo = 'logodefault.png';


En este caso la variable $logo contendra nuestro banner a usar :D y en este caso que es en el theme default iria asi:

en la parte anterior que menciona reemplazarian por esto:

<h1 class="forumtitle">
<a href="', $scripturl, '"><img src="'.$logo.'" alt="' . $context['forum_name'] . '" /></a>
</h1>';



Este es un ejemplo para el theme default, esto no significa que no pueda servir en los demas themes sino todo lo contrario. Solamente si quieren pueden preguntar y les respondere como adaptarlo

saludos

www.smfpersonal.net
Title: Re: Banners diferentes por cada Foro
Post by: Herr_Inoddorell on April 23, 2010, 06:28:34 PM
Gran tutorial lucas, más tarde le doy una probadita a todo esto.

Saludos!
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on April 23, 2010, 06:40:28 PM
ok man gracias

cualquier duda solo consultala

saludos
Title: Re: Banners diferentes por cada Foro
Post by: carlingas on June 20, 2010, 04:29:25 PM
hola lucas este no puedo modificar el  Banners de mi foro soy novato
me podrias esplicar como cambiarle gracias saludos cordiales
ftabin.webcindario.com/index.php
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on June 20, 2010, 08:57:14 PM
Pero que problema tienes?
Title: Re: Banners diferentes por cada Foro
Post by: DANIEL! on July 01, 2010, 06:36:34 PM
Amigo lean, lo podrias adaptar para la version  1.1.11  ::)
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 01, 2010, 07:42:21 PM
Lean? ....

Es lo mismo, esto es un ejemplo, solo deben "adaptarlo" por que en todos los themes sea de 1.1 o 2.0 el banner va a estar distinto.
Title: Re: Banners diferentes por cada Foro
Post by: DANIEL! on July 01, 2010, 07:45:26 PM
Quote from: lucas-ruroken on July 01, 2010, 07:42:21 PM
Lean? ....

Es lo mismo, esto es un ejemplo, solo deben "adaptarlo" por que en todos los themes sea de 1.1 o 2.0 el banner va a estar distinto.

XD! Perdon Lucas, esque estuve viendo el foro de lean y se me paso el nombre haha..
_____
Bueno lo que no consigo encontrar es esto:

<h1 class="forumtitle">
            <a href="', $scripturl, '">', empty($context['header_logo_url_html_safe']) ? $context['forum_name'] : '<img src="' . $context['header_logo_url_html_safe'] . '" alt="' . $context['forum_name'] . '" />', '</a>
         </h1>
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 02, 2010, 12:57:36 PM
Url de tu web y adjunta tu index.template.php.

Si quieres te explico como se hace, eso solamente vas a encontrar en el theme default, si es otro theme es muy probable que no este, con eso me referia a la posicion del banner.
Title: Re: Banners diferentes por cada Foro
Post by: lean on July 02, 2010, 05:43:18 PM
Lucas, no deberias dar soporte a un usuario que cambia el copyright del theme y encima lo hace linkeable a su web y no a la del diseñador del theme. Una verguenza que alla gente que haga estas cosas...
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 02, 2010, 06:17:24 PM
Ok no habia prestado atencion, estaba esperando a ver la url de su web.
Title: Re: Banners diferentes por cada Foro
Post by: DANIEL! on July 11, 2010, 10:10:06 PM
Aqui esta la URL de mi WEB:

www.latinozlife.com (http://www.latinozlife.com)
Quote from: lean on July 02, 2010, 05:43:18 PM
Lucas, no deberias dar soporte a un usuario que cambia el copyright del theme y encima lo hace linkeable a su web y no a la del diseñador del theme. Una verguenza que alla gente que haga estas cosas...

De verdad perdon, esque vi un tutorial de un amigo de como cambiar los creditos y bueno como he modificado cosas del theme tambien me quise dar un credito a mi , perdon ojala no pienses mal de mi amigo.., de verdad lo siento. Ojala comprendas, no volverá a suceder estoy muy apenado.
ahora pongo como estaba antes.

bueno :-[ , volviendo al tema aki te adjunto mi index.template.
http://www.megaupload.com/?d=KL0X6OH0

quiero que todas las zonas tengan el mismo logo excepto 4 zonas que son para mayores de 18.

Saludos y perdon por ese error del cual me arrepiento, ya lo arregle
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 11, 2010, 11:58:26 PM
Me apuntooo
Title: Re: Banners diferentes por cada Foro
Post by: zutzu on July 12, 2010, 12:08:43 AM
Quote from: Dди!€ℓeX! on July 11, 2010, 10:10:06 PM
Aqui esta la URL de mi WEB:

www.latinozlife.com (http://www.latinozlife.com)
Quote from: lean on July 02, 2010, 05:43:18 PM
Lucas, no deberias dar soporte a un usuario que cambia el copyright del theme y encima lo hace linkeable a su web y no a la del diseñador del theme. Una verguenza que alla gente que haga estas cosas...

De verdad perdon, esque vi un tutorial de un amigo de como cambiar los creditos y bueno como he modificado cosas del theme tambien me quise dar un credito a mi , perdon ojala no pienses mal de mi amigo.., de verdad lo siento. Ojala comprendas, no volverá a suceder estoy muy apenado.
ahora pongo como estaba antes.

bueno :-[ , volviendo al tema aki te adjunto mi index.template.
http://www.megaupload.com/?d=KL0X6OH0 (http://www.megaupload.com/?d=KL0X6OH0)

quiero que todas las zonas tengan el mismo logo excepto 4 zonas que son para mayores de 18.

Saludos y perdon por ese error del cual me arrepiento, ya lo arregle


Puedes colocar, Silentewave by Dzinerstudio
                           Modificado por lalalala

o algo similar, la idea respetar los créditos originales.
saludos!
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 12, 2010, 11:13:58 AM
A ver estuve buscando donde editar el logo pero no encontré!

Adjunto mi index.template, solo es necesario que me digan donde esta, así puedo editarlo y voy aprendiendo :)

http://www.megaupload.com/?d=8D9RSPBA
http://rapidshare.com/files/406553454/index.template.zip
pd: ya no se pueden adjuntar archivos en el foro?
Title: Re: Banners diferentes por cada Foro
Post by: zutzu on July 12, 2010, 12:19:11 PM
En esta zona al menos no.
Me parece que debes llegar a Simple Machines Hero (por que yo si puedo adjuntar.)
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 12, 2010, 12:29:32 PM
A hacer spam entonces!, no digo... denme una mano con mi index.template u_U
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 14, 2010, 01:21:57 PM
u.u Alguien me ayuda?
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 14, 2010, 09:00:23 PM
adjunta el index.template.php
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 14, 2010, 09:56:44 PM
Quote from: distante on July 12, 2010, 11:13:58 AM
http://rapidshare.com/files/406553454/index.template.zip

Ahí esta :)
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 14, 2010, 10:21:37 PM
el problema con tu logo es que  es atraves de css.... donce dice (creo) <div id="logo"></div> deberias poner

<div id="logo"><img src="RUTA DE IMAGEN" alt="" /></div>

y en el index.css buscas
#logo

y abajo dice background.... y borrar esa linea de background....
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 14, 2010, 11:48:25 PM
Quote from: lucas-ruroken on July 14, 2010, 10:21:37 PM
el problema con tu logo es que  es atraves de css.... donce dice (creo) <div id="logo"></div> deberias poner

<div id="logo"><img src="RUTA DE IMAGEN" alt="" /></div>

y en el index.css buscas
#logo

y abajo dice background.... y borrar esa linea de background....


Realmente dice <div id="logo"/></div>

Ningún problema con eso?  :-\
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 15, 2010, 02:39:41 PM
<div id="logo"/>

reemplazalo por lo que te dije...

<div id="logo"><img src="RUTA DE IMAGEN" alt="" /></div>
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 15, 2010, 04:31:08 PM
Oh ya me di cuenta de algo.

Yo no estoy usando el "logo" del theme, cuando adapte el theme a lo que yo quería, puse un logo.png de 1x1 transparente

Y lo que uso en la parte del logo es realmente lo que tengo definido como "top-banner"

Lo tengo así


      <div id="top-banner">


Es la linea 226 del index.template que adjunte.

Podría reemplazar igual <div id="top-banner"> por <div id="top-banner"><img src="RUTA DE IMAGEN" alt="" />

Y eliminar el background de #top-banner en el css?

Me salta la duda porque el  <div id="top-banner"> no tiene a su lado la etiqueta de cierre </div>

::)

U_u no soy muy pesado no?

Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 15, 2010, 09:52:44 PM
no, no eres pesado :P

si es cuestino de probar hasta que te quede en link y no en css.
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 16, 2010, 05:15:20 PM
Funciono perfecto :)
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 16, 2010, 06:07:22 PM
Creo que falta detallar algo.

Cuando no estas en el inicio del foro, pero tampoco quieres usar banner distinto, no funciona bien el script

Mira:

www.forosperuanos.net aquí todo bien

Pero en

http://www.forosperuanos.net/cocina-y-reposteria/

No me muestra el background, en el codigo fuente sale que el src esta vacío:

Code ("Codigo fuente visto desde firefox") Select
<div id="top-banner"><img src="" alt="" />


Hice los cambios así:


global $context, $settings, $options, $scripturl, $txt, $modSettings, $logo;
$valid = array(
   79 => 'http://www.forosperuanos.net/Themes/x-mas_20rc2/images/banners/top-papeleras9-79.png',
   9 => 'http://www.forosperuanos.net/Themes/x-mas_20rc2/images/banners/top-papeleras9-79.png',
   26 => 'http://www.forosperuanos.net/Themes/x-mas_20rc2/images/banners/top-sexualidad26.png',
);

if(!empty($context['current_board']))
   $logo = $valid[$context['current_board']];
else
   $logo = 'MIURL/images/custom/top-banner.png';


Creo que falta una parte de código donde diga "si no existe en el array entonces.." o algo así?




Edit!

Luego de mucho rato tratando logre hacer el php necesario y le puse un par de controladores por si alguien quiere activarlo y ver como funciona.

Quedo así

/Si  En board actual devuelve FALSO al empty (es decir si tenemos un ID de subforo) entonces, uso el logo del array
If(!empty($context['current_board']))
{
$logo = $valid[$context['current_board']];
// echo' El primer logo es........................'.$logo.'<br/>';
}
//si el contenido de la variable Logo es menor de 3 caracteres
If (strlen($logo) < "3" )
{
$logo = 'MIURL/images/custom/top-banner.png';
      //  echo' El logo luego de comparativo de vacio es '.$logo.'<br/>';
}


La otra parte

<div id="top-banner"><img src="'.$logo.'" alt="" />

Ahora todo funciona bien, si tengo una imagen hecha para un foro sale esa imagen como aquí:

http://www.forosperuanos.net/sexualidad/
http://www.forosperuanos.net/la-papelera/

Y si no esta definido, usa la imagen por defecto como aquí:

http://www.forosperuanos.net/
http://www.forosperuanos.net/software-y-hardware/

O en cualquier otro subforo!

Lo único malo es que en mi log de errores me bota estos 2  errores

Quote from: Primer Error: Linea 236 Index.Template
8: Undefined variable: logo
==>236:      If (strlen($logo) < "3" )


Cosa que no entiendo porque declaré la variable $logo en los globales!

Quote from: Segundo erro: Linea 232 Index.Template
8: Undefined index: 5
==>232:         $logo = $valid[$context['current_board']];
Este Realmente varia mucho,
Quote8: Undefined index: 5
8: Undefined index: 17
8: Undefined index: 60
y es que es el número que da el 'current_board'

Alguna idea? de como eliminar estos errores? porque mi log se esta llenando demasiado! :P

De paso quizás uno de nuestros gurús de php me pueden ayudar a hacer más liviano ese código, me parece que esta haciendo un poquitoooo lento el foro. :-\
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 17, 2010, 11:13:35 AM
reemplaza

if(!empty($context['current_board']))

por

if(!empty($context['current_board']) && !empty($valid['$context['current_board']))
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 17, 2010, 12:11:59 PM
Eso es para eliminar el error del log no?  o_o

Como quedaría el código al final? así?

/Si  En board actual devuelve FALSO al empty (es decir si tenemos un ID de subforo) entonces, uso el logo del array
if(!empty($context['current_board']) && !empty($valid['$context['current_board']))
   {
      $logo = $valid[$context['current_board']];
   //   echo' El primer logo es........................'.$logo.'<br/>';
   }
//si el contenido de la variable Logo es menor de 3 caracteres
   If (strlen($logo) < "3" )
      {
       $logo = 'MIURL/images/custom/top-banner.png';
      //  echo' El logo luego de comparativo de vacio es '.$logo.'<br/>';
      }


o así?


/Si  En board actual devuelve FALSO al empty (es decir si tenemos un ID de subforo) entonces, uso el logo del array
if(!empty($context['current_board']) && !empty($valid['$context['current_board']))
   {
      $logo = $valid[$context['current_board']];
   //   echo' El primer logo es........................'.$logo.'<br/>';
   }
ELSE
      {
       $logo = 'MIURL/images/custom/top-banner.png';
      //  echo' El logo luego de comparativo de vacio es '.$logo.'<br/>';
      }


u.u'
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 17, 2010, 12:22:07 PM
si, con respecto al codigo es liviano, demasiado liviano, no tiene nada que pueda ralentizar el foro.

pero cual es el problema en esto?

Cuando vos pones banners diferentes en cada foro, el navegador tiene que recargar esa imagen, si vos tuvieras un unico banner, esa imagen queda guardada en el cache y entonces se hace mas rapido.

Simplemente por eso, el codigo es muy liviano, no tiene ninguna complicacion
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 17, 2010, 12:35:30 PM
ah, si, parece que estaba bajando muchas cosas en la madrugada u.u'

Entonces uso el primero no?

/Si  En board actual devuelve FALSO al empty (es decir si tenemos un ID de subforo) entonces, uso el logo del array
if(!empty($context['current_board']) && !empty($valid['$context['current_board']))
   {
      $logo = $valid[$context['current_board']];
   //   echo' El primer logo es........................'.$logo.'<br/>';
   }
//si el contenido de la variable Logo es menor de 3 caracteres
   If (strlen($logo) < "3" )
      {
       $logo = 'MIURL/images/custom/top-banner.png';
      //  echo' El logo luego de comparativo de vacio es '.$logo.'<br/>';
      }



:) gracias eh
:P deberías hacerlo mod! aunque vi uno por ahí pero no hacia esto ultimo

Title: Re: Banners diferentes por cada Foro
Post by: distante on July 17, 2010, 12:53:28 PM
Tengo un problemilla

con la linea que me diste

if(!empty($context['current_board']) && !empty($valid['$context['current_board']))

No se si tengo que cambiar un ) por un ] y ponerle un ', así:

if(!empty($context['current_board']) && !empty($valid['$context['current_board']]')

O debo quitarle la comilla inicial así:

if(!empty($context['current_board']) && !empty($valid[$context['current_board']))

:-\
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 17, 2010, 01:38:41 PM
if(!empty($context['current_board']) && !empty($valid[$context['current_board']))

asi esta bien, sory

Con lo del mod lo hubiese hecho sin no fuera tan diferente en todos los themes....

dependiendo del theme es completamente diferente, el tuto esta sobre el theme default pero en otros themes como este es completamente diferente.
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 17, 2010, 01:53:13 PM
Lo puse así y me boto este error:

Parse error: syntax error, unexpected ')', expecting ']' in index.template.php  on line 230

230 es la linea de ese código u.u
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 17, 2010, 02:01:29 PM
;D

if(!empty($context['current_board']) && !empty($valid[$context['current_board']]))
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 17, 2010, 02:09:03 PM
xD !!! malogrando se aprende?

Yaaaa había visto que faltaba el corchete :P

Gracias lucas! ^^
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 17, 2010, 02:26:01 PM
de nada, cualquier duda, aca andaremos
Title: Re: Banners diferentes por cada Foro
Post by: zutzu on July 17, 2010, 05:40:15 PM
Estuve viendo y guiándome un poco del CBI, y de esta forma también puede lograrse lo mismo.
paso a colocar lo que hice para los interesados.

Al index.template, se agrega o suplanta este div por el div que contiene su logo.
<div class="logo">';
    if(!empty($context['current_board']) && file_exists($settings['theme_dir'] . '/logos/foro'.$context['current_board'].'.png'))
    echo'<img src="', $settings['theme_url'], '/logos/foro'.$context['current_board'].'.png" alt="' . $context['forum_name'] . '" />';
    else
    echo'<img src="', $settings['theme_url'], '/logos/logo.png" alt="' . $context['forum_name'] . '" />';
    echo'</div>


Solo se crearía la carpeta logos  en la carpeta del tema que usas, y dentro de ella estarían los logos de cada foro.
Al igual como el CBI, cada logo debe tener como nombre foro + el id del foro al que se le cambiar el logo. Ejem:

Tutema/logos/
                     foro1.png
                     foro2.png
                     foro3.png
                     foro4.png
                     foro5.png
                     ETC....
                     logo.png


logo.png se llamara el logo por default que se mostrara en su foro,y que también se mostrara si un foro no tiene logo propio.
claro esta que pueden modificar la extensión,nombre,dirección,la clase,etc.

saludos, y ahí tienen una alternativa mas.


PD. cualquier corrección de los gurus de php, háganlo saber :P
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 17, 2010, 05:47:09 PM
perfecto zutzu, el codigo mas simplificado seria asi:


if(!empty($context['current_board']) && file_exists($settings['theme_dir'] . '/logos/foro'.$context['current_board'].'.png'))
echo'<img src="', $settings['theme_url'], '/logos/foro'.$context['current_board'].'.png" alt="' . $context['forum_name'] . '" />';
else
echo' <img src="', $settings['theme_url'], '/logos/logo.png" alt="' . $context['forum_name'] . '" />';
Title: Re: Banners diferentes por cada Foro
Post by: zutzu on July 17, 2010, 05:53:52 PM
Gracias lukas, ya modifique el código simplificado. ;)
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 17, 2010, 05:55:33 PM
Perfect!
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 17, 2010, 06:58:53 PM
Esto haria el index.template menos pesado no? :-\
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 18, 2010, 02:51:58 PM
es igual.... son dos codigos muy liviano... son 2 o 3 linas nomas... piensa que smf tiene miles y miles de lineas, 2 no van a hacer la difernecia en este caso... y menos sino fuerzan a nada.
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 18, 2010, 02:53:47 PM
Me refiero a que (si por ejemplo) tengo 40 subforos, tendría que hacer 30 lineas extras al index.template.php y en el otro no.

O da igual?

:P estoy aprendiendo!
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 18, 2010, 05:48:25 PM
es lo mismo..... asi hagas 200 lineas no va a hacer mas lento en este caso
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 18, 2010, 06:16:19 PM
:P a bueno entonces me quedo con la modificación como la dijiste!

:D gracias!

A ver si me puedes dar una mano en el problema que tengo con los campos de edición de mi firma en el otro tema :(
Title: Re: Banners diferentes por cada Foro
Post by: lean on July 25, 2010, 02:36:44 AM
Y si quiero poner en ves de imagenes banners de adsence? Como podria hacerlo?
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 25, 2010, 04:02:28 AM
Quote from: lean on July 25, 2010, 02:36:44 AM
Y si quiero poner en ves de imagenes banners de adsence? Como podria hacerlo?
Para eso no seria mejor usar este mod? http://custom.simplemachines.org/mods/index.php?mod=255
Title: Re: Banners diferentes por cada Foro
Post by: lean on July 25, 2010, 11:11:51 AM
No, porque creo que ese mod te permite poner 1, no te muestra uno para cada foro.
Si tenes ese mod me podrias decir si se puede?

Que en un foro X salga un banner arriba de todo y en otro foro salga otra banner y asi?
Title: Re: Banners diferentes por cada Foro
Post by: distante on July 25, 2010, 11:50:30 AM
Si, con el mod puedes definir DONDE y como quieres que salga cada aviso. Puedes crear X avisos para X categorías distintas
Title: Re: Banners diferentes por cada Foro
Post by: lucas-ruroken on July 25, 2010, 01:27:33 PM
y en vez de poner en cada array la url de tu imagen, pones el banner de adsense... y luego remueves la parte que dice <img.. y dejas solo la variable

saludos