J'ai réalisé sur la base du Squelette Epona un évolution pour gérer les événements sur plusieurs jours. (voir la mise en oeuvre sur http://www.yoleok.org). La première version utilisait les valeurs #DATE et #DATE_REDAC, mais j'ai abandonné cette solution car lourde à gérer pour les régates inscrites à l'agenda par de simples rédacteurs et J'ai opté par une utilisation particulière, mais aisée du champ #SURTITRE dans les articles de type Agenda. Une restriction : la limite est de 9 jours, suffisant pour mon usage. Le premier jour de l'évenement reste #DATE_REDAC. Les principales modifications sont : dans chaque squellette un calcul de la date de fin de ce type : $nbdays = substr ('#SURTITRE',0,1); if ( $nbdays < 1 || $nbdays > 9 ) $nbdays = 1; $date = ereg_replace("^([0-9]{4})-([0-9]{2})-([0-9]{2}).*$", "\\1\\2\\3", '#DATE_REDAC'); $year = substr($date,0,4); $month = substr($date,4,2); $day = substr($date,6,2); $datef = mktime ( 0 , 0 , 0 , $month , $day + $nbdays - 1 , $year ); Test sur $nbdays car si l'événement ne dure qu'un jour, il n'est pas utile de renseigner le surtitre. Dans le squelette {{rubrique-xx.html}} qui gère l'agenda annuel : modification des instructions dans la boucle d'affichage des événements : if ($nbdays == 1) $evcom[]= ' Le [(#DATE_REDAC|nom_jour)]'.' [(#DATE_REDAC|jour)]'.' : [(#TITRE|texte_script)]'.'[ ((#SOUSTITRE|texte_script))]'.'
'; else { $numjour = date ("w",$datef); $jour = date ("j",$datef); $evcom[]= ' Du [(#DATE_REDAC|nom_jour)]'.' [(#DATE_REDAC|jour)] au '. $nomjour[$numjour] .' '. $jour.''.' : [(#TITRE|texte_script)]'.'[ ((#SOUSTITRE|texte_script))]'.'
'; } Plus un tableau initialisé avant la boucle $nomjour= array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'); Dans le squelette {{sommaire.html}} : Boucle initiale : for ( $i=$date ; $i <= $datef ; $i++) { $events[$i][] = '#URL_ARTICLE'; $titres[$i][] = '#TITRE'; } La boucle for n'est pas très propre quand $date et $datef sont sur des mois différents (passage de 20040731 à 20040801 pour l'open de France soit 70 valeurs pour 2 jours !) ou pire, des années différentes, la boucle devient inutilement longue ! Heureusement nous n'avons pas de régate sur le nouvel an, donc pas de tests compliqués pour l'instant ! Boucle suivante avec intégration des titres multiples dans le tableau (comme epona 1.3) : if (count($events[date('Ymd', $Time)]) == 1) { $case .= ''.date('j', $Time).''; } else { reset($titres); list($key, $val) = each($titres[date('Ymd', $Time)]); $case .= ''.date('j', $Time).''; } Enfin le squelette {{agenda.html}} reçoit le même type de modification : Définition du $datefin comme le $datef du sommaire puis for ($i=$dateEvt ; $i <= $dateFin ; $i++) { $region[$i][] = array('rub' => #ID_RUBRIQUE, 'link' => '#URL_ARTICLE', 'title' => '[(#TITRE|texte_script)]', 'logo' => ''); } Dernière modif dans article.html : un petit test pour ne pas afficher le surtitre, mais la période dans les articles de type agenda : 25) echo '[
(#SURTITRE)
]' ; else { $nbdays = substr ('#SURTITRE',0,1); if ( $nbdays < 1 || $nbdays > 9 ) $nbdays = 1; if ($nbdays == 1) echo ' Le [(#DATE_REDAC|nom_jour)]'.' [(#DATE_REDAC|jour)]'.' [(#DATE_REDAC|nom_mois)]'.'
'; else { $date = ereg_replace("^([0-9]{4})-([0-9]{2})-([0-9]{2}).*$", "\\1\\2\\3", '#DATE_REDAC'); $year = substr($date,0,4); $month = substr($date,4,2); $day = substr($date,6,2); $datef = mktime ( 0 , 0 , 0 , $month , $day + $nbdays - 1 , $year ); $numjour = date ("w",$datef); $jour = date ("j",$datef); $nomjour = array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'); echo ' Du [(#DATE_REDAC|nom_jour)]'.' [(#DATE_REDAC|jour)]'.' [(#DATE_REDAC|nom_mois)] au '.$nomjour[$numjour].' '.$jour.'
'; } } ?>