Completar los breadcrumb teniendo en cuenta la url (forma 2, mediante la variable $breadcrumb en el template)

// en el template.php
function _phptemplate_variables($hook, $vars = array()){
  switch ($hook) {
    case 'page':             
        $url = drupal_get_path_alias($_GET['q']);  // obtenemos la url dnd estamos
        $uri = explode("/", $url);
        if(count($uri)>=1){   // si la url esta formada por partres.. eje: /acciones/ejemplos/proyectos
          if ($uri[0] == 'acciones' or $uri[0] == 'comunicacion' or $uri[0] == 'modulos' ){   //una funcion de ejemplo que le decimos que solo entre si la url empieza por acciones, comunicacion, modulos, sino empiea así se saltará to esto y no creara ni modificara los breadcrumb.
            $enlace =  l('Principal', '');  // la 1º parte del breadcrumb
            for($i=0;$i<count($uri)-1;$i++){  // se va recorriendo para ir construyendo el breadcrumb
              if($i>0) {
                $ant = $uri[$i-1]."/".$uri[$i];
               } else{ 
                 $ant = $uri[$i];
               }
               if ($uri[$i] == 'modulos'){  //es una excepción.. si keremos k el titulo de esa parte del breadcrumb por ejemplo keremos k sea otra palabra k la de la url..asi en eeste ejemplo podemos cambiar "modulos" por "Modulos nuevos"
                 $enlace .= ' :: '.l('Módulos nuevos', $ant);i
              }
 
               else{  //sino el nombre es igual k el de la url
                 $enlace .= ' :: '.l(ucfirst(ereg_replace("_", " ", $uri[$i])), $ant);
              }
             }
           $vars['breadcrumb'] = '<div class="breadcrumb">'.$enlace.'</div>'; //guardo el valor en la variable de breadcrumb..
          }
        }
 
      break;
 
    }
    return $vars;
  }

Accesibilidad en las VIEWS de tipo TABLA

/**
 * Display the nodes of a view as a table.
 */
function phptemplate_views_view_table($view, $nodes, $type) {
  $fields = _views_get_fields();
 
  foreach ($nodes as $node) {
    $row = array();
    foreach ($view->field as $field) {
      if ($fields[$field['id']]['visible'] !== FALSE) {
        $cell['data'] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
        $cell['class'] = "view-field ". views_css_safe('view-field-'. $field['queryname']);
        $row[] = $cell;
      }
    }
    $rows[] = $row;
  }
  return theme('table', $view->table_header, $rows,  array('summary' => 'Views tables'));
}

Accesibilidad en href.. "ul", "object" ...

  // Los enlaces en un tpl.php, template... deben ser de la siguiente forma para que no
  // de error de validación
  // en el siguiente ejemplo son con variables:
  //  Link :  /link/$link_ultima_parte
  //  titulo: titulo_$proyecto
  <?php print '<li><a href="/link/'. $link_ultima_parte .'"> titulo_'. $proyecto .'</a></li>';?>
 
//otra accesibilidad..crear href con target
 
 <a href="http://link../"  onclick="target='_blank';"><img src="/sites/foto.jpg" alt="foto"/></a>

Completar los breadcrumb teniendo en cuenta la url

// 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;
    }
  }
}

Campos del cck con Allowed values list (lista de valores) - Php code

// Ejemplo de un campo tipo lista text, donde si eres el admin del sitio o
// perteneces al rol 4 las opciones son Sí y No. 
// El siguiente código meterlo en Php code (campo debado de Allowed values list)
global $user;
if ($user->uid == 1 or $user->roles[4] ){
$row[1] = 'Sí';
$row[2] = 'No';
return $row;
}

Accesibilidad. Tabla de ATTACHMENTS sin atributo summary

//En el template.php
 
function phptemplate_upload_attachments($files) {
   $attributes['summary'] = 'Attachment_table';
   $attributes['id'] = 'attachments';
 
  $header = array(t('Attachment'), t('Size'));
  $rows = array();
  foreach ($files as $file) {
    $file = (object)$file;
    if ($file->list && !$file->remove) {
      // Generate valid URL for both existing attachments and preview of new attachments (these have 'upload' in fid)
      $href = file_create_url((strpos($file->fid, 'upload') === FALSE ? $file->filepath : file_create_filename($file->filename, file_create_path())));
      $text = $file->description ? $file->description : $file->filename;
      $rows[] = array(l($text, $href), format_size($file->filesize));
    }
  }
  if (count($rows)) {
    return theme('table', $header, $rows, $attributes);
  }
}
 

Views fields relacionados con los usuarios, autores..

// En template.php
 
