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 .= "<$type" . drupal_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($children, NULL, $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'
);
}
?> - Version imprimable
- 2871 lectures
-

Commentaires
Poster un nouveau commentaire