Greffon pour Dotclear2 : shortURL v0.3.3
Par ȷulmud le jeudi 24 septembre 2009, 19:44 - Free the code! - Lien permanent
L'arrivée prochaine d'une nouvelle version de Dotclear (la 2.1.6) implique une mise à jour de certains plugins. shortURL fait partie du lot nécessitant une nouvelle version pour rester compatible. La voici...
La seule nouveauté au programme :
- compatibilité avec la version 2.1.6 de Dotclear2.
À koi k'ça sert ?
Ce greffon permet d'utiliser une URL raccourcie pour accéder aux billets de votre blogue. Cela vous permettra de publier l'URL de billets lorsque vous êtes limités sur le nombre de caractères dans votre message (par exemple avec Twitter).
Utilisation
Après installation de ce greffon, allez dans les paramètres de votre blogue et activez le système des URLs raccourcies. Dès lors, une nouvelle entrée fait son apparition dans le menu à droite lors de l'édition de billets ou de pages. Cette entrée nommée Short URL affiche votre URL raccourcie pour accéder au billet. Note : cette entrée n'apparaît que lorsque le billet a été enregistré !
Si vous le souhaitez, vous pouvez également publier cette URL dans votre blogue. Pour cela, il suffit de modifier votre thème et d'utiliser la méthode de template {{tpl:EntryShortURL}}
. Évidemment, cela ne fonctionne que dans le cadre d'une boucle de billets.
L'équivalent est également disponible dans l'affichage des commentaires et peut être affiché sur le blog via la méthode {{tpl:CommentShortURL}}
.
Je veux voir !
L'URL raccourcie de ce billet : http://mudry.org/blog/shurl/Uo
L'URL raccourcie de la page À propos de mon photoblogue : http://mudry.org/photoblog/shurl/2503
L'URL raccourcie d'une galerie de mon voyage au Japon : http://mudry.org/galerie/shurl/1978
Le commentaire de theClimber demandant quelques évolutions : http://mudry.org/blog/shurlc/1Kk
Koi k'ya de neuf ?
C'est une simple mise à jour pour rester compatible avec la prochaine version de Dotclear2 (la 2.1.6). Toutefois, ce greffon reste compatible avec la version courante de Dotclear2...
Remarques
- Dans les préférences liées à ce greffon, il vous faut choisir deux préfixes d'URL (un pour pointer vers les billets, l'autre pour pointer vers les commentaires). Ces deux préfixes doivent être différents, mais aucune vérification n'est effectuée lors de la sauvegarde des paramètres. Si vous constatez un comportement bizarre (particulièrement des erreurs de pages non trouvées lorsque vous utilisez une URL raccourcie), commencez par vérifier que ces deux paramètres sont bien différents.
- Je ne conseille pas vraiment l'utilisation de la version ultra-courte des URLs. Le gain est généralement faible (chez moi deux ou trois caractères) et cela apporte de potentiels problèmes de lecture et de compréhension de l'URL (risque de confusion entre 'I', 'l' et '1' par exemple).
- Étant donné que tout le processus d'identification des billets se base sur l'ID du billet (ou du commentaire), les URLs raccourcies ont de fortes chances de ne plus être identiques si vous réimportez votre blogue. Par conséquent, je vous conseille de ne surtout pas les utiliser pour faire des liens internes à votre blogue (pas comme je le fais ci-dessus, en fait ;-) ).
- Que vous activiez ou non le support des URLs encore plus courtes, les deux systèmes fonctionnent de toute façon en parallèle. Le paramètre n'influence en fait que sur l'affichage (que ce soit dans l'interface d'administration du blogue ou via les méthodes de template idoines).
Téléchargement
Hop, jetez un œil dans les annexes à ce billet...
Remarques, commentaires, rapports de bogues, ...
... sont toujours les bienvenus dans les commentaires de ce billet.
Crédits
Sur une idée que theClimber avait proposé sur le forum Dotclear. Une partie du code est fortement inspirée du greffon gallery de Dsls.
Commentaires
Bonjour,
Merci bien pour ce plugin qui fait tout à fait ce que je cherchais.
Cependant, je n'arrive pas à la faire fonctionner comme je le voudrais, je m'explique :
Si je colle le dans le post.html de mon thème, le shortUrl de mon post s'affiche bien dans mon post.
Or j'ai installé un plugin pour m'ajouter les liens partager à mes posts sur les réseaux sociaux et du coup mes liens ne sont pas écrits en dur dans le fichier post.html mais construits dans le php de mon plugin. Résultat : il me balance
http://twitter.com/home?status={{tpl:EntryShortURL}}
sans remplacerY a t il une variable globale PHP que je pourrais utiliser ?
Je m'en suis sorti en reconstruisant mon shortUrl à partir de post_id
dub : Je ne sais pas comment fonctionne votre plugin pour le partage vers les réseaux sociaux, mais une chose est sure : Dotclear ne supporte pas que des tags de template soient inclus à l'intérieur d'un autre tag de template. Je suppose que c'est ce qui se passe ici...
Hello, pourrais-tu proposer dans ce plugin l'ajout automatique d'une ligne de type :
Source : http://microformats.org/wiki/rel-sh...
Dans la partie <head> d'un billet ou d'une page (voire tout type de post. Cf extension muppet) via le behaviour
publicHeadContent
?Merci
Osku : Done! (Même si je ne suis pas super convaincu de la manière dont je récupère les contextes pour gallery et muppet.)
Cool. Pour les différents post_types, abracadabra
Osku : Oh punaise, quel benêt je fais... Probablement une nouvelle version ce soir du coup. Merci beaucoup.
Osku : En fait... euh... oui... mais non ! Les pages ont un
post_type
qui estpage
, mais leur contexte d'affichage ($core->url->type
) estpages
... Donc passer par$core->getPostTypes()
n'est pas failproof non plus. Et passer par$core->url->getTypes()
me renvoie tous les types d'URL, dont la majorité ne correspondent pas à un contexte d'affichage d'un « billet » unique.Ah... mais comment dire... je me permets d'insister.
Osku : Moi z'aussi, je vais me permettre d'insister... Le
public_url
dupost_type
est bien ce que le nom indique : une URL. Si je m'appuie là-dessus, cela implique du parsing qui peut s'avérer étrange... et toujours aucune certitude d'un lien entre l'URL et l'url->type
. D'autant plus que certaines extensions (related par exemple) permettent de paramétrer à la guise de l'administrateur du blog le schéma de l'URL. (Par exemple, pour leurl->type
related, j'ai unpublic_url
qui est « static » chez moi.)Bon... dernière cartouche : pour URL accédée,
getDocument
nous donne leurl->type
, oui ? et par ailleurs on connait les types d'URL qui correspondent à des posts (pages, related, billets classiques, gallery, etc.) non ? on ne peut pas vraiment s'en sortir ?Osku : Mon souci est de réussir à faire ce lien entre
post_type
eturl->type
de manière générique. Dans le code de Dotclear, c'est fait de la manière suivante :getDocument()
recherche leurl->type
qui correspond à l'URL appelée (via un test d'expressions rationnelles) ;url->type
connu,getDocument()
connaît également le handler associé à ce type d'URL et peut alors déléguer le traitement au handler idoine ;getPosts()
dans la base pour retourner le ou les billets souhaités ;<tpl:Entries>
du fichier de template va chercher dans la base de données les billets ayant lepost_type
qui l'intéresse.Puisqu'au final c'est le handler qui décide du
post_type
à rechercher, il ne me semble pas y avoir de moyens permettant de lier de manière certaine et générique unurl_type
et unpost_type
. D'un autre côté, ce que j'ai codé fonctionne très bien pour les trois plugins non standards que je connais qui définissent de nouveauxpost_type
(related, muppet et gallery) et il n'est pas très compliqué d'y ajouter de nouveaux cas... mais cela restera toujours du réactif. :-/Que penses-tu de ça ?
Osku : Non, il y a toujours le problème page/pages... mais par contre, cela m'a inspiré pour écrire le code ci-dessous qui semble fonctionner dans tous les cas que j'ai trouvés. Par contre, c'est construit intégralement sur le fait que le
public_url
dupost_type
est toujours du formatquelquechose/%s
. Ce qui ne me rassure qu'à moitié, puisque c'est laissé au choix du créateur du plugin... À voir...