liste déroulante dans dans la barre latérale de Dotlcear

Vous avez peut-être remarqué que j’ai remplacé les listes des catégories et des archives dans la colonne de droite par des listes déroulantes. Ca prend moins de place et c’est plus joli (enfin, elles sont jolies sur Safari ;-)).

liste déroulantes dans Dotclear

Il suffit de modifier deux fonctions dans le fichier functions.php, qui se trouve dans layout. Voilà le code pour la fonction qui gère la liste des archives mensuelles (dcMonthsList). Il suffira de l’adapter pour les catégories (dcCatList), juste au dessus :

function dcMonthsList($block='<ul>%s</ul>',$item='<li>%s</li>')
{
      global $arry_months, $month, $year, $cat_id, $lang, $blog;
      $comp_url= '';
      if ($lang) {
               $comp_url .= $lang.'/';
      }
      if($cat_id) {
               $comp_url .= $cat_id.'/';
      }
      $res = '';
$res .= '<select size="1" name="D1" id="D1" //id pour que ça marche sous Safari
onchange="javascript:self.location=document.getElementById(\'D1\').value;">';
      foreach($arry_months as $ts => $d)
      {    
              $titre = dt::str('%B %Y',$ts);
              $url = sprintf($blog->front_url['archive'],$comp_url.date('Y',$ts),date('m',$ts));
//             $lien = '<a href="'.$url.'">%s</a>';
              $lien = '<option value="'.$url.'">%s</option>';
              $liClass = '';
              if($year == date('Y',$ts) && $month == date('m',$ts)) {
                       $lien = '<strong>'.$lien.'</strong>';
              }
              $res .= sprintf($item,sprintf($lien,$titre));
       }
$res .= '</select>';
       if (count($arry_months) > 0) {
              printf($block,$res);
       }
}

Enfin quand je dis “j’ai remplacé”, c’est surtout ma chère et tendre moitié à qui j’ai demandé de regarder “si tu as 5 minutes, je me demande si c’est possible de changer facilement les listes à puces créées automatiquement par Dotclear en liste déroulante ?“. Avec un peu de patience courage j’aurais pu le faire moi-même (si si!), mais j’y aurai passé un temps fou, là où elle a mis moins de 10 minutes. Et puis il fallait que je prépare le dîner 8-).

IMG_5556r.jpg

16 comments » Write a comment