Ordre des commentaires inverser et paginer (+livre d'or en accessoire)
Bonjour,
suite a une demande precedente , je remet ici une solution qui permet d'inverser l'ordre d'affichage des commentaires.
Description:
fonction d'affichage des données des commentaires , copier / renommer et modifier pour recuperer celle-ci coté serveur sans les affichées.
recuperation des données concernant les commentaires dans un tableau a 2 dimensions a partir du template.
Tri inverse du tableau multidimensionnel avec la fonction : krsort(array);
extraction du nombre d'enregistrements
pagination , test sur le nombre de pages et affichages des liens necessaires.
pagination au travers de l'url avec renvoi a la premier page si n° de page inexistant .
la fonction de tri inverse peut-etre annulé dans le script ou simplement par l'url.
Modifications a apportés:
1) Le fichier functions.php
ajouté le code suivant juste aprés une ligne comportant le code suivant: break;
Ce system fonctionne sur un hebergement php4(free en l'occurance) et 5 (xampp) . (je repond la a une de mes questions : http://forum.pluxml.org/viewtopic.php?id=664 )
Ce system , permet , a partir de la pagination de créer un livre d'or en dédiant un article à cet effet.
Une demo : http://yidille.free.fr/plux/bs_plux/index.php?7-livre-d-or
P.S. En prime , dans la demo , un petit script pour remettre vos visteurs dans les rails ... si ils se perdent au cours de leur navigation.
GC
suite a une demande precedente , je remet ici une solution qui permet d'inverser l'ordre d'affichage des commentaires.
Description:
fonction d'affichage des données des commentaires , copier / renommer et modifier pour recuperer celle-ci coté serveur sans les affichées.
recuperation des données concernant les commentaires dans un tableau a 2 dimensions a partir du template.
Tri inverse du tableau multidimensionnel avec la fonction : krsort(array);
extraction du nombre d'enregistrements
pagination , test sur le nombre de pages et affichages des liens necessaires.
pagination au travers de l'url avec renvoi a la premier page si n° de page inexistant .
la fonction de tri inverse peut-etre annulé dans le script ou simplement par l'url.
Modifications a apportés:
1) Le fichier functions.php
ajouté le code suivant juste aprés une ligne comportant le code suivant: break;
/* ****************** retourne les chaines au lieu de les afficher ************************** */
case 'lien_page':
$lien = $pluxml->result->f('file_num')+0;
return $lien.'-'.$pluxml->result->f('art_name');
break;
case 'com_author_array':
if($option = 'link' && $pluxml->coms->f('site') != 'http://'){
return '<strong><a href="'.$pluxml->coms->f('site').'">'.$pluxml->coms->f('author').'</a></strong>';
}else{
return '<strong>'.$pluxml->coms->f('author').'</strong>';
}
break;
case 'com_date_array':
return date::dateIso2Hum($pluxml->coms->f('date'));
break;
case 'com_content_array':
return $pluxml->coms->f('content');
break;
/* *************** fin retour de chaines **************************** */
2) Dans le fichier template.php , recherchez la portion:
et remplacer cette portion avec celle-ci:<?php if($pluxml->coms):?>
<div id="comments">
<h2>Commentaires</h2>
<?php while($pluxml->coms->loop()):?>
<div class="comment <?php echo 'ligne'.$pluxml->coms->i%2 ?>">
<p>Par <?php __('com_author', 'link'); ?> le <?php __('com_date'); ?></p>
<blockquote><p><?php __('com_content'); ?></p></blockquote>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php if($pluxml->coms):
$i=0;
?>
<div id="comments">
<h2>Commentaires</h2>
<?php while($pluxml->coms->loop()):
$i_com=$i;
$ligne_com=$i_com%2;
$auteur_com=__('com_author_array','link');
$date_com=__('com_date_array');
$contenu_com=__('com_content_array');
$commentaire[$i] = array($auteur_com,$date_com , $contenu_com , $ligne_com );
$i++;
endwhile;
// fin remplissage tableau
//recuperation des variables d'url
// recuperation du numero de page a afficher
if(!isset($_GET['pagenum'])) {$page_num=1;}
else {$page_num=$_GET['pagenum'];}
// choix du sens d'affichage croissant ou decroissant
if(!isset($_GET['tri'])) {$tri="kr";}
else {$tri="k";}
// mise en place variables pour pagination comptage des commentaires , et configuration
$compteur=0; //raz
$nb=count($commentaire);//nombre de commentaires
$comm_par_page=10; // nombres de commentaires a affiché par pages
$pages_com_ar=ceil($nb/$comm_par_page); // nombre de pages
$pages_com=floor($nb/$comm_par_page); // pour gestion des liens
// verification et nettoyage des numeros de pages qui n'existent pas avec renvoi a la premiere page .
if (($page_num==0) || ($page_num > $pages_com_ar)) {$page_num=1;}
$page_numero=$page_num; //numero de page
$prem=($page_numero*$comm_par_page)-$comm_par_page;//numero du premier message a afficher
$der=$prem+$comm_par_page;//numero du dernier message a afficher
$before=$page_numero-1 ;
$after=$page_numero+1 ;
// fin variables de pagination
// lien de navigations de page en page
//test si premiere page
echo '<p id="nav_comment">page';
if ($pages_com_ar>1){echo's';}
echo ' : · ';
// test si plusieurs pages si besoin d'afficher une pagination (liens precedents/premier)
if ($pages_com>=0){
if (($page_num!=0) && ($page_num!=1)) // test que ce n'est pas la premiere page
{ echo '<a href="?'.__('lien_page').'" title="premiere page de commentaires">1</a> · ';
}
$pagesbefore=2; // boucle affichant les liens des pages precedentes existantes
while($pagesbefore < $page_num)
{
echo '<a href="?'.__('lien_page').'&pagenum='.$pagesbefore.'" title="page N°'.$pagesbefore.'">'.$pagesbefore.'</a> · ';
$pagesbefore++;
}
}
echo ' <b style="color:#DCA61C">'.$page_num.' </b> · ' ; // affiche numero de page en cours
// test si plusieurs pages si besoin d'afficher une pagination (liens suivants/derniers)
if ($pages_com>0){
if ($page_num!=$pages_com_ar) // test que ce n'est pas la derniere page
{ echo '<a href="?'.__('lien_page').'&pagenum='.$after.'" title="page N°'.$after.' " >'.$after.'</a> · ';
}
// boucle affichant les liens des pages suivantes existantes
$pagesafter=$after;
$pagesafter++;
while(($pagesafter < $pages_com_ar) && ($pagesafter > $after))
{
echo '<a href="?'.__('lien_page').'&pagenum='.$pagesafter.'" title="page N°'.$pagesafter.'">'.$pagesafter.'</a> · ';
$pagesafter++;
}
// on affiche le lien vers la derniere page si celle ci n'est pasla page courante
if (($page_numero!=$pages_com_ar) && ($after!=$pages_com_ar)) //test si pages precedentes existent
{ echo '<a href="?'.__('lien_page').'&pagenum='.$pages_com_ar.'" title="Derniere page" >'.$pages_com_ar.'</a> · ';
}
}
echo '</p>';
eval($tri.'sort($commentaire);');
$comnum=$nb;
foreach($commentaire as $valeur)
{
if ($compteur!=$nb) {
if(($compteur>=$prem) && ($compteur<$der) ) {
echo '<div class="comment ligne'.$valeur[3] .'"><p><span style="float:right;">N°'.$comnum .'/'.$nb.' .</span>Par '.$valeur[0].' le ';
echo $valeur[1].'</p><blockquote><p>';
echo $valeur[2].'</p></blockquote></div>';
}
$comnum--;
$compteur++;
}
} ?>
</div>
<?php endif; ?>
C'est un peu plus long (la pagination aurait surement du etre traité en modulo mais je laisse brut comme ça , je suis plus doué pour faire de la soupe).Ce system fonctionne sur un hebergement php4(free en l'occurance) et 5 (xampp) . (je repond la a une de mes questions : http://forum.pluxml.org/viewtopic.php?id=664 )
Ce system , permet , a partir de la pagination de créer un livre d'or en dédiant un article à cet effet.
Une demo : http://yidille.free.fr/plux/bs_plux/index.php?7-livre-d-or
P.S. En prime , dans la demo , un petit script pour remettre vos visteurs dans les rails ... si ils se perdent au cours de leur navigation.
GC
Connectez-vous ou Inscrivez-vous pour répondre.