Greffon pour DotClear2 : billet aléatoire V0.2
Par ȷulmud le dimanche 21 janvier 2007, 16:46 - Free the code! - Lien permanent
Bon, tant qu'à faire, voici déjà une nouvelle version pour ce petit greffon. Vous pourrez dorénavant utiliser un widget de présentation pour afficher le lien de redirection.
Mise à jour : Voici la version 0.2a. Seule différence : il y a maintenant une icône pour ce plugin. Merci à Franck pour l'idée d'utiliser un dé. Les fichiers de la version 0.2a ont été ajoutés en annexe à ce billet. Fin de la mise à jour.
Mise à jour, mardi matin : Une bogue m'a été signalée par Fred : ce greffon ne fonctionne qu'avec une base de données MySQL. Je vais faire mon possible pour faire en sorte qu'il soit indépendant du type de base (ou, en tout cas, supporte les mêmes bases de données que DotClear2). Désolé... Fin de la deuxième mise à jour.
À koi k'ça sert ?
Ce greffon vous offre la possibilité de créer un lien qui redirige le visiteur vers un billet tiré au hasard parmi tous les billets publics[1] de votre blog.
Koi k'y a de neuf ?
Plus besoin de mettre les mains dans le cambouis pour ajouter le lien dans votre template, il y a maintenant un widget de présentation qui vous simplifie la vie.
Utilisation
Facile : éditez le template de votre blog, et ajoutez-y un lien avec comme destination (l'attribut href
) la fonction de template {{tpl:RandomPostURL}}
et c'est tout. Ou alors, utilisez le joli petit nouveau widget de présentation pour ajouter le lien dans vos bandeaux de navigation...
Pour savoir quelles sont les paramètres à utiliser pour styler le lien dans votre bandeau de navigation, regardez la page du plugin, tout y est détaillé.
Bogues connues
- Il n'y a pas d'icône pour ce greffon dans l'interface d'administration... Si quelqu'un a une (idée de) jolie image à proposer, je suis preneur. Corrigé dans la version 0.2a.
- Ne fonctionne pas sur des bases de données autres que MySQL.
Je veux voir !
Allez sur mon photoblog, cliquez sur le lien « Photo au hasard » et voilà ! Vous avez été redirigé vers une photo tirée au hasard.
À venir
Une icône pour le plugin le jour où j'aurai une idée
Téléchargement
Hop, jetez un œil dans les fichiers joints à ce billet...
Remarques, commentaires, rapports de bogues, ...
... sont toujours les bienvenus dans les commentaires de ce billet.
Notes
[1] Il s'agit donc des billets publiés et non protégés par un mot de passe.
Commentaires
Deux dès qui roulent pourraient être pas mal comme icône, non ?
Ah oui, c'est une bonne idée... Il faudra voir si une telle image peut garder toute sa lisibilité dans une icône de 16x16 pixels...
C'est dommage que le widget (indispensable) ne donne pas la possibilité de s'afficher comme si c'était une rubrique du menu mais donne (pour le moment ?) uniquement comme un simple lien.
Petit plus qui pourrait carrément être sympa aussi : avoir la possibilité que le texte du lien soit le titre du billet :).
Je ne sais pas si c'est envisageable d'imaginer ces possibilité en code, tout en laissant le choix à l'utilisateur
Je l'utilise sur Yazerty.Net
Yazerty : je suis content que cela vous plaise. En ce qui concerne l'affichage du widget, j'ai volontairement choisi un style équivalent à celui du widget « Liens de navigation. » Étant donné que le lien est contenu dans un div qui lui est propre, j'ai le sentiment que l'on doit pouvoir le donner n'importe quel style, mais je reconnais ne pas être un pro des CSS. (Et je ne vois pas ce que vous voulez dire par « rubrique du menu » ?)
Pour l'affichage du titre du billet tiré aléatoirement, la solution actuelle ne le permet pas. En effet, le billet est tiré aléatoirement après que l'utilisateur ait cliqué. Avantage : cela permet d'avoir une URL propre ( http://www.example.com/blog/random ) qui redirige au hasard vers un billet, chose qui ne serait pas possible en tirant le billet au hasard à l'avance. Mais il me serait assez facile d'envisager une solution où l'administrateur du blog peut choisir entre les deux options. Je vais y réfléchir...
Pour la "rubrique" : dans le thème par défaut de DC2 chaque partie du menu voit son titre grisé. Par exemple "Derniers billets" dans le menu de mon blog. Cela grâce à un simple titre donné au plugin et une balise <h2>Titre</h2>.
Mais finalement le lien s'intègre très bien en dessous des titres des derniers billets du blog :).
Vouala, donc en fait je reviens un peu sur ce que je disais de prime abord.
Merci encore pour ce plugin sympa !
Bonne idée... J'ai placé le greffon : Tout va vien, sauf l'erreur suivante lorque je clique sur le lien :
Something went wrong: ERROR: function rand() does not exist
HINT: No function matches the given name and argument types. You may need to add explicit type casts.
Une idée ??
Fred : Oui, j'ai une très bonne idée d'où peut venir le problème : je n'ai pas testé mon greffon avec une autre base de données que MySQL... et les bases de données permettant de faire tourner DotClear2 chez Free sont des bases PostgreSQL. Il va falloir que je me construise des environnements de tests supplémentaires pour vérifier sur tous les types de bases supportées par DotClear2.
Si vous voulez essayer une correction simple : dans le fichier _public.php, modifiez
order="rand()"
parorder="random()"
(Note : je cite cela de mémoire... mais il ne devrait y avoir qu'un seulrand
dans ce fichier, et il faut le remplacer parrandom
.) Si vous faites ce test, merci de me tenir au courant du résultat.Désolé pour le désagrément... :-/
J'ai trouvé le bug :
ma base est postgreSQL et order by rand() n'existe pas. il faut Order by random()
Conclusion, il faut faire un test sur le type de base avant de lancer la requête.
bon courage.
La modif fonctionne bien.
Suggestion d'amélioration :
J'avais moi-même crée un plugin de ce type pour dotclear 1 (visible sur http://fredloup.free.fr/fredblog/in..., dans la barre latérale gauche, recette du jour).
Le titre du billet tiré au hasaard et l'entête sont affichés dans la barre latérale.
Envisagez vous de reprendre cette fonctionalité ?
lisez le post relatif à ce vieux greffon : http://fredloup.free.fr/fredblog/in...
Fred : Je vais devoir repenser intégralement la manière de fonctionner de ce greffon (pour la rendre indépendante du type de base de données, et pour éviter le «
order by random()
» qui est très couteux dès que la table devient de taille moyenne). Je vais en profiter pour étudier les demandes d'évolution qui m'ont été faites...