// Para el campo,Nodo: nombre de autor  
function phptemplate_username($object) {
  if ($object->uid && $object->name) {
    if (drupal_strlen($object->name) > 20) {
      $name = drupal_substr($object->name, 0, 15) .'...';
    }
    else {
      $name = $object->name;
    }
    if (user_access('access user profiles')) {
       // línea dónde se ha efectuado el cambio, se ha cambiado por 'user/'. $object->uid:
     $output = l($name, 'usuario/'. $object->name, array('title' => t('View user profile.')));
    }
    else {
      $output = check_plain($name);
    }
  }
  else if ($object->name) {
    if ($object->homepage) {
      $output = l($object->name, $object->homepage);
    }
    else {
      $output = check_plain($object->name);
    }
    $output .= ' ('. t('not verified') .')';
  }
  else {
    $output = variable_get('anonymous', t('Anonymous'));
  }
  return $output;
}
 
// Para el campo:  Node: Author picture
function phptemplate_user_picture($account) {
  if (variable_get('user_pictures', 0)) {
    if ($account->picture && file_exists($account->picture)) {
      $picture = file_create_url($account->picture);
    }
    else if (variable_get('user_picture_default', '')) {
      $picture = variable_get('user_picture_default', '');
    }
 
    if (isset($picture)) {
      $alt = t("@user's picture", array('@user' => $account->name ? $account->name : variable_get('anonymous', t('Anonymous'))));
      $picture = theme('image', $picture, $alt, $alt, '', FALSE);
      if (!empty($account->uid) && user_access('access user profiles')) {
         //la línea de cambio:
        $picture = l($picture, "usuario/$account->name", array('title' => t('View user profile.')), NULL, NULL, FALSE, TRUE);
      }
 
      return "<div class=\"picture\">$picture</div>";
    }
  }
}

Módulo OG: error en el argumento de las vistas => OG: Group nid(s)

//Fichero og_views.inc
 
// Línea 349, realizar siguiente cambio:
- return l($name, "node/". intval($query->group_nid));   // quitar esta linea
+ return l($name, $arg."/". intval($query->group_nid));  // añadir
 
 
// Línea 378, el siguiente:
- return l($name, "node/$query->group_nid");   //quitar
+ return l($name, "$arg/$query->group_nid");   //añadir

Accesibilidad bloque de suscripción de SIMPLENEWS

 // En el phptemplate
 
 function phptemplate_radio($element) {
 
  // Create a random number to append to the ID
  //This is required as with e.g. poll mudule, the poll
  // node appears twice resulting in duplicate IDs
 
  $new_rand_no = (mt_rand(10,1000000));
 
  _form_set_class($element, array('form-radio'));
  $output = '<input type="radio" ';
  $output .= 'name="' . $element['#name'] .'" ';
  $output .= 'value="'. $element['#return_value'] .'" ';
  $output .= 'id="'. $element['#id'] . '_' . $element['#return_value'] . $new_rand_no .'" ';
  $output .= (check_plain($element['#value']) == $element['#return_value']) ? ' checked="checked" ' : ' ';
  $output .= drupal_attributes($element['#attributes']) .' />';
  if (!is_null($element['#title'])) {
    $output = '<label class="option" for="' . $element['#id'] . '_' . $element['#return_value'] . $new_rand_no .'">'. $output .' '. $element['#title'] .'</label>';
  }
 
  unset($element['#title']);
  return theme('form_element', $element, $output);
}
 
 
// En una función form_alter
if ($form_id == 'simplenews_block_form') {
    $form['mail']['#default_value'] = 'correo';
}

Accesibilidad formulario de CONTACTO

// En un módulo, dentro de una función form_alter
 
  if ($form_id == 'contact_mail_page') {
    $form['mail']['#id'] = 'edit-mail-comment';
    $form['submit']['#id'] = 'edit-submit-comment';
 
    $form['name']['#default_value'] = 'Nombre';
    $form['subject']['#default_value'] = 'Asunto';
    $form['message']['#default_value'] = 'Mensaje';
    $form['mail']['#default_value'] = 'E-mail';
    $form['cid']['#default_value'] = 0;
}

Accesibilidad tablas de los filtros del módulo VIEWS

//En el template.php
 
function phptemplate_views_filters($form) {
  $view = $form['view']['#value'];
 
  foreach ($view->exposed_filter as $count => $expose) {
    $row[] = drupal_render($form["op$count"]) . drupal_render($form["filter$count"]);
    $label[] = $expose['label'];
  }
  $row[] = drupal_render($form['submit']);
  $label[] = ''; // so the column count is the same.
 
  // make the 'q' come first
  return drupal_render($form['q']) . theme('table', $label, array($row), array('summary' => 'Views filters') ) . drupal_render($form);
}

Accesibilidad tablas del módulo EVENT

// en el template.php
 
function phptemplate_event_calendar_month($op, $header, $rows, $attributes = array(), $caption = NULL) {
  $attributes['summary'] = 'Calendar';  
  $output = theme("table", $header, $rows, $attributes, $caption);
  return '<div class="event-calendar"><div class="month-view">'. $output ."</div></div>\n";
}

Diseño y desarrollo INVESTIC con DRUPAL