Calendrier événements

zornzorn Member
Bonsoir,

J'ai regardé différents posts déjà existant sur le forum sur le sujet "calendrier" mais je n'ai rien trouvé qui me convienne. Sachan que je suis en version 5.1.x
Je voudrais faire un calendrier événements et le mettre dans la sidebar.
Idéalement, je cherche quelque chose qui fonctionnerait comme le Blogroll : dans l'admin, on saisit des dates et voilà. Certes, si l'affichage se faisait comme un vrai calendrier, ce serait encore plus top.
A défaut, je pourrais fabriquer un fil RSS et il me suffirait de le parser - si toutefois il existe un plugin parseur de flux RSS pour PluXML.
Merci pour toute idée ou coup de main qui permette de faire avancer le truc.
Cordialement,

Réponses

  • danielsandanielsan Member
    octobre 2012 modifié
    le plugin champArt permet de rajouter des champs aux articles.
    J'ai fait un genre de calendrier sur http://daniel-rolland.com/aqs/ ( site de test, section "venez nous rencontrer" )
    Un code php classe les évènements en fonction de la date et si la date est passée il ne s'affiche pas.
  • C'est intéressant. Puis je résumer pour voir si j'ai bien compris ?
    Il faut créer un article pour chaque date à venir (ça, ok) et y rajouter un champ date par exemple avec champart. Ensuite tu as fait du php pour l'afficher dans la sidebar ?
    A+
  • danielsandanielsan Member
    octobre 2012 modifié
    voilà le code que j'ai ( fichier salons.php que j'insère sur la page d'accueil ):
    <?php if(!defined('PLX_ROOT')) exit; ?>
    
    
    <ul class="row">
    	<?php
    		$temps_actuel = time();
    		$motif = '/^[0-9]{4}.007.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/'; // ciblage de la catégorie 007 > les salons
    
    		# Nouvel objet plxGlob et récupération des fichiers
    		$plxGlob_arts = clone $plxShow->plxMotor->plxGlob_arts;
    		$salons = array(); // création d'un nouveau tableau salon
    		if($aFiles = $plxGlob_arts->query($motif,'art','rsort',0,10,'before')) {
    			foreach($aFiles as $v) { # On parcourt tous les fichiers de la catégorie salon
    				$art = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles'].$v);
    				
    				$date_fin = explode("/", $art["champArt_au"]);
    				$mk_fin = mktime(0, 0, 0, $date_fin[1], $date_fin[0], $date_fin[2]);
    				
    					if($temps_actuel<=$mk_fin){ // si la date actuelle est après la date de fin du salon, on ne remplit pas le tableau des salons
    						$art["mk_fin"] = $mk_fin;
    						$date_debut = explode("/", $art["champArt_du"]);
    						$mk_debut = mktime(0, 0, 0, $date_debut[1], $date_debut[0], $date_debut[2]);
    						$salons[$mk_debut] = $art;
    					}else{}
    			}
    		}
    		$salon = ksort($salons);
    		
    		
    			foreach($salons as $art) { # On parcourt tous les fichiers de la catégorie salon
    				$num = intval($art['numero']);
    				echo "<li class=\"grid_3\">\n";
    				echo "<h5>&Agrave; ".$art["champArt_ville"]."<br/>\n";
    				echo "Du ".$art["champArt_du"]." au ".$art["champArt_au"]."</h5>\n";
    				echo "<div>";
    				echo "<strong>".$art["title"]."</strong><br/>\n";
    				if(!empty($art["champArt_adresse"])){ echo $art["champArt_adresse"]." - ".$art["champArt_ville"]."<br/>\n";} else{}
    				if(!empty($art["champArt_lien"])){echo "<a href=\"".$art["champArt_lien"]."\">Consultez le site du salon</a><br/>\n";} else{}
    				if(!empty($art["champArt_stand"])){echo "<b>".$art["champArt_stand"]."</b><br/>\n";} else{}
    				echo "<p class=\"text-center\"><a href=\"".$plxShow->plxMotor->urlRewrite('?article'.$num.'/'.$art['url'])."\" class=\"btn\">Voir la fiche d'acc&egrave;s</a></p>\n";
    				echo "</div>";
    				echo "</li>";
    			}
    		
    		
    ?>
    </ul>
    
    + les champs "champArt_"


    J'ai un template categorie-salons.php où j'ai remplacé la boucle par celle-ci:
    <?php while($plxShow->plxMotor->plxRecord_arts->loop()): ?>
    
    <?php
    $champs = array("ville", "du", "au", "adresse", "lien", "stand");
    $champs = array_flip($champs);
    foreach($champs as $k => $v){
    	$champs[$k] = "";
    	$le_champ = $plxShow->callHook('champArt', $k.'_R');
    	if($le_champ!="") {
    		$champs[$k] = $plxShow->callHook('champArt', $k.'_R');
    	}else{}
    }
    ?>
    
    <div class="grid_4 row_4 border_1 margin_b2 bg_light shadow">
    <ul>
    	<li class="nom"><h4><?php $plxShow->artTitle(''); ?></h4></li>
    	<?php if(!empty($champs["du"]) && !empty($champs["au"])){echo "<li class=\"date\">Du ".$champs["du"]." au ".$champs["au"]."</li>";}else{} ?>
    	<?php if(!empty($champs["ville"]) && !empty($champs["adresse"])){echo "<li class=\"lieu\">".$champs["ville"]." - ".$champs["adresse"]."</li>";}else{} ?>
    	<?php if(!empty($champs["lien"])){echo "<li class=\"lien\">".$champs["lien"]."</li>";}else{} ?>
    	<?php if(!empty($champs["stand"])){echo "<li class=\"stand\">".$champs["stand"]."</li>";}else{} ?>
    </ul>
    
    <a href="<?php echo $plxShow->artUrl(); ?>" class="btn abs_b grid_3">Voir la fiche d'acc&egrave;s</a>
    </div>
    
    
    <?php endwhile; ?>
    
  • Merci pour ton code, je vais m'y coller. Je vous tiens au courant.
  • J'ai fait un plugin calendrier. Peut-être qu'il faudrait le modifier pour n'afficher les articles que d'une catégorie en particulier (cat évènements par exemple).
  • @danielsan : je souffre... j'ai déjà un souci avec la 1ère regex parce que je publie un article dans plusieurs catégories...

    @Jerry Wham : c'est une bonne idée de filtre sur la catégorie, mais je ne sais pas si je vois où le faire. par ailleurs, le calendrier dépasse de ma sidebar (je suppose qu'il faut que je touche la feuille css ? ) et surtout le 1er jour est décalé d'une cellule, ce qui fait que le dernier jour de la première semaine est hors du tableau...
  • @Jerry Wham : le rajout des lignes suivantes dans le css ajuste le calendrier. reste l'erreur + le filtrage...
    .calendar th {
        padding: 2px;
    }
    .calendar td {
        padding: 5px;
    }
    .calendar tbody td a {
        color: #DA727A;
    }
    
  • Je ne sais pas comment mettre une image sur le forum (snif) donc voila juste un lien : http://minilien.fr/a0mzwr
  • @Jerry Wham : le plugin ne regarde que les articles déjà publiés et se base sur la date de publication.
    PluXML ne permet pas de publier des articles avec une date future, ou plus exactement, on ne les voit pas et il ne sont pas dans le calendrier : une solution ?
    Que les articles ne s'affichent pas sur le site s'ils ont une date de publication ultérieure ne me gêne quelque part...
    Cordialement,
  • Pour le test sur la catégorie, je toucherais à la ligne 152 de plugcalendar.php
    if($files = $plxGlob_arts->query('/^[0-9]{4}.[home|'.$this->plxMotor->activeCats.',]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','sort',0,false,'before')) {
    
    Pour la date, je ne vois pas encore bien où toucher...
  • Polom ! Ca ne marche pas vraiment. Comme danielsan, imaginons que je filtre sur la catégorie 007... Voilà ce que j'ai modifié. Merci pour une astuce ou un coup de main.
    * Méthode qui récupère les articles en fonction des critères
    	public function getArticles() {
    		$this->plxMotor = plxMotor::getInstance();
    		$art = array();
    		
    		$plxGlob_arts = clone $this->plxMotor->plxGlob_arts;
    		if($files = $plxGlob_arts->query('/^[0-9]{4}.#007#.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','sort',0,false,'after')) {
    			foreach($files as $filename) {
    				if(preg_match('/[0-9]{4}.#007#.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/',$filename,$capture)){
    
  • Je verrai demain ce que je peux faire. Pas trop le temps ce soir...
  • Ok, super merci
    Je me suis aussi aperçu qu'il ne serait pas nécessaier de "publier" un article dans ce cas pour qu'il soit pris en compte dans un calendrier prévisionnel : l'enregistrer comme brouillon dans la bonne catégorie serait tout à fait suffisant. Je n'aurais dans ce cas pas besoin d'activer un lien vers la journée d'archive du calendrier...
    Je sais, c'est un peu détourner l'idée d'origine, mais je pense que ça devrait permettre de faire exactement ce que j'attends :)
    Bonne soirée
  • jLjjLj Member
    août 2014 modifié
    Bonjour,

    J'aimerai beaucoup utiliser le système calendrier pour annoncer les évènements (parfois 2 ou 3 le même jour), mais j'aimerai qu'ils soient toujours accessibles lorsque la date est dépassée, qu'on puisse les retrouver par mot-clé (localité, dates, ou autre)
    Ce plug in semble rencontrer mes attentes... mais je suis perdu :o je ne vois pas de fichier d'aide, et pas d'aide sur le site de l'auteur...
    Je lance donc un sos ...
    merci d'avance !

    Voici le site de test ... qui est déjà actif ;-)
  • jLjjLj Member
    Bon, j'essaie d'avancer...
    avec le plugin décrit, je patine !
    J'essaie donc de me débrouiller...
    Pour classer mes événements par ordre chronologique (je ne les encode par forcément dans cet ordre), je rempli le champs de la date de création, avec la date de l'événement moins un an ... C'est bête mais çà marche !

    Seulement, il me reste deux problèmes :
    - il faudrait virer l'affichage de la date de création pour cette catégorie
    - il faudrait pouvoir trier ces annonces d'événement dans l'autre ordre, pour avoir les plus proches d'abord.

    Si je pouvais avoir une aide pour faire çà .... Merci !
Connectez-vous ou Inscrivez-vous pour répondre.