Calendrier dans la sidebar

Bonjour à tous.

Je cherche à mettre un calendrier (dans la sidebar par ex.) avec les dates, cliquables, des articles publiés avec défilement des mois précédents.

Je n'ai pas encore cherché à le faire, j'y pense juste. Si vous avez des idées je suis preneur.

Bonne journée.

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    J'ai une version avec calendrier et jours cliquables.
    Faut que je retrouve ça, que je le mette à jour pour la 4.2 et que je vérifie si ça fonctionne :)

    Je te tiens au courant

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Edit 02/02/2010: correction bug pour ne pas prendre en compte les articles futurs

    Alors voilà...

    1. Créer à la racine de ton pluxml un dossier plugins
    2. Dans ce dossier créer un dossier calendar
    3. Dans ce dossier créer un fichier class.plx.calendar.php et colle dedans le code suivant
    <?php
    /**
     * Classe plxCalendar
     *
     * @version 1.0
     * @package PLX
     * @author	Stephane F
     **/
     
    class plxCalendar {
    
    	/**
    	 * Constructeur qui prend en charges l'affichage des archives sous forme de calendrier
    	 *
    	 * @param	null
    	 * @return	null
    	 * @author	Stephane F
    	 **/	
    	function plxCalendar() {
    	
    		global $plxMotor;
    	
    		if($plxMotor->get AND preg_match('/^archives\/?([0-9]{8}|[0-9]{6}|[0-9]{4})?/',$plxMotor->get,$capture)) {
    		
    			$plxMotor->mode = 'categorie'; # Mode categories (	nécessaire pour la pagination)
    			$plxMotor->plxGlob_arts = new plxGlob(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    			if ($aFiles = $plxMotor->plxGlob_arts->query('/[0-9]{4}.([0-9]{3}|home).'.$capture[1].'(.*).xml$/','archives',$plxMotor->tri,$plxMotor->bypage*($plxMotor->page-1),$plxMotor->bypage,'before')) {
    				$array = null;
    				foreach($aFiles as $k => $v) {
    					$array[] = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v);
    				}
    				$plxMotor->plxRecord_arts = new plxRecord($array);
    			}
    		}
    	
    	}
    	
    	/**
    	 * Méthode qui affiche un calendrier mettant en evidence les dates de parution d'articles
    	 *
    	 * @return	stdout
    	 * @author	Stephane F
    	 **/
    	function Calendar() {
    	
    		global $plxMotor;
    
    		preg_match('/^archives\/?([0-9]{4})([0-9]{2})([0-9]{2})?/', $plxMotor->get,$capture);
    		$y = isset($capture[1]) ? $capture[1] : date('Y');	
    		$m = isset($capture[2]) ? $capture[2] : date('m');
    		$d = isset($capture[3]) ? $capture[3] : date('d');
    
    		# on récupere la liste des jours où des articles ont été publiés
    		$aDays = array();
    		$plxGlob_archives = new plxGlob(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    		if ($aFiles = $plxGlob_archives->query('/^[0-9]{4}.([0-9]{3}|home).'.$y.$m.'(.*).xml$/'))
    			$aDays  = array_map(create_function('$f', 'preg_match(\'/^[0-9]{4}.([0-9]{3}|home).[0-9]{6}([0-9]{2})(.*).xml$/\', $f,$capture); return $capture[2];'), $aFiles);
    			
    		$date_string = mktime(0, 0, 0, $m, 1, $y );
    			
    		$day_start = date( 'w', $date_string ); // 1er jour de la semaine
    		if ( strftime( '%w', mktime( 0, 0, 0, 1, 1, 2007 ) ) != 0 ) {
    			$day_start = ( $day_start + 6 ) % 7;
    		}
    			
    		# mois/annee - suivant/precent
    		if ( $m < 12 ) {
    			$next_month = $m + 1;
    			$next_year = $y;
    		} else {
    			$next_year = $y + 1;
    			$next_month = 1;
    		}
    		if ( $m > 1 ) {
    			$previous_month = $m - 1;
    			$previous_year = $y;
    		} else {
    			$previous_year = $y - 1;
    			$previous_month = 12;
    		}
    		
    		$str = '
    
    		<table border="0" cellpadding="0" cellspacing="0" align="center" class="calendar">
    		<tr>
    		<td align="center">';
    		if ( ( ( $previous_year%100 )!=$y ) || ( $previous_month!=$m ) ) {
    			$str .= '<a href="index.php?archives/'.$previous_year.sprintf('%02d', $previous_month).'">«</a>';
    		}
    		$str .= '</td>
    		<td align="center" colspan="5">
    		<strong>
    		<a href="index.php?archives/'.$y.$m.'">'.ucwords(plxDate::getCalendar('month', $m)).'</a>
    		<a href="index.php?archives/'.$y.'">'.$y.'</a>
    		</strong></td>
    		<td align="center">';
    		if ( ( ( $next_year%100 )!=$y ) || ( $next_month!=$m ) ) {
    			$str .= '<a href="index.php?archives/'.$next_year.sprintf('%02d', $next_month).'">»</a>';
    		}
    		$str .= '</td>
    		</tr>
    		<tr>';
    		
    		for ( $i=0; $i<7; $i++ ) {
    
    			if ( $day_start!=0 ) {
    				$str .= '<td>'.substr(ucwords(plxDate::getCalendar('day', ($i+1)%7)), 0, 3).'</td>';
    			} else {
    				$str .= '<td>'.substr(ucwords(plxDate::getCalendar('day', ($i+1)%8)), 0, 3).'</td>';
    			}
    		}
    		
    		$str .= '</tr><tr>';
    			
    		# colonne vide avant le 1er jour
    		for ( $i = 0; $i<$day_start; $i++ ) {
    			$str .= '<td> </td>';
    		}
    		$current_position = $day_start;
    		$total_days_in_month = date( 't', $date_string); 
    
    		for ( $i = 1; $i<=$total_days_in_month; $i++) {
    				
    			$str .= '<td align="center">';
    				
    			$search = array_search($i, $aDays);
    			if ($search !== false && search !== NULL) {
    			
    				if (mktime( 0, 0, 0, $m, $i, $y) == mktime(0, 0, 0)) 
    					$str .= '<a class="today" href="index.php?archives/'.$y.$m.sprintf('%02d', $i).'" title="'.$i.'">'.$i.'</a>';
    				else
    					$str .= '<a href="index.php?archives/'.$y.$m.sprintf('%02d', $i).'" title="'.$i.'">'.$i.'</a>';					
    			
    			}
    			else {
    				if (mktime(0, 0, 0, $m, $i, $y) == mktime(0, 0, 0)) 
    					$str .= '<span class="today">'.$i.'</span>';
    					
    				else
    					$str .= $i;
    			}
    			
    			$str .= '</td>';
    			
    			$current_position++;
    			
    			if ( $current_position == 7 ) {
    				$str .= '</tr><tr>';
    				$current_position = 0;
    			}
    		}
    		$end_day = 7-$current_position;
    
    		//Dernieres colonnes
    		for ( $i = 0; $i<$end_day; $i++ ) {
    			$str .= '<td></td>';
    		}
    		$str .= "</tr>
    		</table>\n";
    		
    		echo $str;
    	}		
    }
    
    # création d'un instance de l'objet plxCalendar
    $plxCalendar = new plxCalendar();
    	
    ?>
    
    4. Dans le fichier header.php de ton thème en dessous de
    <?php if(!defined('PLX_ROOT')) exit; ?>
    
    ajoute la ligne suivante:
    <?php include(PLX_ROOT.'plugins/calendar/class.plx.calendar.php') ?>
    
    5. Dans le fichier sidebar.php de ton thème ajoute le code suivant, là où tu souhaites voir afficher le calendrier
    <div id="calendar">
    		<h2>Archives</h2>
    		<?php $plxCalendar->Calendar() ?>
    	</div>
    
    6. dans le feuille de style (fichier style.css), ajoute à la fin du fichier
    .today{ color:red }
    
    C'est tout

    Stéphane

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • excellent merci beaucoup. Je vais regarder cela de très prés prochainement.
  • ça devrait être dans le wiki, non ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Avant de publier sur le wiki, ça serait bien d'avoir des retours utilisateurs pour savoir si cela fonctionne bien et ne pas mettre du code bugué dans le wiki. Mais effectivement cela mérite d'y être rajouter.

    Merci pour ta remarque antistress

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • J'ai rapidement testé en local il y a quelques jours sur une version 4.3 et cela avait l'air de bien fonctionner. :)
  • Personnellement marche nickel chez moi ce calendrier ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bon ben y a plus qu'à le rajouter dans le wiki. merci du retour Fred

    nb: tous les membres inscrits sur le forum, ont la possibilité d'écrire sur le wiki

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Excellent ! Je découvre pluxml et suis grave séduit par la légèreté et la souplesse , bravo l'équipe !!!
    J'ai installé le calendar, mais serait-il possible de le lier à une page de type évènement ou tous les articles se positionnent tel un résultat de moteur de recherche pour afficher, justement, des évènements ?
  • Bonjour.

    Je viens de le tester, ça fonctionne.
    Mais (car il a un mais) ça affiche aussi les billets avec une date de publication future...
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour macgawel

    Effectivement, il faut donc remplacer la ligne

    if ($aFiles = $plxMotor->plxGlob_arts->query('/[0-9]{4}.([0-9]{3}|home).'.$capture[1].'(.*).xml$/','archives',$plxMotor->tri,$plxMotor->bypage*($plxMotor->page-1),$plxMotor->bypage)) {
    
    par
    if ($aFiles = $plxMotor->plxGlob_arts->query('/[0-9]{4}.([0-9]{3}|home).'.$capture[1].'(.*).xml$/','archives',$plxMotor->tri,$plxMotor->bypage*($plxMotor->page-1),$plxMotor->bypage,'before')) {
    
    Peux-tu me confirmer que c'est ok stp ?
    Merci

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonjour,
    Même après avoir changé la ligne indiquée le calendrier propose toujours les mois futurs...
    Je crois pas que c'est ok =D

    Merci
  • Salut à tous :)

    Alors alors, j'utilise PluXML depuis quelques semaines, version 5.0.2, et malheur le calendrier proposé plus haut ne fonctionne pas... J'ai donc pris mon courage à deux mains pour tenter d'y remédier moi-même. Résultat, c'est plutôt crade comparé à la qualité du reste du code, mais ça tourne, c'est l'essentiel. C'est sûrement à améliorer puisqu'avec ma version le constructeur ne sert plus à rien... Bref, voilà ce que ça donne :
    <?php
    /**
     * Classe plxCalendar
     *
     * @version 1.0
     * @package PLX
     * @author    Stephane F
     **/
     
    class plxCalendar {
        
        /**
         * Méthode qui affiche un calendrier mettant en evidence les dates de parution d'articles
         *
         * @return    stdout
         * @author    Stephane F
         **/
        function Calendar() {
        
            global $plxMotor;
    
            preg_match('/^archives\/?([0-9]{4})([0-9]{3})([0-9]{3})?/', $plxMotor->get,$capture);
            $y = isset($capture[1]) ? $capture[1] : date('Y');    
            $m = isset($capture[2]) ? $capture[2] : date('m');
            $d = isset($capture[3]) ? $capture[3] : date('d');
    
            # on récupere la liste des jours où des articles ont été publiés
            $aDays = array();
            $plxGlob_archives = new plxGlob(PLX_ROOT.$plxMotor->aConf['racine_articles']);
            $aFiles = $plxGlob_archives->aFiles;
            
            foreach($aFiles as $aFile) {
                preg_match('/[0-9]{4}.[0-9]{3}.[0-9]{3}.[0-9]{12}.(.*?).xml/', $aFile, $cap);
                $caps[] = $cap[0];
            }
            
            // pour chaque articles on parse : $aDays[date] => array(id, titre)
            foreach($caps as $aDay) {
                $Day = explode('.',$aDay);
                $day = substr($Day[3],0,8);
                $aDays[$day] = array('id'=>substr($Day[0],0,4),'titre'=>$Day[4]);
            }
            
            $date_string = mktime(0, 0, 0, $m, 1, $y );
            $day_start = date( 'w', $date_string ); // 1er jour de la semaine
            if ( strftime( '%w', mktime( 0, 0, 0, 1, 1, 2007 ) ) != 0 ) {
                $day_start = ( $day_start + 6 ) % 7;
            }
                
            # mois/annee - suivant/precent
            if ( $m < 12 ) {
                $next_month = $m + 1;
                $next_year = $y;
            } else {
                $next_year = $y + 1;
                $next_month = 1;
            }
            if ( $m > 1 ) {
                $previous_month = $m - 1;
                $previous_year = $y;
            } else {
                $previous_year = $y - 1;
                $previous_month = 12;
            }
            
            $str = '
    
            <table border="0" cellpadding="0" cellspacing="0" align="center" class="calendar">
            <tr>
            <td align="center">';
            if ( ( ( $previous_year%100 )!=$y ) || ( $previous_month!=$m ) ) {
                $str .= '<a href="index.php?archives/'.$previous_year.sprintf('%02d', $previous_month).'">«</a>';
            }
            $str .= '</td>
            <td align="center" colspan="5">
            <strong>
            <a href="index.php?archives/'.$y.$m.'">'.ucwords(plxDate::getCalendar('month', $m)).'</a>
            <a href="index.php?archives/'.$y.'">'.$y.'</a>
            </strong></td>
            <td align="center">';
            if ( ( ( $next_year%100 )!=$y ) || ( $next_month!=$m ) ) {
                $str .= '<a href="index.php?archives/'.$next_year.sprintf('%02d', $next_month).'">»</a>';
            }
            $str .= '</td>
            </tr>
            <tr>';
            
            for ( $i=0; $i<7; $i++ ) {
    
                if ( $day_start!=0 ) {
                    $str .= '<td>'.substr(ucwords(plxDate::getCalendar('day', ($i+1)%7)), 0, 3).'</td>';
                } else {
                    $str .= '<td>'.substr(ucwords(plxDate::getCalendar('day', ($i+1)%8)), 0, 3).'</td>';
                }
            }
            
            $str .= '</tr><tr>';
                
            # colonne vide avant le 1er jour
            for ( $i = 0; $i<$day_start; $i++ ) {
                $str .= '<td> </td>'."\n";
            }
            $current_position = $day_start;
            $total_days_in_month = date( 't', $date_string); 
    
            for ( $i = 1; $i<=$total_days_in_month; $i++) {
                $str .= '<td align="center">';
                $sday = $y.$m.$i;
                
                // si un article existe pour ce jour
                if($aDays[$sday]) {
                    // et que c'est aujourd'hui
                    if(mktime(0, 0, 0, $m, $i, $y) == mktime(0, 0, 0)) {
                        $str .= '<span class="today"><b><a href="index.php?article'.$aDays[$sday]['id'].'/'.$aDays[$sday]['titre'].'" title="'.$i.'">'.$i.'</a></b></span>';
                    }
                    // ou pas
                    else {
                        $str .= '<a href="index.php?article'.$aDays[$sday]['id'].'/'.$aDays[$sday]['titre'].'" title="'.$i.'">'.$i.'</a>';
                    }
                }
                else {
                    if (mktime(0, 0, 0, $m, $i, $y) == mktime(0, 0, 0)) 
                        $str .= '<span class="today"><b>'.$i.'</b></span>';
                        
                    else
                        $str .= $i;
                }
                
                $str .= '</td>'."\n";
                
                $current_position++;
                
                if ( $current_position == 7 ) {
                    $str .= '</tr><tr>';
                    $current_position = 0;
                }
            }
            $end_day = 7-$current_position;
    
            //Dernieres colonnes
            for ( $i = 0; $i<$end_day; $i++ ) {
                $str .= '<td></td>';
            }
            $str .= "</tr>
            </table>\n";
            
            echo $str;
        }        
    }
    
    # création d'un instance de l'objet plxCalendar
    $plxCalendar = new plxCalendar();
        
    ?>
    
    Je n'ai pas touché au @author, faîtes ce que vous voulez de ceci, c'est fait pour servir :)

    Bonne journée, joyeuses fêtes, et bonne année un peu en avance :)
  • grenouillegrenouille Member
    mai 2011 modifié
    bonjour
    j ai vérifié sous pluxml5.1beta1 mais
    j obtiens l erreur suivante :
    Fatal error: Call to private plxGlob::__construct() from context 'plxCalendar' in www...\calendar\class.plx.calendar.php on line 29
    et à la ligne 29 j ai ça :
    $plxGlob_archives = new plxGlob(PLX_ROOT.$plxMotor->aConf);
    quelqu un a une idée ?
    ps : j utilise le code ci dessus
  • StéphaneStéphane Member, Former PluXml Project Manager
    oui il faut remanier le code car il n'est pas compatible avec la branche 5 de pluxml.

    esasye de remplacer la ligne en question par:
    $plxGlob_archives = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • merci Stéphane

    si ça intéresse quelqu'un voici le code pour la 5.1beta1 (potentiellement à améliorer)
    class plxCalendar {
    
    	function Calendar() {
    	
    		global $plxMotor;
    
    		preg_match('/^archives\/?([0-9]{4})[\/]?([0-9]{2})[\/]?([0-9]{2})?/', $plxMotor->get,$capture);
    		$y = isset($capture[1]) ? $capture[1] : date('Y');    
    		$m = isset($capture[2]) ? $capture[2] : date('m');
    		$d = isset($capture[3]) ? $capture[3] : date('d');
    
    		# on récupere la liste des jours où des articles ont été publiés
    		$aDays = array();
    		$plxGlob_archives = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    		$aFiles = $plxGlob_archives->aFiles;
    
    		foreach($aFiles as $aFile) {
    			preg_match('/[0-9]{4}.[home|0-9,]*.[0-9]{3}.[0-9]{12}.(.*?).xml/', $aFile, $cap);
    			if ( isset($cap[0]) ) {
    				$caps[] = $cap[0];
    			}
    		}
    
    		// pour chaque articles on parse : $aDays[date] => array(id, titre)
    		foreach($caps as $aDay) {
    			$Day = explode('.',$aDay);
    			$day = substr($Day[3],0,8);
    			$aDays[$day][] = array('id'=>$Day[0],'titre'=>$Day[4]);
    		}
    
    		$date_string = mktime(0, 0, 0, $m, 1, $y );
    		$day_start = date( 'w', $date_string ); // 1er jour de la semaine
    		if ( strftime( '%w', mktime( 0, 0, 0, 1, 1, 2007 ) ) != 0 ) {
    			$day_start = ( $day_start + 6 ) % 7;
    		}
    
    		# mois/annee - suivant/precent
    		if ( $m < 12 ) {
    			$next_month = $m + 1;
    			$next_year = $y;
    		} else {
    			$next_year = $y + 1;
    			$next_month = 1;
    		}
    		if ( $m > 1 ) {
    			$previous_month = $m - 1;
    			$previous_year = $y;
    		} else {
    			$previous_year = $y - 1;
    			$previous_month = 12;
    		}
    
    		$str = '
    
    		<table border="0" cellpadding="0" cellspacing="0" align="center" class="calendar">
    		<tr>
    		<td align="center">';
    		if ( ( ( $previous_year%100 )!=$y ) || ( $previous_month!=$m ) ) {
    			$str .= '<a href="index.php?archives/'.$previous_year.'/'.sprintf('%02d', $previous_month).'">«</a>';
    		}
    		$str .= '</td>
    		<td align="center" colspan="5">
    		<strong>
    		<a href="index.php?archives/'.$y.'/'.$m.'">'.ucwords(plxDate::getCalendar('month', $m)).'</a>
    		<a href="index.php?archives/'.$y.'">'.$y.'</a>
    		</strong></td>
    		<td align="center">';
    		if ( ( ( $next_year%100 )!=$y ) || ( $next_month!=$m ) ) {
    			$str .= '<a href="index.php?archives/'.$next_year.'/'.sprintf('%02d', $next_month).'">»</a>';
    		}
    		$str .= '</td>
    		</tr>
    		<tr>';
    
    		for ( $i=0; $i<7; $i++ ) {
    
    			if ( $day_start!=0 ) {
    				$str .= '<td>'.substr(ucwords(plxDate::getCalendar('day', ($i+1)%7)), 0, 3).'</td>';
    			} else {
    				$str .= '<td>'.substr(ucwords(plxDate::getCalendar('day', ($i+1)%8)), 0, 3).'</td>';
    			}
    		}
    
    		$str .= '</tr><tr>';
    
    		# colonne vide avant le 1er jour
    		for ( $i = 0; $i<$day_start; $i++ ) {
    			$str .= '<td> </td>'."\n";
    		}
    		$current_position = $day_start;
    		$total_days_in_month = date( 't', $date_string); 
    
    		for ( $i = 1; $i<=$total_days_in_month; $i++) {
    			$str .= '<td align="center">';
    			$sday = $y.$m.sprintf('%02d', $i);
    
    			// si un article existe pour ce jour
    			if( isset($aDays[$sday][0]) AND (mktime(0, 0, 0, $m, $i, $y) <= mktime(0, 0, 0)) ) { # pour n'afficher que les articles futur changer la condition de mktime en >=
    				// et que c'est aujourd'hui
    				if(mktime(0, 0, 0, $m, $i, $y) == mktime(0, 0, 0)) {
    					// si plusieurs articles ce jour là -> renvoi vers l'archive du jour
    					if ( isset($aDays[$sday][1]) ) # /!\ l'archive du jour n'existe pas sous pluxml 5.1beta1
    						$str .= '<span class="today"><b><a href="index.php?archives/'.$y.'/'.$m.'/'.sprintf('%02d', $i).'" title="'.$i.'">'.$i.'</a></b></span>';
    					// sinon renvoi directement vers l'article
    					else
    						$str .= '<span class="today"><b><a href="index.php?article'.$aDays[$sday][0]['id'].'/'.$aDays[$sday][0]['titre'].'" title="'.ucfirst(str_replace("-"," ",$aDays[$sday][0]['titre'])).'">'.$i.'</a></b></span>';
    				# variante 1 : renvoi vers l'article
    				#$str .= '<span class="today"><b><a href="index.php?article'.$aDays[$sday][0]['id'].'/'.$aDays[$sday][0]['titre'].'" title="'.ucfirst(str_replace("-"," ",$aDays[$sday][0]['titre'])).'">'.$i.'</a></b></span>';
    				# variante 2 : renvoi vers l'archive du mois
    				#$str .= '<span class="today"><b><a href="index.php?archives/'.$y.'/'.$m.'" title="'.$i.'">'.$i.'</a></b></span>';
    					# autre variante : renvoi vers l'archive du jour => non pris en charge par plxMotor dans la version 5.1beta1
    					#$str .= '<span class="today"><b><a href="index.php?archives/'.$y.'/'.$m.'/'.sprintf('%02d', $i).'" title="'.$i.'">'.$i.'</a></b></span>';
    				}
    				// ou pas
    				else {
    					// si plusieurs articles ce jour là -> renvoi vers l'archive du jour
    					if ( isset($aDays[$sday][1]) ) # /!\ l'archive du jour n'existe pas sous pluxml 5.1beta1
    						$str .= '<a href="index.php?archives/'.$y.'/'.$m.'/'.sprintf('%02d', $i).'" title="'.$i.'">'.$i.'</a>';
    					// sinon renvoi directement vers l'article
    					else
    						$str .= '<a href="index.php?article'.$aDays[$sday][0]['id'].'/'.$aDays[$sday][0]['titre'].'" title="'.ucfirst(str_replace("-"," ",$aDays[$sday][0]['titre'])).'">'.$i.'</a>';
    				# variante 1 : renvoi vers l'article
    				#$str .= '<a href="index.php?article'.$aDays[$sday][0]['id'].'/'.$aDays[$sday][0]['titre'].'" title="'.ucfirst(str_replace("-"," ",$aDays[$sday][0]['titre'])).'">'.$i.'</a>';
    				# variante 2 : renvoi vers l'archive du mois
    				#$str .= '<a href="index.php?archives/'.$y.'/'.$m.'" title="'.$i.'">'.$i.'</a>';
    					# autre variante : renvoi vers l'archive du jour => non pris en charge par plxMotor dans la version 5.1beta1
    					#$str .= '<a href="index.php?archives/'.$y.'/'.$m.'/'.sprintf('%02d', $i).'" title="'.$i.'">'.$i.'</a>';
    				}
    			}
    			else {
    				if (mktime(0, 0, 0, $m, $i, $y) == mktime(0, 0, 0)) 
    					$str .= '<span class="today"><b>'.$i.'</b></span>';
    				else
    					$str .= $i;
    			}
    
    			$str .= '</td>'."\n";
    
    			$current_position++;
    
    			if ( $current_position == 7 ) {
    				$str .= '</tr><tr>';
    				$current_position = 0;
    			}
    		}
    		$end_day = 7-$current_position;
    
    		//Dernieres colonnes
    		for ( $i = 0; $i<$end_day; $i++ ) {
    			$str .= '<td></td>';
    		}
    		$str .= "</tr>
    		</table>\n";
    
    		echo $str;
    	}        
    }
    
    # création d'un instance de l'objet plxCalendar
    $plxCalendar = new plxCalendar();
    
  • cghescghes Member
    bonjour à tous

    et surtout merci pour Pluxml que je découvre enfin...

    j'ai un site de jeux concours et j'aimerai utiliser ce fameux calendrier pour ajouter chaque concours par date.

    Le souci c'est que sous la dernière version, on arrive pas a afficher tout les articles d'une même date.
    Soit un seul article s'affiche, soit toute l'archive du moi s'affiche...
    Quelqu'un aurait il une solution ? merci en tout cas a vous tous
  • grenouillegrenouille Member
    juin 2011 modifié
    j avais le même problème
    pour arriver à tes fin il faut modifier le core de pluxml (attention aux futur mise à jour)
    dans core\lib\class.plx.motor.php il faut modifier la fonction prechauffage()

    cherche :
    elseif($this->get AND preg_match('/^archives\/([0-9]{4})[\/]?([0-9]{2})?/',$this->get,$capture)) {
                $this->mode = 'archives';
    			$this->template = 'archives.php';
                $this->cible = $capture[1];
    			$this->bypage = $this->aConf['bypage_archives'];
    			if(empty($capture[2])) $this->cible .= '[0-9]{2}';
    			else $this->cible .= $capture[2];
    			$this->motif = '/^[0-9]{4}.[0-9,]*.[0-9]{3}.'.$this->cible.'[0-9]{6}.[a-z0-9-]+.xml$/';
            }
    
    et remplace par :
    elseif($this->get AND preg_match('/^archives\/([0-9]{4})[\/]?([0-9]{2})?[\/]?([0-9]{2})?/',$this->get,$capture)) {
                $this->mode = 'archives';
    			$this->template = 'archives.php';
                $this->cible = $capture[1];
    			$this->bypage = $this->aConf['bypage_archives'];
    			if(empty($capture[2])) $this->cible .= '[0-9]{2}';
    			else $this->cible .= $capture[2];
    			if(empty($capture[3])) $this->cible .= '[0-9]{2}';
    			else $this->cible .= $capture[3];
    			$this->motif = '/^[0-9]{4}.[0-9,]*.[0-9]{3}.'.$this->cible.'[0-9]{4}.[a-z0-9-]+.xml$/';
            }
    
    peut etre que stéphane modifira le core de pluxml dans une prochaine version pour inclure l'archive du jour

    ps: j ai aussi modifié la fonction getCalendar() dans class.plx.date.php
    case 'month':
    				if ( isset($aMonth[ $value ]) ) return $aMonth[ $value ];
    				break;
    
  • cghescghes Member
    Et ba ça c'est du rapide!
    merci pour ce super coup de main j'ai enfin un site qui fonctionne à 200 %
    http://jeux.concours-gagnant.net

    et super script en tout cas pour un cms sans base de donnée!
Connectez-vous ou Inscrivez-vous pour répondre.