Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
@ BG : il m'avait échappé, bien vu ;-)
@ amalgame : si seulement on pouvait arrêter de donner un nom français et un nom anglais pour le même plugin. C'est beaucoup plus perturbant ;-)
@ annso : il y a des projets comme We Love Dotclear qui ne pourrait s'en servir. C'est pourquoi ce que j'évoquai dans mon message d'origine (#1) me semble moins casse-tête en choissisant soi-même les billets similaires (en y accédant comme pour faire un "lien interne").
Une des solutions en "manuel" est d'utiliser le plugin postWidgetText mais bon...
Hors ligne
@ amalgame : si seulement on pouvait arrêter de donner un nom français et un nom anglais pour le même plugin. C'est beaucoup plus perturbant ;-)
Gné ? Billets connexes 2 est français, non ?
Hors ligne
Gné ? Billets connexes 2 est français, non ?
Le premier du nom en tout cas, son nom original est "Related Posts". Il est trouvable sous son nom français et anglais.
Hors ligne
Wé, remarque c'est vrai qu'on a un problème général avec les noms de plugins en anglais et en français qui se mélangent joyeusement... mais ce n'est pas ici le sujet.
Donc Related Posts Reloaded, pour reprendre la suggestion de Franck :p
Hors ligne
Hum, en fait, ce que j'ai fait ne me plait pas : en utilisant les behaviors, j'arrive directement après l'article, or je voudrais plutôt créer une nouvelle section avec un h3 et co (en fait, être au niveau hiérarchique des commentaires et du formulaire).
Donc retour au plugin déjà existant sauf que je n'aime pas trop son mode de fonctionnement. Les balises ont été redéfinies :
<h3>{{tpl:TagPostsTitle}}</h3>
<ul>
<tpl:TagPostsList>
<li><a class="tip" href="{{tpl:TagPostsEntryUrl}}" title="{{tpl:TagPostsEntryAbstract}}">{{tpl:TagPostsEntryTitle}}</a></li>
</tpl:TagPostsList>
</ul>
et surtout la balise {{tpl:TagPostsEntryFirstImage width="80" height="80"}} qui renvoie un code du genre <img src="theme/montheme/thumb.php?http://www.monblog/public/premiereimagedelarticle.jpg" /> où thumb.php doit être copié dans le thème et génère une miniature. Ça marche, mais c'est dégueulasse (si je peux me permettre).
J'aimerais pouvoir réutiliser les balises déjà existantes :
<h3>Vous aimerez aussi </h3>
<ul>
<tpl:SimilarEntries>
<li><h2 class="post-title"><a href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2><div class="picture">{{tpl:EntryFirstImage}}</div></li>
</tpl:SimilarEntries>
</ul>
Mais je n'ai aucune idée de la "réalisibilité" de la chose : existe-t-il un plugin qui définit une nouvelle boucle et qui permet ensuite d'utiliser les balises déjà existantes - dont je pourrais m'inspirer ? Ou bien créer une nouvelle boucle implique de créer de nouveaux marqueurs pour aller dedans ?
Hors ligne
J'ai peut être trouvé une réponse d'adjaya qui me permettrait d'écrire :
<div id="relatedPosts">
{{tpl:RelatedPosts}}
<h3>Vous aimerez aussi</h3>
<tpl:Entries lastn="3">
<div class="picture"><a href="{{tpl:EntryURL}}">{{tpl:EntryFirstImage}}</a></div>
</tpl:Entries>
</div>
Ça n'est pas encore exactement ce que je voudrais mais ça y ressemble pas mal, je vais essayer !
Hors ligne
Bonjour annso,
Est-ce que je peux me permettre de te demander où tu en es du plugin billets similaires #2 ?
Il m'intéresse beaucoup ;-)
Merci.
Hors ligne
Hello,
J'ai réussi à répondre à mes besoins, mais cela ne mérite pas un plugin. Je n'ai pas réussi à obtenir des billets possédant les mêmes tags, mais je me suis rendue compte qu'il me fallait en fait plutôt les billets de la même catégorie, et pour ça je n'ai pas eu de problème.
En revanche, du fait de l'utilisation d'une boucle Entries native, on ne peut pas avoir des billets aléatoires (il manque un sortby="random").
Si malgré tout ça t'intéresse, c'est assez simple à mettre en œuvre : il faut mettre une balise avant une boucle Entries. Dans mon _post.html, j'ai donc :
<div id="relatedPosts">
<h3>Vous aimerez aussi</h3>
{{tpl:MyRelatedPosts}}
<tpl:Entries lastn="8">
<div class="picture"><a href="{{tpl:EntryURL}}">{{tpl:EntryFirstImage size="t"}}</a></div>
</tpl:Entries>
</div>
et dans le _public.php du thème :
<?php
$core->tpl->addValue('MyRelatedPosts',array('tplMyRelatedPosts','myRelatedPosts'));
class tplMyRelatedPosts
{
public static function myRelatedPosts($attr)
{
global $core, $_ctx;
$sql = ' AND post_id != '.$_ctx->posts->post_id;
if ($_ctx->posts->cat_id != null) $sql .= ' AND P.cat_id = '.$_ctx->posts->cat_id.' ';
$res = "<?php\n";
$res .= "\$params['post_type'] = 'post';\n";
$res .= "\$params['blog_id'] = \$core->blog->id;\n";
$res .= "\$params['post_statut'] = 1;\n";
$res .= "\$params['sql'] = '". $sql ."'; \n";
$res .= "?>\n";
return $res;
}
}
?>
Hors ligne
Merci, je vais essayer ça lorsque je serais plus avancé dans le projet que je développe en ce moment.
Que pense-tu de la pertinence des résultats proposés avec ce code ? Je ne suis pas sûr d'avoir compris, mais le code reprend les 8 derniers billets de la même catégorie ? Ou alors la recherche de billets similaires s'appuie sur d'autres paramètres ?
Merci ;-)
Hors ligne
En fait, le code ne fait que rajouter des paramètres à la requête de la boucle Entries : je veux tous les billets de la même catégorie que le post courant qui ne sont pas ce post courant.
Ensuite, tu peux affiner la sélection en ajoutant des paramètres à la boucle Entries (voir la doc).
(j'espère que je suis plus claire !)
Hors ligne
On doit pouvoir faire la même chose avec les tpl existants :
<tpl:Entries category="#self" no_context="1" lastn="8" exclude_current="1">
<tpl:EntriesHeader>
<div id="related-posts">
<h2>{{tpl:lang In the same category}} : <a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a></h2>
<ul>
</tpl:EntriesHeader>
<li><a href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}">
{{tpl:EntryTitle encode_html="1"}}</a>
</li>
<tpl:EntriesFooter>
</ul>
</div>
</tpl:EntriesFooter>
</tpl:Entries>
Nan ?
Hors ligne
Hors ligne
Mais dites moi, ce code affiche "que" les 8 derniers billets de la catégorie en cours, ou alors il y a un autre filtrage (pertinence des tags ? occurrence de mots ?) ?
Merci ;-)
Hors ligne
Je ne connaissais pas le paramètre exclude_current, mais du coup oui, ça a l'air de faire la même chose. Comme quoi, mon bout de code n'est vraiment pas utile !
Le exclude_current passe par ce bout de code dans le _public.php :
$core->addBehavior('templateBeforeBlock',array('behaviorsExcludeCurrentPost','templateBeforeBlock'));
class behaviorsExcludeCurrentPost
{
public static function templateBeforeBlock($core,$b,$attr)
{
if ($b == 'Entries' && isset($attr['exclude_current']) && $attr['exclude_current'] == 1)
{
return
"<?php\n".
'$params["sql"] .= "AND P.post_url != \'".$_ctx->posts->post_url."\' ";'."\n".
"?>\n";
}
}
}
Aucune idée de ce qui est le plus approprié ;-)
Hors ligne
Ta solution est plus propre :)
Et moi, j'ai réinventé la roue, mais bon, c'est pas bien grave, ça m'a fait chercher un peu et comprendre certains comportements de dotclear.
Hors ligne
Comme le plugin billets connexes ne semble plus exister dans une version à jour, j'utilise le code suivant suggéré dans les précédents posts :
<tpl:Entries category="#self" no_context="1" lastn="5" exclude_current="1">
<tpl:EntriesHeader><ul></tpl:EntriesHeader>
<li><a href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}">{{tpl:EntryFirstImage}}</a></li>
<tpl:EntriesFooter></ul></tpl:EntriesFooter>
</tpl:Entries>
Pour autant, j'aurais deux questions :
- comment obtenir un résultat comparable mais reposant non plus sur la catégorie mais sur les tags ?
- pour faire fonctionner "exclude_current" doit-on obligatoirement passé par le code du post #41 ?
Hors ligne
D'ailleurs, au passage, j'ai testé le bout de code proposé dans le post #41, et malheureusement ça ne marche pas...
Hors ligne
- comment obtenir un résultat comparable mais reposant non plus sur la catégorie mais sur les tags ?
Autant pour les catégories, la modification de la requête est facile (catégorie = categorie_courante), autant pour les tags, c'est plus compliqué. On veut au moins 1 tag en commun ? Tous ? Un nombre arbitraire comme 3 ?
Hors ligne
Il me semble que le plugin Billets connexes va chercher les articles utilisant le maximum de tags similaires pour les afficher en premier.
Blog perso : www.goudie.biz
Powered by Dotclear : Meilleurs jeux pour tablettes Android et Applications Android
Hors ligne
Autant pour les catégories, la modification de la requête est facile (catégorie = categorie_courante), autant pour les tags, c'est plus compliqué. On veut au moins 1 tag en commun ? Tous ? Un nombre arbitraire comme 3 ?
Tiens, je me permets de faire remonter le fil de cette discussion pour faire une remarque et reposer une question.
En parcourant cette page, je pensais avoir trouvé tout ce dont j'ai besoin :
http://fr.dotclear.org/documentation/2. … gs/entries
Puis je me suis rendu compte que <tpl:Entries tag="faune et flore"> ne fonctionnait pas si on y incluait un "?not" pour exclure les articles d'un tag spécifique.
Est-ce un oubli ou une volonté ? Ça peut se révéler bien pratique dans certains cas. ^^
Et donc sinon, je reviens à la charge : j'aimerais réaliser une sélection de billets en fonction des tags, et plus précisément, en décidant par exemple "au moins 2 tags en commun".
J'ai essayé pas mal de choses mais rien ne fonctionne.
Pourriez-vous me mettre sur la piste de la procédure à suivre pour réaliser cela ? :-)
Merci !
Hors ligne
Si je devais me répondre à ma problématique, je me tournerai vers le plugin Series de Franck Paul.
Hors ligne
Vous n'êtes pas identifié(e).