Voilà, voilà... Fin de l'aventure...

 

Fermeture de kolossaldrupal.org dans...


Bonjour tout le monde,

Drupal évolue, les versions changent et Kolossaldrupal.org était essentiellement consacré à la version 6 de Drupal.

Autant dire que les infos présentées ici commencent à dater...

Faute de temps, je ne peux plus garder le site Kolossaldrupal à jour...

Je vous aurais bien proposé de reprendre le flambeau mais... c'est tellement simple de nos jours de se faire son propre site à soi...Pourquoi s'embêter alors ? :-)

Ce site restera donc en l'état, tel qu'il était en 2011...

Ah la la ! Cela ne nous rajeunit pas !

Manuel Vila - Avril 2016

Ajouter des classes « first » et « last » aux listes LI

Date du document en anglais : 23 Août 2009 - 15h34 - http://drupal.org/node/213711  



Comme dans le billet précédent, mais appliqué aux listes LI.

Le traitement des listes s'effectue dans les fonctions theme_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL)> qui peuvent être surchargées dans le fichier template.php. Il n'y a que quelques petits changements à effectuer pour que cela fonctionne (ajouter $item_key au foreach et vérifier le décompte pour déterminer si la class s'applique).

Copiez le code ci-dessous dans votre fichier template.php et ce sera tout :

<?php
function phptemplate_item_list($items = array(), $title NULL$type 'ul'$attributes NULL) {
  
$output '<div class="item-list">';
  if (isset(
$title)) {
    
$output .= '<h3>'$title .'</h3>';
  }

  if (!empty(
$items)) {
    
$output .= "<$typedrupal_attributes($attributes) . '>';
    foreach (
$items as $item_key=>$item) {
      
$attributes = array();
      
$children = array();
      if (
is_array($item)) {
        foreach (
$item as $key => $value) {
          if (
$key == 'data') {
            
$data $value;
          }
          elseif (
$key == 'children') {
            
$children $value;
          }
          else {
            
$attributes[$key] = $value;
          }
        }
      }
      else {
        
$data $item;
      }
  if (
count($children) > 0) {
        
$data .= theme_item_list($childrenNULL$type$attributes); // Render nested list
      
}
      if(
$item_key == 0) {
        
$attributes['class'] = (isset($attributes['class'])? $attributes['class'] .= ' first' 'first');
      } 
      elseif(
$item_key == count($items)-1){
        
$attributes['class'] = (isset($attributes['class'])? $attributes['class'] .= ' last' 'last');
      }     
      
$output .= '<li' drupal_attributes($attributes) . '>'$data .'</li>';
    }
/* end foreach */   
    
$output .= "</$type>"
  }
  
$output .= '</div>';
  return 
$output;
}
?>  

Bonus : zebra

Pour ajouter une classe zebra qui alternera les items de la liste (pas les balises php); ajoutez ce qui suit avant le $output .= '<li' . drupal_attributes($attributes) . '>'. $data .'</li>'; :

  <?php
if ($item_key 2) { 
    
$attributes['class'] = (
        isset(
$attributes['class']) 
            ? 
$attributes['class'] .= ' zebra' 
            
$attributes['class'] = 'zebra'
        
); 

?>