News:

Wondering if this will always be free?  See why free is better.

Main Menu

Banners diferentes por cada Foro

Started by lucas-ruroken, April 23, 2010, 05:36:17 PM

Previous topic - Next topic

lucas-ruroken

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
Adk Portal 3.1 is coming....

Design your universe!

Herr_Inoddorell

Gran tutorial lucas, más tarde le doy una probadita a todo esto.

Saludos!

lucas-ruroken

ok man gracias

cualquier duda solo consultala

saludos
Adk Portal 3.1 is coming....

Design your universe!

carlingas

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

lucas-ruroken

Adk Portal 3.1 is coming....

Design your universe!

DANIEL!

Amigo lean, lo podrias adaptar para la version  1.1.11  ::)
Mi Foro http://latinozlife.com
Version: 2RC4 Patch
Tema: Ocio





lucas-ruroken

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.
Adk Portal 3.1 is coming....

Design your universe!

DANIEL!

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>
Mi Foro http://latinozlife.com
Version: 2RC4 Patch
Tema: Ocio





lucas-ruroken

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.
Adk Portal 3.1 is coming....

Design your universe!

lean

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...

lucas-ruroken

Ok no habia prestado atencion, estaba esperando a ver la url de su web.
Adk Portal 3.1 is coming....

Design your universe!

DANIEL!

#11
Aqui esta la URL de mi WEB:

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
Mi Foro http://latinozlife.com
Version: 2RC4 Patch
Tema: Ocio





distante


zutzu

Quote from: Dди!€ℓeX! on July 11, 2010, 10:10:06 PM
Aqui esta la URL de mi WEB:

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


Puedes colocar, Silentewave by Dzinerstudio
                           Modificado por lalalala

o algo similar, la idea respetar los créditos originales.
saludos!

distante

#14
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?

zutzu

En esta zona al menos no.
Me parece que debes llegar a Simple Machines Hero (por que yo si puedo adjuntar.)

distante

A hacer spam entonces!, no digo... denme una mano con mi index.template u_U

distante


lucas-ruroken

Adk Portal 3.1 is coming....

Design your universe!


lucas-ruroken

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....
Adk Portal 3.1 is coming....

Design your universe!

distante

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?  :-\

lucas-ruroken

<div id="logo"/>

reemplazalo por lo que te dije...

<div id="logo"><img src="RUTA DE IMAGEN" alt="" /></div>
Adk Portal 3.1 is coming....

Design your universe!

distante

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?


lucas-ruroken

no, no eres pesado :P

si es cuestino de probar hasta que te quede en link y no en css.
Adk Portal 3.1 is coming....

Design your universe!

distante


distante

#26
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. :-\

lucas-ruroken

reemplaza

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

por

if(!empty($context['current_board']) && !empty($valid['$context['current_board']))
Adk Portal 3.1 is coming....

Design your universe!

distante

#28
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'

lucas-ruroken

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
Adk Portal 3.1 is coming....

Design your universe!

distante

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


distante

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']))

:-\

lucas-ruroken

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.
Adk Portal 3.1 is coming....

Design your universe!

distante

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

lucas-ruroken

;D

if(!empty($context['current_board']) && !empty($valid[$context['current_board']]))
Adk Portal 3.1 is coming....

Design your universe!

distante

xD !!! malogrando se aprende?

Yaaaa había visto que faltaba el corchete :P

Gracias lucas! ^^

lucas-ruroken

de nada, cualquier duda, aca andaremos
Adk Portal 3.1 is coming....

Design your universe!

zutzu

#37
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

lucas-ruroken

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'] . '" />';
Adk Portal 3.1 is coming....

Design your universe!

zutzu

Gracias lukas, ya modifique el código simplificado. ;)

lucas-ruroken

Adk Portal 3.1 is coming....

Design your universe!

distante

Esto haria el index.template menos pesado no? :-\

lucas-ruroken

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.
Adk Portal 3.1 is coming....

Design your universe!

distante

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!

lucas-ruroken

es lo mismo..... asi hagas 200 lineas no va a hacer mas lento en este caso
Adk Portal 3.1 is coming....

Design your universe!

distante

: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 :(

lean

Y si quiero poner en ves de imagenes banners de adsence? Como podria hacerlo?

distante

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

lean

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?

distante

Si, con el mod puedes definir DONDE y como quieres que salga cada aviso. Puedes crear X avisos para X categorías distintas

lucas-ruroken

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
Adk Portal 3.1 is coming....

Design your universe!

Advertisement: