IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

plugin de vote "Rate it"


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut plugin de vote "Rate it"
    Bonjour à tous.

    j'utilise actuellement un plugin de vote (ou de notation) "Rate it" utilisé par et pour le cms dotclear.
    Le plugin, libre de droit, n'est plus maintenu par son créateur.
    Je souhaiterai donc pourvoir le mettre à jour et de le proposer gratuitement (et libre de droit) à toute la communauté de Dotclear (logiciel libre de droit français).
    Pour cela je sollicite votre aide car ma compréhension du php s’arrête la ou elle commence (au départ).

    A l'heure actuelle, je souhaiterai apporter une modification du plugin avec la propriété schema.org "AggregateRating".
    Cette modif permettrait "entre autre" d'afficher en snippet les votes (étoiles + notes) dans le résultat de recherches de Google .

    Bien que de mon coté j'ai plus ou moins réussi à faire cela...
    Pourriez-vous m'aider à résoudre ce problème ou du moins de m’orienter vers la direction à suivre.
    Je ne sais pas si je m'y prend par le "bon bout", je souhaiterai faire en sorte que lorsque la "note" est 0, une phrase s'affiche, par exemple "Notez cet article".

    En explorant le lib.rateit.context.php, je vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Info
    	public static function value($name,$type,$id,$value)
    	{
    		return '<span class="rateit-'.$name.' rateit-'.$name.'-'.$type.'-'.$id.'">'.$value.'</span>';
    	}
    Tout en espérant que mes déductions soient les bonnes (??????) ...
    Le but serait lorsque la "note" est 0, qu'une phrase s'affiche, par exemple "Notez cet article".

    Je ne sais pas du tout si c'est possible mais j'imaginerai ca comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # Info
    	public static function value($name,$type,$id,$value)
    	{
    		if (empty ($value))
    {
    //La valeur est 0 donc on affiche la phrase "notez cet article".
       echo '  <span class="rateit-msg">Notez cet article</span>';
    }
    else{
    //la valeur n'est pas 0 on affiche le résultat des votes.
        return '  <span class="rateit-'.$name.' rateit-'.$name.'-'.$type.'-'.$id.'">'.$value.'</span>';
    }
    Évidement ce code ne fonctionne pas.
    Que dois-je corriger pour que cela puisse fonctionner ?

    Merci d'avance.

    Voici le lien du dit plugin (pour les curieux qui souhaiterai jeter un coup d'oeuil au code)

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    As-tu essayé un return à la place de l'echo ?
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Oui j'ai essayé, ça ne fonctionne pas.
    Je crois que mon if empty..etc n'est pas bon ???

    Je ne connais pas ce qui ordonne le..."si rien, faire ceci, sinon cela".

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Qu'est-ce qui ne fonctionne pas ? Déjà si le code initial fait un return ce serait étonnant qu'il ne faille pas en faire un autre plutôt qu'un echo.

    Détaille ton problème. Qu'est-ce que ça t'affiche ? Qu'est-ce que tu voudrais que ça affiche ?
    Quelles sont les valeurs de $value quand c'est pas bon et quand ça devrait aller ?

    Bref donne le plus de détails possibles.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour badaze et merci pour ton intérêt.

    Actuellement le fonctionnement donne "visuellement" quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       * * * * *
    Note 3 - Votes 12
    Le code qui permet l'appel de cet affichage est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <tpl:rateIt type="post">
                               <div class="rateit">{{tpl:rateItLinker}}</div>
     
                              <div class="item" vocab="http://schema.org/" typeof="Blog">
                               <div class="rateit-title" property="name">{{tpl:EntryTitle encode_html="1"}}</div>
                               <div class="note" property="aggregateRating" typeof="AggregateRating">
                               {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
                               <meta property="bestRating" content="5">
                               <meta property="worstRating" content="1">
                               </div>
                              </div>        
                             </tpl:rateIt>
    Donc de base, sans votes, l'affichage est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       * * * * *
    Note 0 - Votes 0
    Je souhaiterai lorsque la note est égale à zéro, que ce soit comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       * * * * *
    Notez cet article
    L'affichage et l'appel de "Note 3 - Votes 12" ce fait par le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
    Le {{tpl:rateItNote}} fait appel au code du lib.rateit.context.php dont le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?php
    # -- BEGIN LICENSE BLOCK ----------------------------------
    # This file is part of rateIt, a plugin for Dotclear 2.
    #
    # Copyright(c) 2014-2015 Nicolas Roudaire <nikrou77@gmail.com> http://www.nikrou.net
    #
    # Copyright (c) 2009-2010 JC Denis and contributors
    # jcdenis@gdwd.com
    #
    # Licensed under the GPL version 2.0 license.
    # A copy of this license is available in LICENSE file or at
    # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    # -- END LICENSE BLOCK ------------------------------------
     
    if (!defined('DC_RC_PATH')){return;}
     
    class rateItContext
    {
    	# Form
    	public static function linker($enable,$type,$id,$note,$quotient,$style='')
    	{
    		global $core;
     
    		if (!in_array($style,array('classic','simple','twin')))
    		{
    			$style = $core->blog->settings->rateit->rateit_rating_style;
    		}
    		$like = $core->blog->settings->rateit->rateit_msglike;
    		if (empty($like)) { $like = __('I like'); }
    		$notlike = $core->blog->settings->rateit->rateit_msgnotlike;
    		if (empty($notlike)) { $notlike = __("I don't like"); }
    		$uid = uniqid();
    		$dis = $enable ? ' disabled="disabled"' : '';
     
    		$res =
    		'<form class="rateit-linker" method="post" action="'.
    		$core->blog->url.$core->url->getBase('rateItpostform').'/'.$type.'/'.$id.'">'.
    		'<p>'.
    		'<input type="hidden" name="linkertype" value="'.$type.'" />'.
    		'<input type="hidden" name="linkerid" value="'.$id.'" />'.
    		'<input type="hidden" name="linkeruid" value="'.$uid.'" />';
     
     
    		if ($style == 'simple')
    		{
    			$chk = $enable ? ' checked="checked"' : '';
    			$res .= '<input title="'.$like.'" name="'.$uid.'" class="rateit-'.$type.'-'.$id.'" type="radio" value="'.$quotient.'" '.$chk.$dis.' />';
    		}
    		elseif ($style == 'twin')
    		{
    			$chk = $enable ? ' checked="checked"' : '';
    			$res .= '<input title="'.$notlike.'" name="'.$uid.'" class="rateit-'.$type.'-'.$id.'" type="radio" value="1" checked="checked"'.$dis.' />';
    			$res .= '<input title="'.$like.'" name="'.$uid.'" class="rateit-'.$type.'-'.$id.'" type="radio" value="'.$quotient.'" '.$dis.' />';
    		}
    		else
    		{
    			for($i = 0; $i < $quotient; $i++)
    			{
    				$chk = $note > $i && $note <= $i+1 ? ' checked="checked"' : '';
     
    				$res .= '<input name="'.$uid.'" class="rateit-'.$type.'-'.$id.'" type="radio" value="'.($i+1).'"'.$chk.$dis.' />';
    			}
    		}
     
    		if (!$enable)
    		{
    			$res .= '<input class="rateit-submit" name="rateit_submit_'.$uid.'" type="submit" value="'.__('Vote').'" />';
    		}
    		$res .= '</p></form>';
     
    		return $res;
    	}
     
    	# Info
    	public static function value($name,$type,$id,$value)
    	{
    		return '<span class="rateit-'.$name.' rateit-'.$name.'-'.$type.'-'.$id.'">'.$value.'</span>';
    	}
    }
    Et plus particulièrement la ligne 74 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Info
    	public static function value($name,$type,$id,$value)
    	{
    		return '<span class="rateit-'.$name.' rateit-'.$name.'-'.$type.'-'.$id.'">'.$value.'</span>';
    	}
    Donc j'imaginais dire à ce bout de code, si la note ($value ???) est égale à 0," afficher ca, sinon afficher ceci", par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # Info
    	public static function value($name,$type,$id,$value)
    	{
    		if (empty ($value))
    {
    //La valeur est 0 donc on affiche la phrase "notez cet article".
       echo '  <span class="rateit-msg">Notez cet article</span>';
    }
    else{
    //la valeur n'est pas 0 on affiche le résultat des votes.
        return '  <span class="rateit-'.$name.' rateit-'.$name.'-'.$type.'-'.$id.'">'.$value.'</span>';
    }
    Et comme je le disais plus haut, mon hypothèse théorique ne fonctionne pas.
    J'ai un message d'erreur qui dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected end of file in C:\Program Files (x86)\EasyPHP-12.1\www\dotclear\plugins\rateIt\inc\lib.rateit.context.php on line 85
    ce qui correspond au dernier }

    J'ai également testé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Info
    	public static function value($name,$type,$id,$value)
    	{
    		return '<span class="rateit-'.$name.' rateit-'.$name.'-'.$type.'-'.$id.'">'.$value.'</span>';
    	}
    }
    if (empty ($value))
    {
    //La valeur est 0 donc on affiche la phrase "notez cet article".
       echo '  <span class="rateit-msg">Notez cet article</span>';
    }
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <?php
    # -- BEGIN LICENSE BLOCK ----------------------------------
    # This file is part of rateIt, a plugin for Dotclear 2.
    #
    # Copyright(c) 2014-2015 Nicolas Roudaire <nikrou77@gmail.com> http://www.nikrou.net
    #
    # Copyright (c) 2009-2010 JC Denis and contributors
    # jcdenis@gdwd.com
    #
    # Licensed under the GPL version 2.0 license.
    # A copy of this license is available in LICENSE file or at
    # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    # -- END LICENSE BLOCK ------------------------------------
     
    if (!defined('DC_RC_PATH')){return;}
     
    class rateItContext
    {
    	# Form
    	public static function linker($enable,$type,$id,$note,$quotient,$style='')
    	{
    		global $core;
     
    		if (!in_array($style,array('classic','simple','twin')))
    		{
    			$style = $core->blog->settings->rateit->rateit_rating_style;
    		}
    		$like = $core->blog->settings->rateit->rateit_msglike;
    		if (empty($like)) { $like = __('I like'); }
    		$notlike = $core->blog->settings->rateit->rateit_msgnotlike;
    		if (empty($notlike)) { $notlike = __("I don't like"); }
    		$uid = uniqid();
    		$dis = $enable ? ' disabled="disabled"' : '';
     
    		$res =
    		'<form class="rateit-linker" method="post" action="'.
    		$core->blog->url.$core->url->getBase('rateItpostform').'/'.$type.'/'.$id.'">'.
    		'<p>'.
    		'<input type="hidden" name="linkertype" value="'.$type.'" />'.
    		'<input type="hidden" name="linkerid" value="'.$id.'" />'.
    		'<input type="hidden" name="linkeruid" value="'.$uid.'" />';
     
     
    		if ($style == 'simple')
    		{
    			$chk = $enable ? ' checked="checked"' : '';
    			$res .= '<input title="'.$like.'" name="'.$uid.'" class="rateit-'.$type.'-'.$id.'" type="radio" value="'.$quotient.'" '.$chk.$dis.' />';
    		}
    		elseif ($style == 'twin')
    		{
    			$chk = $enable ? ' checked="checked"' : '';
    			$res .= '<input title="'.$notlike.'" name="'.$uid.'" class="rateit-'.$type.'-'.$id.'" type="radio" value="1" checked="checked"'.$dis.' />';
    			$res .= '<input title="'.$like.'" name="'.$uid.'" class="rateit-'.$type.'-'.$id.'" type="radio" value="'.$quotient.'" '.$dis.' />';
    		}
    		else
    		{
    			for($i = 0; $i < $quotient; $i++)
    			{
    				$chk = $note > $i && $note <= $i+1 ? ' checked="checked"' : '';
     
    				$res .= '<input name="'.$uid.'" class="rateit-'.$type.'-'.$id.'" type="radio" value="'.($i+1).'"'.$chk.$dis.' />';
    			}
    		}
     
    		if (!$enable)
    		{
    			$res .= '<input class="rateit-submit" name="rateit_submit_'.$uid.'" type="submit" value="'.__('Vote').'" />';
    		}
    		$res .= '</p></form>';
     
    		return $res;
    	}
     
    	# Info
    	public static function value($name,$type,$id,$value)
    	{
    		return '<span class="rateit-'.$name.' rateit-'.$name.'-'.$type.'-'.$id.'">'.$value.'</span>';
    	}
    }
    if (empty ($value))
    {
    //La valeur est 0 donc on affiche la phrase "notez cet article".
       echo '  <span class="rateit-msg">Notez cet article</span>';
    }
    La, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       * * * * *
    Note 3 - Votes 12
    Notez cet article
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       * * * * *
    Note 0 - Votes 0
    Notez cet article

    En bref, je n'arrive pas à faire en sorte que cela puisse :

    - Afficher "Notez cet article" si votes / notes = 0
    - Afficher "Note - Votes" si votes / notes = 1 et +

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    L'erreur est due au fait qu'il manque un }.

    En tous cas une chose est sûre. Si tu veux afficher ce que tu veux il ne faut pas afficher la seconde ligne (qui affiche "Note 3 - Votes 12") et modifier la fonction value ne changera rien car la ligne sera toujours affichée.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <div class="note" property="aggregateRating" typeof="AggregateRating">
    {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span> <= ligne à ne pas afficher si pas de vote
    <meta property="bestRating" content="5">
    <meta property="worstRating" content="1">
    </div>

    Je ne connais pas ton moteur de template mais il faudrait (je pense) faire quelque chose du genre : j'ai mis $nombre_de_votes seulement pour rendre l'idée. Reste à savoir si tu as accès à cette donnée.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <div class="note" property="aggregateRating" typeof="AggregateRating"><?php
    if ($nombre_de_votes == 0) {?>
     <span>Notez cet article</span><?php 
    } else {?>
    {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
    <meta property="bestRating" content="5">
    <meta property="worstRating" content="1"><?php
    }?>
    </div>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    j'ai testé ta suggestion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <div class="note" property="aggregateRating" typeof="AggregateRating">
    <?php
    if (empty($note)) {
    ?>
     <span>Notez cet article</span>
    <?php 
    } else {
    ?>
    {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
    <meta property="bestRating" content="5">
    <meta property="worstRating" content="1">
    <?php
    }
    ?>
    </div>
       </div>
    Cela fonctionne "à moitié" ....
    c'est a dire qu'il y est note / vote 1 et + ou 0 le message reste le même, " Notez cet article".
    En gros lorsqu'il devrait afficher le nombres de votes + notes, il affiche uniquement "Notez cet article".

    Aurais-je fais une coquille quelque part ?

  8. #8
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Il y a fort à parier que $note ne soit pas la bonne variable.
    Le challenge est de trouver le nom de celle kivabien.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Exactement ça badaze !
    Voici le code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
                       <?php
                               if (empty($rateit_voted)) {?>
                                <span>Notez cet article</span>
                                <?php 
                               } else {?>
                               <div class="item" vocab="http://schema.org/" typeof="Blog">
                               <div class="rateit-title" property="name">{{tpl:EntryTitle encode_html="1"}}</div>
                               <div class="note" property="aggregateRating" typeof="AggregateRating">
                              {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
                              <meta property="bestRating" content="5">
                              <meta property="worstRating" content="1">
                              </div>
                              </div>
                              <?php
                              }?>
    Je te remercie de m'avoir éclairé et aidé à trouver cette solution.

    Je met permet encore une question.
    Dans le CMS que j'utilise (dotclear) l'inclusion php est permise, mais déconseillée, rapport à des problèmes éventuels de mise en cache etc...

    Cependant, il semble permis et conseillé d'inclure un code php non pas directement dans le template mais dans _public.php
    La méthode semble très simple, on crée une nouvelle balise via ce _public.php et on colle cette balise dans le template en question.

    Seul hic, le code php qui fonctionne dans le template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
                               if (empty($rateit_voted)) {?>
                                <span>Notez cet article</span>
                                <?php 
                               } else {?>
                               <div class="item" vocab="http://schema.org/" typeof="Blog">
                               <div class="rateit-title" property="name">{{tpl:EntryTitle encode_html="1"}}</div>
                               <div class="note" property="aggregateRating" typeof="AggregateRating">
                              {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
                              <meta property="bestRating" content="5">
                              <meta property="worstRating" content="1">
                              </div>
                              </div>
                              <?php
                              }?>
    Ne fonctionne pas dans le _public.php.
    Il semblerait que l’écriture ne soit pas la même.
    J'en suis à quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    $core->tpl->addValue('RateThis', array('tplMyThemeAdditions', 'RateThis'));
     
    class tplMyThemeAdditions {
            public static function RateThis($attr)
            {
                    return '<?php echo
                               if (empty($rateit_voted)) {
                                <span>Notez cet article</span>
                               } else {
                               <div class="item" vocab="http://schema.org/" typeof="Blog">
                               <div class="rateit-title" property="name">{{tpl:EntryTitle encode_html="1"}}</div>
                               <div class="note" property="aggregateRating" typeof="AggregateRating">
                              {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
                              <meta property="bestRating" content="5">
                              <meta property="worstRating" content="1">
                              </div>
                              </div>
                              } ?>';
            }
    }
    Évidement ce code ne fonctionne pas, aurait-tu une suggestion d’écriture plus "propre et correcte" du second code stp ?

  10. #10
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Ca ne peut pas fonctionner car la méthode attend un paramètre $attr et ne connaît pas $rateid_voted. Sans parler du fait que la copie du code tel quel ne fonctionne pas. Je n'ai pas le temps actuellement peut-être ce soir.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Encore une fois je te remercie pour ton intérêt badaze.

    J'attendrai de voir si tu à un exemple à me suggérer qui pourrait débloquer ma situation ainsi que ma compression de padawan du php.

  12. #12
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie ça. Mais comme je ne connais pas dotclear (et que je n'ai pas l'intention de m'y mettre) c'est 100% au pif.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?php
    class tplMyThemeAdditions {
            public static function RateThis($attr)
            {
       global $rateit_voted;
     
                if (empty($rateit_voted)) {?>
        <span>Notez cet article</span><?php
                } else {?>
                    <div class="item" vocab="<a href="http://schema.org/" target="_blank">http://schema.org/</a>" typeof="Blog">
                    <div class="rateit-title" property="name">{{tpl:EntryTitle encode_html="1"}}</div>
                    <div class="note" property="aggregateRating" typeof="AggregateRating">
                    {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
                    <meta property="bestRating" content="5">
                    <meta property="worstRating" content="1">
                    </div>
                    </div><?php
                }
            }
    }?>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour badaze...
    Désolé pour cette réponse tardive.

    J'imagine que tu n'en attendait pas forcement, mais si par curiositée cela t'intereserait, voici le bon code traduit en xtml.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <div class="voter">
                   <tpl:rateIt type="post">
                    <div class="rateit">{{tpl:rateItLinker}}</div>                  
                   <tpl:rateItIf user_voted="0"><div class="ratethis"><span>Notez cet article</span></div></tpl:rateItIf>
                    <tpl:rateItIf user_voted="1">
                     <div class="item" vocab="http://schema.org/" typeof="Blog">
                     <div class="rateit-title" property="name">{{tpl:EntryTitle encode_html="1"}}</div>
                     <div class="note" property="aggregateRating" typeof="AggregateRating">
                     {{tpl:lang Note:}} <span property="ratingValue">{{tpl:rateItNote}}</span> - {{tpl:lang Votes:}} <span property="ratingCount">{{tpl:rateItTotal}}</span>
                     <meta property="bestRating" content="5">
                     <meta property="worstRating" content="1">
                     </div>
                     </div>
                   </tpl:rateItIf>
                   </tpl:rateIt>
           </div>
    Cela dit, une "option" (un code) me manque encore, à savoir rafraichir l'affichage lorsqu'un vote est fait (ou passer de "notez ce message" à vote = n* - note = n*")...si tu as une idée je suis preneur.

    Voila, merci encore pour ton aide qui m'a bien orientée.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/05/2009, 09h00
  2. Réponses: 1
    Dernier message: 22/07/2008, 15h25
  3. mise à jour en fonction d une liste modifiable
    Par sunwind dans le forum Access
    Réponses: 2
    Dernier message: 10/08/2007, 15h50
  4. Mise à jour en fonction d une saisie
    Par rico63 dans le forum Access
    Réponses: 8
    Dernier message: 01/03/2007, 17h41
  5. Réponses: 10
    Dernier message: 11/01/2007, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo