[Beta 4.3.x] Archives
fightsoul
Member
Bonsoir à tous,
voilà j'ai vu souvent sur le forum si il y avait la possibilité d'avoir des archives (comme sur les gros système de blog) et avec la nouvelle version c'est possible puisqu'il y a un simili timestamp dans le nom du fichier, voici les modifications à effectuer pour avoir l'affichage des archives sur votre blog/site.
modification pour /core/lib/class.plx.motor.php :
- ajout d'une condition à la méthode préchauffage (au niveau de la ligne 270) :
- ajout d'une condition à la méthode pagetitle :
Edit du 24/04/2009 : Modification de la méthode archive(), vous pouvez maintenant choisir d'afficher le nombre d'articles associé à chaque mois, pour cela vous pouvez choisir #archive_date et #archive_nb_art à passer en paramètre à la méthode (exemple : $plxShow->archive('#archive_date (#archive_nb_art)'); affichera avril 2009 (5)).
Edit du 12/02/2010 : Correction de la fonction archive pour ne pas prendre en compte les articles futurs
Edit du 20/02/2010 : Modification des numéros de lignes à modifier/ajouter, de l'appel à la méthode GetCalendar, ainsi que du fichier archive.php pour rendre la modification compatible avec la version 4.3.1
voilà j'ai vu souvent sur le forum si il y avait la possibilité d'avoir des archives (comme sur les gros système de blog) et avec la nouvelle version c'est possible puisqu'il y a un simili timestamp dans le nom du fichier, voici les modifications à effectuer pour avoir l'affichage des archives sur votre blog/site.
modification pour /core/lib/class.plx.motor.php :
- ajout d'une condition à la méthode préchauffage (au niveau de la ligne 270) :
elseif($this->get AND preg_match('/^archive([0-9]{4})\/([0-9]{2})\//',$this->get,$capture)) {
$this->mode = 'archive';
$this->cible = $capture[1].$capture[2];
$this->motif = '/^[0-9]{4}.[0-9]{3}.'.$this->cible.'[0-9]{6}.[a-z0-9-]+.xml$/';
}
- modification de la ligne 298, la remplacer par :
if($this->mode == 'home' OR $this->mode == 'categorie' OR $this->mode == 'archive') {
modification pour /core/lib/class.plx.show.php (au niveau de la ligne &46) :- ajout d'une condition à la méthode pagetitle :
if($this->plxMotor->mode == 'archive') {
echo $this->plxMotor->aConf['title'].' - Archive '.plxDate::getCalendar('month', substr($this->plxMotor->cible, 4, 6)).' '.substr($this->plxMotor->cible, 0, 4);
return;
}
- modification de la ligne 1011 de la méthode pagination :
} elseif($this->plxMotor->mode == 'categorie' OR $this->plxMotor->mode == 'archive') { # En mode categorie
- ajout de la méthode archive :
function archive($format='#archive_date'){
$array = array();
$files = $this->plxMotor->plxGlob_arts->query('/^[0-9]{4}.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort',0,false,'before');
foreach($files as $id => $filename){
if(preg_match('/([0-9]{4}).([0-9]{3}).([0-9]{6})([0-9]{6}).([a-z0-9-]+).xml$/',$filename,$capture)){
$array[$capture[3]][] = $capture[5];
}
}
krsort($array);
foreach($array as $date => $files){
if(preg_match('/^([0-9]{4})([0-9]{2})$/',$date,$capture)){
$name = str_replace('#archive_nb_art',count($array[$capture[0]]),$format);
$name = str_replace('#archive_date',plxDate::getCalendar('month', $capture[2]).' '.$capture[1],$name);
echo "\t\t".'<li><a href="?archive'.$capture[1].'/'.$capture[2].'/">'.$name.'</a></li>'."\n";
}
}
}
- affichage de l'archive dans themes/defaut/sidebar.php :
<div id="archives">
<h2>Archives</h2>
<ul>
<?php $plxShow->archive(); ?>
</ul>
</div>
- Création de themes/defaut/archive.php (qui est exactement la même que categorie.php) :
<?php include(dirname(__FILE__).'/header.php'); # On insere le header ?>
<div id="page">
<div id="content">
<?php while($plxShow->plxMotor->plxRecord_arts->loop()): # On boucle sur les articles ?>
<h2 class="title"><?php $plxShow->artTitle('link'); ?></h2>
<p class="cat">Classé dans : <?php $plxShow->artCat(); ?> | <span><?php $plxShow->artNbCom(); ?></span></p>
<p class="date"><?php $plxShow->artDate('<span>#num_day</span><br />#num_month | #num_year(2)'); ?></p>
<div class="post"><?php $plxShow->artChapo(); ?></div>
<?php endwhile; # Fin de la boucle sur les articles ?>
<?php # On affiche la pagination ?>
<p id="pagination"><?php $plxShow->pagination(); ?></p>
</div>
<?php include(dirname(__FILE__).'/sidebar.php'); # On insere la sidebar ?>
</div>
<?php include(dirname(__FILE__).'/footer.php'); # On insere le footer ?>
Voilà, comme toujours n'hésitez pas à faire des retours ou des idées d'améliorations (dans la limite du possible ^^) Edit du 24/04/2009 : Modification de la méthode archive(), vous pouvez maintenant choisir d'afficher le nombre d'articles associé à chaque mois, pour cela vous pouvez choisir #archive_date et #archive_nb_art à passer en paramètre à la méthode (exemple : $plxShow->archive('#archive_date (#archive_nb_art)'); affichera avril 2009 (5)).
Edit du 12/02/2010 : Correction de la fonction archive pour ne pas prendre en compte les articles futurs
Edit du 20/02/2010 : Modification des numéros de lignes à modifier/ajouter, de l'appel à la méthode GetCalendar, ainsi que du fichier archive.php pour rendre la modification compatible avec la version 4.3.1
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
ça marche nickel tes modifs. Merci
Stéphane.
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Il est fort probable que nous intégrions cette fonctionnalité dans une beta 5.x.
Vraiment hâte de voir la prochaine version, d'ailleurs, je trouve plus votre ligne de dev. Possible d'avoir le lien ?
TCho, Hamtaro.
Edit : j'ai trouvé
http://pluxml.org/roadmap
ravi de l'attendre marama, je pensais que cette fonctionnalité aller intéresser plus de monde mais bon... ^^
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
petit post pour signaler une mise à jour, lisez l'edit du 1er post pour connaître les modifications
Toujours dans l'esprit de PluXml
Serait-il possible d'avoir les mois de l'année en cours et puis en suivant seulement les années ?
Par exemple :
* août 2009
* juillet 2009
* juin 2009
* mai 2009
* 2008
* 2007
* 2006
Merci d'avance pour l'info pour me mettre sur la piste.
Cordialement
Fabrice
@vidub2001, ce que tu demandes n'est pas possible, il faudrait changer la méthode d'affichage des archives ainsi que celle de préchauffage. Beaucoup de boulot que pas grand chose finalement
Merci pour ta réponse, le soucis est que le nombre de ligne des archives peut être conséquent sur un blog qui existe depuis pas mal de temps et cela casse la mise en page
Par exemple : un blog qui à 3-4 ans, minimum un article par mois, les lignes d'archives vont représenter entre 36 et 48 lignes dans le bloc archives
C'est un problème, non ?
Cordialement
Fabrice
Je remonte ce sujet pour corriger un petit bug dans la fonction archive à copier dans le fichier class.plx.show.php
Avec cette correction, les articles futurs n'apparaitront pas dans la liste des archives
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
je remonte le topic pour signaler quelques modifications du code pour le rendre compatible avec la version 4.3.1, merci à un modérateur/administrateur de modifier le nom du topic en [4.3.x] Archives
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)