Imagen de bea

Completar los breadcrumb teniendo en cuenta la url

Tags: 
breadcrumb
Descripción: 

Hay veces que con drupal los breadcrumb se nos quedan un pelin cortos. El siguiente código (un hook_nodeapi en un módulo), modifica el breadcrumb. En este caso teniendo en cuenta la url. Hay dos ejemplos:

  • /ejemplos/....
  • - Cuando estes en ejemplos el breadcrumb será:
    home >> Tipos de ejemplos (el enlace de ejemplos irá a: 'tipos_de_ejemplos' )

  • /proyectos/...
  • - Cuando estes en proyectos el breadcrumb será:
    home >> proyectos (el enlace de proyectos irá a: 'proyectos')

codigo_code: 
// drupal6
// En un modulo:
function nombre_modulo_nodeapi(&$node, $op, $teaser, $page) {
  if ($node->type == 'page'){  // si solo se lo vamos a cambiar por eje a las paginas
    switch ($op) {
      case 'view':
        $url = drupal_get_path_alias($_GET['q']);  // cogemos la url
        $uri = explode("/", $url);   // la separamos por las barras
        if(count($uri)>=1){  // si la url tiene mas de 1 apartao..
          // si x ejem solo nos interesa cnd la url empieza x ejemplos o proyectos
           if ($uri[0] == 'ejemplos' or $uri[0] == 'proyectos'){ 
             $enlace[] =  l('Home', '');  //la 1º parte del enlace
             for($i=0;$i<count($uri)-1;$i++){
              if($i>0) {
                $ant = $uri[$i-1]."/".$uri[$i];
               } else{
                 $ant = $uri[$i];
               }
               // si por ejemplo cuando empiece por ejemplos, queremos q el breadcurm marque: "Tipos de ejemplos" y con la url ("tipos_de_ejemplos"):
               if ($uri[$i] == 'ejemplos'){
                 $enlace[] = l('Tipos de ejemplos', "tipos_de_ejemplos");
               }
               // sino.. que ponga el nombre de la parte de la url y el enlace tb
               else{ 
                 $enlace[] = l(ucfirst(ereg_replace("_", " ", $uri[$i])), $ant);
               }
             }
             // guardamos el breadcrumb
             drupal_set_breadcrumb($enlace);
          }
      }
       break;
    }
  }
}

Comentarios

Cortando por lo sano

Bueno, desde luego que el codigo es interesante, gracias bea!

Imagino que conocereis el modulo http://drupal.org/project/custom_breadcrumbs que permite cosas parecidas.

Aunque quizas esta solucion, con un pathauto configurado como es debido puede ser mas sencillo.

En cualquier lugar, gracias por compartirlo!

Un saludo desde Barcelona,
Manuel

Todavía estamos montando esta cocina con Drupal, así que probablemente más de un detalle esté sin acabar en esta web

Inicio de sesión

Navegación

Comentarios recientes

Nuevos

  • fernando
  • dsevila
  • zialdoka
  • ek10
  • juanramonperez