COMO mostrar en Drupal 5 un bloque con las categorías a lo Wordpress
Drupal es un CMS estupendo, quizá excesivo para un simple weblog, pero desde luego es un gran CMS (no en vano ha sido elegido mejor CMS libre de 2007). Los que leen este blog regularmente ya saben que desde el principio (y ya hace algún tiempo...) uso Drupal para su gestión y aunque alguna vez pensé la migración a Wordpress, me alegro de no haberla hecho (uso wordpress en otros sitios y aún siendo enormemente sencillo de utilizar, no me da todo el manejo que sí me da éste).
Pero los que han usado/usan Drupal saben que hay pequeñas cosas a las que sus desarrolladores no prestan atención. Siendo un CMS fantástico, hay pequeños detalles que ayudan a que la cosa sea más amigable para todos. Es el caso que comentamos en este post: cualquiera que haya usado Wordpress sabe que casi todos los temas listan un pequeño bloque con las categorías y el número de posts incluídos en cada una. Veamos como ejemplo una captura de Vive Málaga (un blog construido sobre Wordpress).

¿Entendido? Pues nosotros, como buenos drupaleros, queremos exactamente lo mismo. No queremos ser menos que un usuario de wordpress cualquiera, capisci? No es tan difícil, aunque yo soy un patán que sin ayuda no hace nada, la solución es tan fácil como crear un bloque que ejecute código PHP y pegar el siguiente código (recuerda que esto es válido para Drupal 5):
$vid = 1; // Donde el $vid lo debes ajustar al id del vocabulary para el que quieres crear el bloque de categorías
$items = array();
$terms = taxonomy_get_tree($vid);
foreach ( $terms as $term )
{
$count = "(".db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d", $term->tid)).")";
$termdepth = "";
for ($i=0;$idepth;$i++)
{
$termdepth = $termdepth . "-- ";
}
$items[] = $termdepth . l($term->name, "taxonomy/term/$term->tid") . " $count";
}
if ( count($items) ) { print theme('item_list', $items);}
?>
Y eso es todo, ¿ven qué fácil? Espero que a algún usuario de Drupal esto le sirva, a mí me ha hecho un rey (antes cada vez que hacía una categoría nueva tenía que ir modificando el código html de un bloque que yo mismo hice, y la mitad de las veces lo olvidaba así que era un desastre).
*** Lo encontré como siempre, en la red donde todos los trucos buenos (y algunos malos :P) se comparten. En concreto lo ví en el portal de usuarios Persas de Drupal, para que luego digan que de Irán sólo salen cosas malas :)

Comentarios
cyfuss
3 de Febrero de 2008, a las 14:36
Enlace permanente
Interesante solucion para
Interesante solucion para conseguirlo. Yo uso drupal, y lo he conseguido con la instalacion de un modulo, (creo que es taxonomy, o algo asi), que directamente lo hace, entre otras cosas ;)
Juanacosta
3 de Abril de 2008, a las 18:16
Enlace permanente
Taxonomy en Drupal
Hola.
Yo tengo el módulo de taxonomy pero no se como hacer que la home muestre un bloque con la jerarquía, podrías explicar como lo has hecho?
Un saludo.
Juan
Chuso
4 de Febrero de 2008, a las 09:19
Enlace permanente
Así que Drupalero ¿ehh?
¡Pues te estás poniendo a huevo!
Si no has tenido ningún problemilla para programar eso en PHP, igual te caen diez o doce cosas más.
Hablamossss!!!
Jose Alcántara
4 de Febrero de 2008, a las 10:12
Enlace permanente
Está copiao!
del enlace que pongo al final del post, pero igualmente hablamos, dont worry! :)
Miguel
11 de Febrero de 2008, a las 10:21
Enlace permanente
Hosting gratuito para Drupal
Pues andaba buscando un hosting gratuito pra Drupal que funcionase jeje. ¿Cual es el que usas tú? ¿Has tenido muchos problemas para instalarlo?
Timidín
17 de Junio de 2008, a las 16:14
Enlace permanente
Interesante solución, el
Interesante solución, el módulo "sitemenu" hace eso, tanto en una página como en un bloque.
Timidín
25 de Junio de 2008, a las 18:37
Enlace permanente
duda con el codigo
hola estoy trabajando en drupal 5.0.
creo el bloque con el codigo que usted indica y le coloco el numero id del vocabulario y le indico que se muestre en la parte de abajo del contenido y me muestra es el codigo.
No se realmente que mas debo hacer. Agradezco su ayuda.
Jose Alcántara
25 de Junio de 2008, a las 21:26
Enlace permanente
En tipo de texto que irá en
En tipo de texto que irá en el bloque, ¿has puesto "PHP"? Si aparece el texto supongo que no se está ejecutando el código, por tanto creo que le has dicho que te muestre HTML capado o algo así.
Un bloque puede llevar HTML "capado" (sólo unas pocas etiquetas), HTML completo y PHP, yo diría que el problema viene por ahí, pero puede que haya algún detalle más que se me esté escapando.
Timidín
26 de Junio de 2008, a las 20:58
Enlace permanente
Efectivamente no había
Efectivamente no había puesto la etiqueta php, soy novata, jejejejeje. Gracias por su ayuda. Interesante la propuesta.
Diego
29 de Noviembre de 2008, a las 06:26
Enlace permanente
Lo hice pero no puedo verlo.
Hola, soy nuevo en drupal y realmente me esta costando mucho poder hacer lo que tu explicas en este post. Por otro lado no puedo creer como drupal no posee una opcion tan sencilla como esta, que muestre las categorias de la taxonomy.
He creado el bloque como tu lo indicas, y luego lo configure para que se vea en el side bar left. Pero no veo nada. Aqui dejo un ejemplo de como cree el bloque, tal vez omiti algo. La parte del cuerpo la deje vacia y el codigo lo puse mas abajo. Estoy usando druapal 6.x.
Espero que me puedas ayudar. Muchisimas gracias.
Jose Alcántara
29 de Noviembre de 2008, a las 09:51
Enlace permanente
Lo único que se me ocurre es
Lo único que se me ocurre es que en $vid (la variable que indica el id del vocabulary para el que quieres crear este bloque, en tu base de datos de drupal) no sea el apropiado. Prueba a poner $vid = 0, $vid = 2 y ejecutar el código php del bloque.
Yo lo puse para Drupal 5, pero el bloque se ha mantenido operativo y funcionando después de actualizar a Drupal 6 ya hace un tiempo.
Suerte.
Diego
2 de Diciembre de 2008, a las 21:04
Enlace permanente
¿Cómo sería el codigo?
Todavia no pude. Seguramente yo estoy haciendo algo mal. En taxonomia agregue el vocavulario "Musica" y dentro de Musica agregue los terminos "Rock" y "Pop". ¿Como seria la sintaxis en el codigo entonces? ¿Tendria que reemplazar $vid = 1 por $Musica = 1?
Gracias por la ayuda y disculpa la ignorancia.