Changez le mot "commentaire"

k610ik610i Member
janvier 2012 modifié dans Entraide
Bonjour,


Sur l'affiche de ma home, j'ai mes différents articles.
Je voudrais modifier le mot "commentaires" présent via ce code :
<?php $plxShow->artNbCom(); ?>
par un autre mot, comment dois-je procéder ?


Biensûr, j'aimerais avoir l'info : Nombre de "commentaires" à côté...

Réponses

  • Dans le fichier lang/fre.php de ton thème, tu remplaces toutes les occurences du mot "commentaire" par ce que tu souhaites...


    à plus,

    Gzyg
  • Ahvui !

    Merci !
  • Et si je veux que le nombre de commentaires (genre 0, 3, 42 ou 69), il existe quelque chose ?
  • Oui mais il faut modifier un fichier du core, je ne sais plus lequel (core/lib/class.plx.show.php ?)...

    Je l'avais fait pour un thème mais ce n'est pas pratique pour les mises à jour...


    à plus,

    Gzyg
  • La variable #art_nbcoms existe pour une fonction > cf ici
    > Ce n'est pas possible de la réutiliser ?

    k6, pas très douée
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    la fonction $plxShow->artNbCom() ne permet pas une customisation facile car elle est mal pensée.
    Je m'en aperçois grâce à ce que tu veux faire.
    Peux-tu me donner l'affichage que tu souhaites avoir suivant les cas:: 0 commentaire, 1 commentaire, n commentaires
    ça me permettra d'orienter ma réflexion sur comment modifier la fonction pour qu'on puisse personnaliser son affichage.
    Merci

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Personnellement, je veux juste avoir le chiffre correspondant au nombre de commentaire pour le mettre sur une image (représentant une bulle par exemple) donc :


    0 commentaire > 0
    1 commentaire > 1
    n commentaires > n


    Je ne sais pas si ça t'aide... :S
    C'est vrai que la langue française n'aide pas avec les pluriels/singuliers.
  • StéphaneStéphane Member, Former PluXml Project Manager
    essaye alors en utilisant cette instruction
    <?php echo $plxShow->plxMotor->plxRecord_arts->f('nb_com') ?>
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Comment je le rends cliquable vers les commentaires ?
    Sinon nikel, merk6 beaucoup !
  • StéphaneStéphane Member, Former PluXml Project Manager
    Voilà
    <?php
    	$nbcoms = $plxShow->plxMotor->plxRecord_arts->f('nb_com');
    	$num = intval($plxShow->plxMotor->plxRecord_arts->f('numero'));
    	$url = $plxShow->plxMotor->plxRecord_arts->f('url');
    	echo '<a href="'.$plxShow->plxMotor->urlRewrite('?article'.$num.'/'.$url).'#comments">'.$nbcoms.'</a>';
    ?>
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • ça marche nikel.

    Faut vraiment que j'arrive à devenir autonome sur ces questions... :)


    Merk6 Stéphane (je t'ai copié pour la technique du lien vers la connexion admin :p)
  • Merci bien Stéphane pour cette solution.


    Effectivement, il y a dans le moteur de PluXml quelques fonctions comme ça qui affichent le texte avec "echo" au lieu de renvoyer une valeur, ce qui empêche de personnaliser l'affichage.
    Je crois que c'est le cas aussi pour la fonction qui affiche la liste des articles par catégorie.


    Dans le site www.unemesseailleurs.com - page Expression, je voulais afficher "xx messages" au lieu de "xx commentaires", je suis passé par une fonction de remplacement en javascript !
  • Ce n'est pas possible de changer "commentaires" par "messages" dans le fichier langue ?
    (j'ai pas encore testé ce point)
  • FrancisFrancis Member
    janvier 2012 modifié
    Le mot "commentaires" n'est pas pris dans le fichier langue du thème, mais dans celui du core.
    C'est pour cela que j'étais passé par une fonction javascript. Si on se met à modifier le core, c'est le bazar pour les mises à jour.
    Mais la solution donnée par Stéphane est meilleure, elle permet de traiter le problème en PHP en récupérant le nombre de messages et en écrivant le texte qu'on veut à la suite.
  • StéphaneStéphane Member, Former PluXml Project Manager
    je mets au point une autre solution (nouvelle fonction artNbCom) que je mettrai ici, histoire d'avoir votre avis sur son efficacité avant de l'implementer nativement dans pluxml. ça devrait couvrir tous les cas de figure et répondre à vos besoins. le temps de tester ma fonction et je vous donne la modif à faire courant ce week end.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Super ! Merci Stéphane !
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    voilà la nouvelle fonction que je vous propose. pour la mettre en place afin de la tester

    1) éditer le fichier core/lib/class.plx.show.php
    2) remplacer entièrement la fonction artNbCom par le code suivant (faire une recherche sur artNbCom supprimer celle existante et copier à la place le code suivant)
    	/**
    	 * Méthode qui affiche le nombre de commentaires (sous forme de lien ou non selon le mode) d'un article
    	 *
    	 * @param	f1		format d'affichage si nombre de commentaire = 0 (#nb pour afficher le nombre de commentaire)
    	 * @param	f2		format d'affichage si nombre de commentaire = 1 (#nb pour afficher le nombre de commentaire)
    	 * @param	f3		format d'affichage si nombre de commentaire > 1 (#nb pour afficher le nombre de commentaire)
    	 * @return	stdout
    	 * @scope	home,categorie,article,tags,archives
    	 * @author	Stephane F
    	 **/
    	public function artNbCom($f1='L_NO_COMMENTS',$f2='#nb L_COMMENT',$f3='#nb L_COMMENTS') {
    
    		# A t'on besoin d'afficher le nb de commentaires ?
    		if(!$this->plxMotor->aConf['allow_com'] OR !$this->plxMotor->plxRecord_arts->f('allow_com'))
    			return;
    
    		$nb = intval($this->plxMotor->plxRecord_arts->f('nb_com'));
    		$num = intval($this->plxMotor->plxRecord_arts->f('numero'));
    		$url = $this->plxMotor->plxRecord_arts->f('url');
    
    		if($nb==0)
    			$txt = str_replace('L_NO_COMMENTS', L_NO_COMMENTS, $f1);
    		elseif($nb==1)
    			$txt = str_replace('L_COMMENT', L_COMMENT, $f2);
    		elseif($nb>1)
    			$txt = str_replace('L_COMMENTS', L_COMMENTS, $f3);
    
    		$txt = str_replace('#nb',$nb,$txt);
    
    		if($this->plxMotor->mode == 'article')
    			echo $txt;
    		else
    			echo '<a href="'.$this->plxMotor->urlRewrite('?article'.$num.'/'.$url).'#comments" title="'.$txt.'">'.$txt.'</a>';
    
    	}
    

    explications:
    cette nouvelle fonction accepte 3 paramètres (pas obligatoire de les renseigner)

    paramètre 1 = libellé à afficher si 0 commentaire
    paramètre 2 = libellé à afficher si 1 commentaire
    paramètre 3 = libellé à afficher si le nombre de commentaire est > 1

    la variable #nb permet d'afficher le nombre de commentaire. peut être utiliser dans les 3 paramètres

    exemple 1: sans aucun paramètre artNbCom fonctionne comme l'ancienne version
    <?php $plxShow->artNbCom() ?>
    

    exemple 2: en renseignant les 3 paramètres
    <?php $plxShow->artNbCom('toujours pas de commentaire', 'un seul commentaire', '#nb commentaires'); ?>
    

    sera affiché:
    si 0 commentaire: toujours pas de commentaire
    si 1 commentaire: un seul commentaire
    si >1 commentaire: #nb commentaires où #nb sera remplacé par le nombre de commentaire

    nb: si vous ne souhaitez pas afficher de libellé mais juste le nombre de commentaire, mettez #nb comme paramètre

    Merci de me faire un retour pour savoir si cela réponds à tous vos besoins

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • FrancisFrancis Member
    janvier 2012 modifié
    Merci Stéphane, cette fonction est intéressante et elle conserve la compatibilité avec le fonctionnement actuel.


    Mais je trouve que les fonctions qui affichent un contenu avec "echo" sont moins souples à utiliser que celles qui renvoient une valeur.


    Si ce n'était pas trop gênant, on pourrait imaginer une nouvelle fonction, par exemple artValNbCom, qui renverrait la valeur de ce qui est affiché. La fonction artNbCom n'aurait plus qu'à afficher cette valeur :

    public function artValNbCom($f1='L_NO_COMMENTS',$f2='#nb L_COMMENT',$f3='#nb L_COMMENTS') {
    ...
    // même contenu que la fonction artNbCom modifiée, sauf le dernier if où l'on remplace "echo" par "return" :
    
    		if($this->plxMotor->mode == 'article')
    			return $txt;
    		else
    			return '<a href="'.$this->plxMotor->urlRewrite('?article'.$num.'/'.$url).'#comments" title="'.$txt.'">'.$txt.'</a>';
    
    }
    
    
    public function artNbCom($f1='L_NO_COMMENTS',$f2='#nb L_COMMENT',$f3='#nb L_COMMENTS') {
    
          echo artValNbCom($f1, $f2, $f3);
    }
    

    Ça permettrait d'utiliser le nombre de commentaires pour faire un test (par exemple, affichage d'un bloc avec cadre autour des commentaires seulement s'il y en a, affichage d'une image s'il n'y a pas de commentaires).


    On pourrait même imaginer un 4ème paramètre id_article, pour que la fonction affiche le nombre de commentaires de l'article dont on a donné l'id (en utilisant l'article courant si ce paramètre n'est pas fourni).
    Ça ferait une fonction plus générale, mais je m'aperçois qu'il n'y a pas d'id_article affiché dans la partie admin, comme pour les pages statiques. Pour tout dire, je ne sais même pas si les articles ont des id, mais si c'est le cas ça pourrait être utile.
  • Francis a écrit:
    Merci Stéphane, cette fonction est intéressante et elle conserve la compatibilité avec le fonctionnement actuel.


    Mais je trouve que les fonctions qui affichent un contenu avec "echo" sont moins souples à utiliser que celles qui renvoient une valeur.


    Si ce n'était pas trop gênant, on pourrait imaginer une nouvelle fonction, par exemple artValNbCom, qui renverrait la valeur de ce qui est affiché. La fonction artNbCom n'aurait plus qu'à afficher cette valeur :

    C'est pas mal comme idée, mais ce n'est pas le but de la classe plxShow ("montrer"). Toutes ses méthodes (arrêtez-moi si je me trompe), retournent un echo.
  • Merci Jerry pour ta remarque qui est logique, mais je t'arrête, enfin disons à moitié !
    La plupart des fonctions de la classe plxShow renvoient un echo, mais il y en a déjà certaines qui retournent une valeur, comme mode(), catId(), artCatId(), staticId().


    Une alternative à la création d'une nouvelle fonction artValNbCom serait d'ajouter à la fonction artNbCom un paramètre optionnel $echo, pour demander l'affichage avec $echo=true ou le renvoi d'une valeur avec $echo=false.


    Dans la classe plxShow, les fonctions defaultLang, artAuthor et callHook fonctionnent déjà de cette façon. Par exemple pour defaultlang :
    	public function defaultLang($echo=true) {
    		if($echo)
    			echo $this->plxMotor->aConf['default_lang'];
    		else
    			return $this->plxMotor->aConf['default_lang'];
    	}
    

    Pour certaines fonctions, ce serait bien utile parfois de pouvoir récupérer la valeur et la traiter, au lieu de l'afficher directement.
  • Pas faux. En effet, ça serait utile.
  • Bonsoir,


    Je voudrais afficher dans ma sidebar le titre de l'article où a été posté le commentaire à la place du contenu du même commentaire. Est-ce possible ?
  • @Stéphane : qu'en est-il de ta fonction? Penses-tu qu'elle sera dans la prochaine version de pluxml?
Connectez-vous ou Inscrivez-vous pour répondre.