[Résolu]ordre des commentaires

Je suis sur une version modifiée avec éditeur . je cherche désespérement à modifier l'ordre des commentaires(et uniquement les commentaires) cad inverser leur affichage, le dernier en haut ! merci pour celui qui peut m'aider avec une explication pas à pas .....

Réponses

  • regarde la page de bas en haut!
    Plus franchement, je ne sais pas, mais c'est sûrement possible, mais ca implique des modifications probablement importantes oux fichiers contenus dans core/lib, et plus particulièrement functions.php ainsi que peut etre class.pluxml.php. Je peux pas t'aider plus.
    Salut!
  • Eh ben merci c'est symppa d'essayer je regarde dans fundtions.php
  • J'y arrive paaaaaaaaaaaaaaaaaaaaaaaaaaas !!!! Ouiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiin help help help j'ai plus que ça à boucler c'est super important !!!
    une bise virtuelle sur le front à celui qui me fournit la solution !! !!
  • J'ai essayé d'ouvrir différents fichiers, et j'ai vu que dans class.glob.php une fonction query() utilise les fonctions sort() et rsort() de PHP pour faire respectivement un classement et un classement inversé.
    Appliqué à la fonction getComments() de class.pluxml.php, voici le code modifié (un simple « r » enlevé) :
    function getComments() {
    
    		$motif = '/com.'.$_GET['article'].'.xml$/';
    		if($files = $this->ccon->query($motif, 'sort', 0, 1)){
    			$this->coms =  new recordset($this->parseComments(PLX_DOC.$this->config['racine_xmlcom'].$files[0]));
    		}else{
    			$this->coms = false;
    		}
    	}
    
    Dis-moi si ça marche ;) .
  • gcyrillusgcyrillus Member
    septembre 2007 modifié
    Bonsoir,

    cela ne risque pas de trop bien marcher.
    par contre , en te servant de la boucle while qui affiche les commentaires pour remplir un tableau , et ensuite afficher le contenu de celui-ci , tu peut t'en sortir.

    Modification de la boucle :
    <?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
    	krsort($commentaire);
    foreach($commentaire as $valeur)
        {
        echo '<div class="comment  ligne'.$valeur[3] .'"><p>Par '.$valeur[0].' le ';
    	echo $valeur[1].'</p><blockquote><p>';
    	echo $valeur[2].'</p></blockquote></div>';
        }  ?>
    	</div>
    		<?php endif; ?>
    
    Il te faut aussi modifier le fichier "functions.php en ajoutant ceci:
    /* ****************** retourne les chaines au lieu de les afficher ************************** */	
    		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 **************************** */
    
    copie des conditions du switch deja existant qui retourne les chaines au script plutot qu'au navigateur.

    GC

    Il y a un petit truc bizarre avec le modulo , que je ne comprends pas ...
    <edit > , probleme modulo réglé : le tri ne s'effectué pas correctement :
    krsort($commentaire); au lieu du simple sort($commentaire);

    Cela me semble fonctionnel
    </>

    GC
  • La modification de boucle while c'est dans le template.php?
    merci de votre aide ! mais tenez compte de ma signature en bas dans vos explications; ça va toujours mieux en le disant!!!
  • ça a l'air de marcher mais j'ai ça en prime au dessus des commentaires d'où vient ce??????
    Notice: Undefined variable: i in C:\Program Files\EasyPHP 2.0b1\www\core\templates\natural-essence\template.php on line 92

    Notice: Undefined variable: i in C:\Program Files\EasyPHP 2.0b1\www\core\templates\natural-essence\template.php on line 97

    Notice: Undefined variable: i in C:\Program Files\EasyPHP 2.0b1\www\core\templates\natural-essence\template.php on line 98
  • gcyrillusgcyrillus Member
    septembre 2007 modifié
    bonjour,

    pardon , la variable $i n'est pas initialiser dans le code que je laisse ici.

    voici ou elle doit etre initialiser
    <?php if($pluxml->coms):
    $i=0; // initialise la variable servant au compteur
    ?>
    GC
    (code post précédent maj :) )
  • On avance , plus de undefined variable ......mais je n'ais plus qu'un seul commentaire d'affiché ????????????
  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut nauwel.

    Dans ton template, apres la ligne

    <?php if($pluxml->coms):?>

    ajoute

    <?php $pluxml->coms->result = array_reverse($pluxml->coms->result) ?>

    ca triera en ordre inverse tes commentaires. Un peu bourrin comme solution, mais bon... :-)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Simple , efficace, redoutable !!!
    UN GRAND MERCI Stef !!! tu gagnes la bise sur le front !!
  • StéphaneStéphane Member, Former PluXml Project Manager
    ;-)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • bonjour/bonsoir

    En moins bourin , et plutot soupe , j'insiste sur mon idée initiale (qui fonctionne a condition de bien faire les copier/coller et les ajouts necessaires , pas toujours facile quand on ne connait pas trop :) ) .

    L'avantage des données ,a nouveau, stockées dans un tableau , c'est que l'on peut en faire toutes sortes de choses aprés, tri , comptage , et pagination.

    Voir ce post ou le script que je propose ici est repris avec une pagination (ce qui etait deja dans mon idée premiere):

    http://forum.pluxml.org/viewtopic.php?pid=6390#p6390

    Voila , si il y a plus efficace , court ou mieux , faites donc profiter :).

    GC
  • Oui je vais m'interesser à ça car le petit inconvénient à la methode de stef (que je remercie encore) c'est qu'on ne peut plus supprimer de com dans l'admin, c'est pas grave pour ce dont j'ai besoin pour le moment mais bon!
    merci gC de t'être penché sur mon soucis !
Connectez-vous ou Inscrivez-vous pour répondre.