Ajouter des classes « first » et « last » aux blocs

Date du document en anglais : 4 Mars 2010 - 23h29 - http://drupal.org/node/293188



Parfois, le premier ou le dernier bloc d'une région doit être d'un style différent des autres blocs. Pour avoir une classe « First » ou « Last » sur les premiers et derniers blocs d'une région, vous devez surcharger deux fonctions de thème : theme_block() et theme_blocks().

  1. Surcharger theme_blocks() :
    <?php

    function phptemplate_blocks($region) {
      
    $output '';

    if (
    $list block_list($region)) {
        
    $blockcounter 1// il y a au moins un bloc dans cette région
        
    foreach ($list as $key => $block) {
          
    // $key == <i>module</i>_<i>delta</i>
         
    $block->extraclass ''// ajout de la clé 'extraclass' à l'objet $block
         
    if ($blockcounter == 1){ // est-ce le premier bloc de la région ?
           
    $block->extraclass .= ' first'
          }
         if (
    $blockcounter == count($list)){ // est-ce le dernier bloc de la région ?
           
    $block->extraclass .= ' last';
         }
          
    $output .= theme('block'$block);
         
    $blockcounter++;
        }
      }

      
    // Ajout d'un contenu attribué à cette région via un appel à drupal_set_content()
      
    $output .= drupal_get_content($region);
    return 
    $output;
    }
    ?>  
  2. Surcharger theme_block() :
    <?php
    function phptemplate_block($block) {
        
    // dans cette ligne, l'extraclasse est ajoutée en tant que classe
        
    $output "<div class=\"block block-$block->module $block->extraclass\" 
            id=\"block-$block->module-$block->delta\">\n"

        
    $output .= " <h2 class=\"title\">$block->subject</h2>\n";
        
    $output .= " <div class=\"content\">$block->content</div>\n";
        
    $output .= "</div>\n";
        return 
    $output;
    }
    ?>  

C'est tout !

Commentaires

Localisation

Encore une information cruciale. Mais... dans quel fichier mettre ce code pour qu'il devienne actif ? J'ai pas trouvé ;) Encore merci pour ce travail considérable.

Si les concepts Drupal 5.x et

Si les concepts Drupal 5.x et 6.x sont similaires à cet égard, je placerais les fonctions dans le fichier template.php. Voir cette page : http://www.kolossaldrupal.org/docs/creer-sous-theme-vite-fait-mal-fait-q..., si cela peut aider.

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <css>, <php>, <html>, <ccss>, <ccss>, <drupal5>, <drupal6>, <html>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • You may use [view:viewname] tags to display listings of nodes.

Plus d'informations sur les options de formatage

CAPTCHA
Cette question permet d'éviter le spam :
9 + 3 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.