SummArg | Cursos y recursos para webmasters

29/06/2010

Sidebars diferentes por sección en un unico archivo sidebar.php

Muchas veces nos sucede que queremos un determinado contenido en la barra lateral (sidebar) de la página principal de nuestro sitio pero no así en otras. O bien estamos ante la necesidad de mostrar distintos contenidos en las barras laterales, según sea una entrada, una página o una categoría.
La solución esto es bastante sencillo, tan sólo se precisa establecer una función en PHP en el archivo de nuestra barra lateral y determinar el contenido.
Lo que debemos utilizar es una función condicional (un if) en PHP que haga el siguiente razonamiento: Si esta estamos en tal lugar, tal contenido debe mostrarse.
El código lo debemos insertar en el archivo sidebar.php (lo podemos modificar con un programa como Notepad++, Dreamweaver o desde el escritorio del WordPress en Apariencia>Editor). Allí es donde colocaremos el siguiente código:

<?php // si es home, entrada o categoría
if(is_home() || is_single() || is_category() ){ ?>
	<div id="sidebar-index">
	<?php // contenido aquí y cargamos la widgetized sidebar luego
	if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
	</div><!-- end of sidebar-index -->
<?php // si es pagina 1
} elseif(is_page('1')) { ?>
	<div id="sidebar-seccion">
	<?php // contenido personalizado de la pagina 1 y luego cargamos la widgetized sidebar
	if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
	</div><!-- end of sidebar-seccion -->
<?php } else { // todas las secciones
	<div id="sidebar-otros">
	<?php // contenido personalizado para el resto de las secciones y luego cargamos la widgetized sidebar
	if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
	</div><!-- end of sidebar-otros -->
<?php } ?> </div>

Tengan presente que los contenidos varían según sus necesidades. De tal manera podemos incluir como condicional varios parámetros: si es el home (página principal); o single (cualquier entrada); o page (cualquier página); o category (resultados de una categoría), etc. También tengan presente el ejemplo, en donde podemos elegir excluir o incluir en el condicional una entera seccion (home, single, page, etc) pero también podemos elegir que sea una en especial (is_page(‘2,6’) o is_category(‘id de la categoría que queramos’)).
También varían los contenidos de cada una de las sidebar que queramos. Ahí tenemos total libertad para incluir el contenido que deseemos: código html como tablas, divs, imágenes, o habilitar la inclusión de widgets, de haber.Recuerden siempre de abrir al comienzo de las líneas del código <?php { ; ?>, luego continuarlos en el silogismo <?php } { ; ?> y al terminar tiene que ser cerrado para no incurrir en error de sintaxis: <?php } ; ?>.

La utilización de estos condicionales es infinita, donde podemos determinar un contenido del sidebar para cada categoría, por ejemplo, o cada pagina de nuestro sitio, todo depende de nuestras necesidades. Lo más importante es entender el razonamiento que hace la función condicional y luego simplemente adaptarlo a lo que precisemos.

Dejar un comentario

  1. no se ve el codigo de este articulo

  2. Nekko

    Gracias por avisar, José. Ahí intenté solucionarlo.

  3. hola. quisiera saber si esto se puede hacer pero simplemente para cargar imagenes por separado!
    ejemplo, si estoy en la categoria Home, que me cargue 1.jpg
    si estoy en la categoria, contacto, que me cargue 2.jpg

    todo por php…
    se podra?

  4. Nekko

    Por supuesto, tenés que usar el criterio de los condicionales que ya estuvimos viendo en el Taller para crear themes WordPress desde cero.
    (eliminá los espacios en blanco que hay al inicio)
    < ?php if (in_category(1)) { ?>
    < ! -- imagen de la categoría 1 -->
    < ?php } elseif (in_category(2)) { ?>
    < ! -- imagen de la categoría 2 -->
    < ?php } else { echo 'mostrar otra cosa por defecto'; } endif; ?>

  5. muchisimas gracias Nekko!
    voy a ver si puedo con esa data q me pasas!!
    saludos y te cuento como me va 😀

  6. Lo probé en el ultimo wordpress pero me da error. Es necesario modificar algo para que sirva con la ultima versión?

  7. Nekko

    ¿Qué error te da?

Dejar un comentario