Afficher les derniers commentaires ou articles dans la sidebar
marama
Member
dans Modifications
Bonsoir,
Allez comme promis deux petites méthodes de la classe plxShow qui permettent d'afficher les derniers articles et les derniers commentaires
Classe plxShow modifié depuis la version pluxml blog beta 4.1
Derniers articles :
Ajouter cette méthode dans la classe plxShow :
- les 5 derniers articles publiés sont affichés.
- le format d'affichage est : <a href="#art_url" title="#art_title">#art_title</a>
- les variables disponibles sont : #art_id, #art_url, #art_author, #art_title, #art_date, #art_hour
Pour afficher par exemple les 3 derniers articles de la catégorie 5 :
Ajouter cette méthode dans la classe plxShow :
- les 5 derniers commentaires publiés sont affichés.
- le format d'affichage est : <a href="#com_url">#com_author a dit :</a><br/>#com_content(60)
- les variables disponibles sont : #com_id, #com_url, #com_author, #com_content(num), #com_content, #com_date, #com_hour
- #com_content(60) signifie que l'on coupe le contenu du commentaire à 60 caractères. Pour l'afficher en entier, il faut utiliser la variable #com_content
Pour afficher par exemple les 6 derniers commentaires de l'article 2 :
Bonne soirée
Allez comme promis deux petites méthodes de la classe plxShow qui permettent d'afficher les derniers articles et les derniers commentaires
Classe plxShow modifié depuis la version pluxml blog beta 4.1
Derniers articles :
Ajouter cette méthode dans la classe plxShow :
/**
* Méthode qui affiche la liste des $max derniers articles.
* Si la variable $cat_id est renseignée, seulement les articles
* de cette catégorie seront retournés.
*
* @param format format du texte pour chaque article (variable: #art_id,#art_url,#art_author,#art_title,#art_date,#art_hour)
* @param max nombre d'articles maximum
* @param cat_id id de la catégorie cible (1,home)
* @return stdout
* @author Florent MONTHEL
**/
function lastArtList($format='<a href="#art_url" title="#art_title">#art_title</a>',$max=5,$cat_id='') {
# Génération de notre motif
if(empty($cat_id))
$motif = '/^[0-9]{4}.([0-9]{3}|home).[0-9]{12}.[a-z0-9-]+.xml$/';
elseif($cat_id == 'home')
$motif = '/^[0-9]{4}.home.[0-9]{12}.[a-z0-9-]+.xml$/';
else
$motif = '/^[0-9]{4}.'.str_pad($cat_id,3,'0',STR_PAD_LEFT).'.[0-9]{12}.[a-z0-9-]+.xml$/';
# Nouvel objet plxGlob et récupération des fichiers
$plxGlob_arts = & new plxGlob(PLX_ROOT.$this->plxMotor->aConf['racine_articles']);
$aFiles = $plxGlob_arts->query($motif,'art','rsort',0,$max);
# On parse les fichiers
if(is_array($aFiles)) { # On a des fichiers
while(list($k,$v) = each($aFiles)) # On parcourt tous les fichiers
$array[ $k ] = $this->plxMotor->parseArticle(PLX_ROOT.$this->plxMotor->aConf['racine_articles'].$v);
# On stocke les enregistrements dans un objet plxRecord
$plxRecord_arts = & new plxRecord($array);
}
if($plxGlob_arts->count AND $plxRecord_arts->size) { # On a des articles
# On boucle sur nos articles
while($plxRecord_arts->loop()) {
$num = intval($plxRecord_arts->f('numero'));
# On modifie nos motifs
$row = str_replace('#art_id',$num,$format);
$row = str_replace('#art_url','./?article'.$num.'/'.$plxRecord_arts->f('url'),$row);
$row = str_replace('#art_author',htmlspecialchars($plxRecord_arts->f('author'),ENT_QUOTES,PLX_CHARSET),$row);
$row = str_replace('#art_title',htmlspecialchars($plxRecord_arts->f('title'),ENT_QUOTES,PLX_CHARSET),$row);
$row = str_replace('#art_date',plxUtils::dateIsoToHum($plxRecord_arts->f('date')),$row);
$row = str_replace('#art_hour',plxUtils::heureIsoToHum($plxRecord_arts->f('date')),$row);
# On genère notre ligne
echo '<li>'.$row.'</li>';
}
}
}
Cette méthode s'utilise ainsi dans les fichiers de votre thème :
<ul>
<?php $plxShow->lastArtList(); ?>
</ul>
Par défaut :- les 5 derniers articles publiés sont affichés.
- le format d'affichage est : <a href="#art_url" title="#art_title">#art_title</a>
- les variables disponibles sont : #art_id, #art_url, #art_author, #art_title, #art_date, #art_hour
Pour afficher par exemple les 3 derniers articles de la catégorie 5 :
<ul>
<?php $plxShow->lastArtList('<a href="#art_url">#art_title</a> par #art_author le #art_date',3,5); ?>
</ul>
Derniers commentaires :Ajouter cette méthode dans la classe plxShow :
/**
* Méthode qui affiche la liste des $max derniers commentaires.
* Si la variable $art_id est renseignée, seulement les commentaires
* de cet article seront retournés.
*
* @param format format du texte pour chaque commentaire (variable: #com_id,#com_url,#com_author,#com_content(num),#com_content,#com_date,#com_hour)
* @param max nombre de commentaires maximum
* @param art_id id de l'article cible (24,3)
* @return stdout
* @author Florent MONTHEL
**/
function lastComList($format='<a href="#com_url">#com_author a dit :</a><br/>#com_content(60)',$max=5,$art_id='') {
# Génération de notre motif
if(empty($art_id))
$motif = '/^[0-9]{4}.[0-9]{10}-[0-9]+.xml$/';
else
$motif = '/^'.str_pad($art_id,4,'0',STR_PAD_LEFT).'.[0-9]{10}-[0-9]+.xml$/';
# Nouvel objet plxGlob et récupération des fichiers
$plxGlob_coms = & new plxGlob(PLX_ROOT.$this->plxMotor->aConf['racine_commentaires']);
$aFiles = $plxGlob_coms->query($motif,'com','rsort',0,$max);
# On parse les fichiers
if(is_array($aFiles)) { # On a des fichiers
while(list($k,$v) = each($aFiles)) # On parcourt tous les fichiers
$array[ $k ] = $this->plxMotor->parseCommentaire(PLX_ROOT.$this->plxMotor->aConf['racine_commentaires'].$v);
# On stocke les enregistrements dans un objet plxRecord
$plxRecord_coms = & new plxRecord($array);
}
if($plxGlob_coms->count AND $plxRecord_coms->size) { # On a des commentaires
# On boucle sur nos articles
while($plxRecord_coms->loop()) {
# On modifie nos motifs
$row = str_replace('#com_id',$plxRecord_coms->f('numero'),$format);
$row = str_replace('#com_url','./?article'.intval($plxRecord_coms->f('article')).'/#c'.$plxRecord_coms->f('numero'),$row);
$row = str_replace('#com_author',$plxRecord_coms->f('author'),$row);
while(preg_match('/#com_content\(([0-9]+)\)/',$row,$capture))
$row = str_replace('#com_content('.$capture[1].')',plxUtils::strCut($plxRecord_coms->f('content'),$capture[1]),$row);
$row = str_replace('#com_content',$plxRecord_coms->f('content'),$row);
$row = str_replace('#com_date',plxUtils::dateIsoToHum($plxRecord_coms->f('date')),$row);
$row = str_replace('#com_hour',plxUtils::heureIsoToHum($plxRecord_coms->f('date')),$row);
# On genère notre ligne
echo '<li>'.$row.'</li>';
}
}
}
Cette méthode s'utilise ainsi dans les fichiers de votre thème :
<ul>
<?php $plxShow->lastComList(); ?>
</ul>
Par défaut :- les 5 derniers commentaires publiés sont affichés.
- le format d'affichage est : <a href="#com_url">#com_author a dit :</a><br/>#com_content(60)
- les variables disponibles sont : #com_id, #com_url, #com_author, #com_content(num), #com_content, #com_date, #com_hour
- #com_content(60) signifie que l'on coupe le contenu du commentaire à 60 caractères. Pour l'afficher en entier, il faut utiliser la variable #com_content
Pour afficher par exemple les 6 derniers commentaires de l'article 2 :
<ul>
<?php $plxShow->lastComList('<a href="#com_url">#com_author a dit :</a><br/>#com_content(60)',6,2); ?>
</ul>
Bien sûr ces méthodes seront intégrées dans la prochaine version de Pluxml.Bonne soirée
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
De grandes choses à faire demain.
vivement demain....
J'aimerais bien l'installer, mais vous pouvez m'expliquer "plxShow" ? Qu'est-ce donc ?
Merci.
bonne chance...
EDIT: Bon voilà, j'ai bien copié-collé le premier code donné dans class.pxl.show.php (à la fin), je copie maintenant ce code dans ma sidebar :
Et je rencontre cette erreur :
Bon, vu que je débute en PHP, je comprends pas très bien le problème. J'ai oublié de renseigner quelque chose ? Où est le problème ?
En sachant que je n'ai publié qu'un seul article dans la 1ère catégorie. Bref, j'ai pas tout compris.
Merci ...
je viens de voir ce lien : http://tmp.pluxml.org/beta4.2.3/class.plx.show.txt
Mais il est mort... en sachant que j'utilise la bêta 4.1 de Pluxml.
Voilà, bon je sais pas si c'est le coeur du problème, mais bref.
moi aussi j'avais eu cette erreur. J'ai supposé que c'était parce que j'avais copié à la fin, peut-être avant le }. Tu n'as qu'à mettre le code dans la class show au début, c'est à dire juste après :
Pour moi, ça marche nickel, j'espère que ça ira pour toi aussi Par ailleurs, je ne voulais pas flooder mais un grand merci, d'une part pour cette astuce et d'autre part, pour pluxml tout entier, j'adore !!
Je peux enfin modifier mon blog tranquillement... ^^
Je suis passé par ton site et une petite remarque concernant le code dans ta sidebar. Attention à ne pas utiliser plusieurs fois <div id="categories">. Cela génère du code non valide xhtml car la valeur d'un id doit être unique
Pour ton agenda par exemple déclare <div id="agenda"> et si besoin adapte ton fichier css.
Bonne continuation
Stéphane.
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Je corrige ça tout de suite ! Merci pour ta remarque !
Ne nous éloignons pas trop du sujet non plus. ^^
Sinon une question, est-il possible de limiter le nombre de caractères à afficher pour le titre des articles ? Car du fait de ma mise en page, les titre des derniers articles affichés se retrouvent régulièrement sur deux lignes, ce qui est assez contraignant, je pourrais éventuellement retoucher ma mise en page, mais si une méthode permettait de limiter le nombre de caractères, ce serait plus cool :cool:.
Merci d'avance, et merci pour ce code ma foi fort pratique .
sur une page statique ?
pour ne pas trop "sur-charger" la side-bar ;-) en fait...
Par contre si par exemple je crée une page statique "Up-Dates" avec juste ce code J'ai cette erreur...
Moi aussi si je tente d'insérer dans une de mes pages statiques j'obtiens l'erreur.
Vous avez une idée ?
Il est possible d'utiliser la fonction lasArtList dans une page statique à condition de mettre au début cette instruction
Stéphane
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)