Un loup blessé

Le blog, sous DotClear, d'un Geek Gay DVDvore. Naïf paranoïaque, utopiste désabusé.

Contenu | Menu | Sidebarre | Extra | Recherche | Bas de page

Deezer / Blogmusik valide XHTML dans WordPress malgré l'éditeur visuel

Je vais essayer de vous montrer qu'il est possible d'intégrer un player Deezer / Blogmusik dans un billet de WordPress, malgré la présence de l'éditeur visuel qui casse la code et le tout passant la validation XHTML.

1 - Prérequis :

- Je ne suis pas un pro de WordPress, je fais cela pour aider, alors attention aux commentaires. Si vous êtes un pro de WordPress et que vous savez mieux faire que moi, commencez déjà par vous poser la question comment cela se fait que c'est à moi qu'on vienne demander de l'aide et pas à vous... Par contre, tout commentaire venant apporter sa pierre à l'édifice est le bienvenu.

- Dans Options / Ecriture (de votre WordPress), assurez-vous d'avoir décoché l'option "WordPress doit automatiquement corriger les balises XHTML non valides". Parce que si vous ne savez pas mettre vos "simples" balises XHTML valides et que vous comptez sur WordPress pour le faire à votre place, on n'est pas sortie de l'auberge ! D'ailleurs, dans ce cas, je ne sais même pas ce que vous faites ici à lire ce tutoriel, c'est pour vous du chinois, ne vous infligez pas ce supplice :pasbien:

2 - Afin de travailler sur du concret, je vais résoudre le problème de Jérôme du blog Playmobils Estropiés & Associés : intégration d'une playlist Deezer dont il m'a donné le code fourni par Deezer.

Le code non valide :


<div style="width:180px;height:236px;">
<object width="180" height="236">
<param name="movie" value=" http://www.deezer.com/embedded/widget.swf?path=2548914&lang=fr&autoplay=0&id=328169"></param>
<embed src=" http://www.deezer.com/embedded/widget.swf?path=2548914&lang=fr&autoplay=0&id=328169" type="application/x-shockwave-flash" width="180" height="220">
</embed>
</object>
</div>

En suivant le protocole que j'avais donné pour rendre un code Blogmusik valide XHTML, cela ne fonctionne pas, pourquoi ? (alors que cela fonctionne très bien avec DotClear 1 et DotClear 2)

Le code obtenu est pourtant valide XHTML :


<div style="text-align: center;">
<object type="application/x-shockwave-flash" data="http://www.deezer.com/embedded/widget.swf?path=2548914&amp;lang=fr&amp;autoplay=0&amp;id=328169" width="180" height="220">
<param name="movie" value="http://www.deezer.com/embedded/widget.swf?path=2548914&amp;lang=fr&amp;autoplay=0&amp;id=328169" />
<p>Editors - BestOf (en flash)</p>
</object>
</div>

Parce que l'éditeur visuel de WordPress tente de modifier le code et le "casse" ! Je vais donc vous proposer plusieurs façon de faire et vous laisser choisir celle qui vous plait le mieux :

  • a) Utiliser les propriétés du Doctype transitionnel - Intégration à l'aide d'une iframe

La plupart des thèmes sous WordPress ont un Doctype XHTML transitionnel et permettent donc l'utilisation des "iframe" (qu'il n'est pas possible d'utiliser lorsque l'on code en XHTML strict). En intégrant le code du player Deezer par iframe, l'éditeur visuel ne verra pas le code du player, n'y mettra pas son nez et ne le cassera pas, nananère !

Commencez donc par vérifier que votre Doctype est bien un transitionnel en vous positionnant sur l'une des pages de votre blog et en demandant à votre navigateur d'afficher le code source. La première ligne se doit d'être le Doctype, si cette ligne contient le mot "Transitional", c'est gagné, vous pouvez utiliser les "iframe". (Si vous préférez regarder les fichiers de votre thème, jetez un oeil du côté du header.php)

La manipulation que je vous propose est donc toute simple, copiez le code valide XHTML utilisé juste au-dessus dans un fichier que vous nommez par exemple "Deezer1.html". Uploadez-le dans un répertoire précis sur votre hébergement (je l'ai mis dans un répertoire /share/ de mon répertoire wordpress) et utilisez ce code que vous mettez dans votre billet :


<p style="text-align: center"><iframe src="http://votrenomdedomaine/share/Deezer1.html" class="deezer" align="middle" frameborder="0" width="220" height="270" ></iframe></p>

Il faut bien évidemment adapter le chemin du src selon votre paramétrage.
Si vous avez envie de personnaliser la présentation par CSS, rajouter une classe "deezer" dans votre "style.css".
Attention, le player ayant width="180" et height="220", il faut que l'iframe soit plus grande que lui si vous ne voulez pas voir apparaitre de disgracieux ascenseurs ! Après plusieurs essais avec différents navigateurs, il semblerait que width="220" et height="270" soient les meilleurs paramètres pour l'iframe.

Lorsque vous voudrez intégrer une autre playlist, il suffira de recopiez le fichier Deezer1.html dans par exemple un Deezer2.html, de modifiez les DEUX "path", les DEUX "id" et le texte alternatif (compris entre <p> et </p>) puis de mettre dans votre billet, le même code de l'iframe en remplaçant Deezer1.html par Deezer2.html etc...

Pour voir le rendu ou vérifier la validité XHTML de cet exemple, je vous invite à lire "Deezer dans une iframe" sur mon blog de test WordPress.

  • b) Méthode "à l'arrache"

Enfin, pas tout à fait car même en forçant, l'éditeur fait des siennes mais enfin bon, on en est pas très loin...

Reprenez le code valide XHTML du dessus. Positionnez votre curseur sur le début de la dernière ligne (le </div>) et faite un "backspace" pour la coller à la ligne précédente. Recommencez la même chose avec la ligne précédente (le </a> que vous collez à l'<img...> du dessus) et encore et encore jusqu'au <div style et obtenir un bloc supprimé de ses retours à la ligne. Faites la même chose avec le deuxième </div> et supprimer les deux balises <p> et </p> du texte alternatif pour obtenir quelque chose de ce genre :


<div style="text-align: center;"><object type="application/x-shockwave-flash" data="http://www.deezer.com/embedded/widget.swf?path=2548914&amp;lang=fr&amp;autoplay=0&amp;id=328169" width="180" height="236"><param name="movie" value="http://www.deezer.com/embedded/widget.swf?path=2548914&amp;lang=fr&amp;autoplay=0&amp;id=328169" />Editors - BestOf (en flash)</object></div>

Ecrivez votre billet sous WordPress comme d'habitude mais sans insérer le code du player. Allez désactiver l'éditeur visuel (Utilisateurs / Modifier / décochez "Utiliser l'éditeur visuel pour écrire" puis cliquez sur le bouton "Mettre à jour l'utilisateur"). Retournez dans votre billet, insérer le bloc de code modifié (supprimé de ses retours charriots) et publier directement. Vous pouvez ensuite réactiver l'éditeur visuel mais si vous le réactivez, si vous retournez voir votre billet, surtout ne le modifiez pas, le code serait "cassé" ! Pour modifiez votre billet, il faut IMPERATIVEMENT penser à désactiver l'éditeur visuel avant de retourner sur le billet.

Pour voir le rendu ou vérifier la validité XHTML de cet exemple, je vous invite à lire "Deezer à l'arrache" sur mon blog de test WordPress.

  • c) Méthode "Je veux modifier le billet après coup avec l'éditeur visuel actif mais pas utiliser d'iframe", alors il va falloir plus de deux neurones en marche" - Not blonde inside - Brun très foncé exigé :evil:

Je vais modifier le code utilisé dans le point (b) afin qu'il dérange le moins possible l'éditeur visuel. Il le dérangera quand même donc il faudra faire attention avant de publier ou de modifier votre billet de le remodifier légèrement à chaque fois.

Insérer donc ce code à la place :


<p style="text-align: center"><object type="application/x-shockwave-flash" data="http://www.deezer.com/embedded/widget.swf?path=2548914&amp;lang=fr&amp;autoplay=0&amp;id=328169" height="236" width="180"><param name="movie" value="http://www.deezer.com/embedded/widget.swf?path=2548914&amp;lang=fr&amp;autoplay=0&amp;id=328169"></param>Editors - BestOf (en flash)</object></p>

D'une fois sur l'autre, quand vous changez de playlist, il faut changer les DEUX "path", les deux "id" et le texte alternatif compris entre la balise </param> et la balise </object> (dans cette exemple, j'ai mis "Editors - BestOf (en flash)" comme texte alternatif).

Vous intégrez ce code dans votre billet au dernier moment, juste avant la publication, comme indiqué au point (b) précédent.

Lorsque vous voulez modifier votre billet, juste avant d'enregistrer, retournez sur le code du player. Vous constaterez que l'éditeur a rajouté un saut de ligne derrière le width="180"> soit juste avant le <param name="movie" . Il suffit de se positionner devant le <param name="movie" et de faire un backspace pour le recollez au width="180">. Si vous ne le faites pas, la fois suivante, il déplacera carrément le </object></p> derrière le width="180"> et le code sera complètement inutilisable, non seulement vous perdrez la validité XHTML mais aussi le player ne fonctionnera plus correctement. Et oui, c'est cela que d'avoir un éditeur visuel qui se mêle de ce qui ne le regarde pas :ange:

Pour voir le rendu ou vérifier la validité XHTML de cet exemple, je vous invite à lire "Deezer" sur mon blog de test WordPress.

AMUSEZ VOUS BIEN...

(Vous pouvez poser des questions s'il y a des choses qui ne vous semble pas claires, je ne mords pas, enfin, pas souvent 8-) )

Tag(s) :   - ,  - ,  - ,  - 

Share/Bookmark

1loup sous WordPress Plugin Deezer / imeem valide XHTML pour WordPress

Trackbacks

Aucun trackback.

Pour faire un trackback sur ce billet, changez tb.php par tada.php dans ceci :
http://1loup.net/tb.php?id=1127

Commentaires

1. Le mercredi 12 décembre 2007 à 09:09, par Jérôme

Gravatar

Bonjour 1loup,

Merci de m'avoir prévenu, mais bon comme je psse régulièrement sur ton blog... ;-)
Bon, tout d'abord merci pour tot ces efforts! et confirmé que ça marche!
J'ai choisi la troisième solution car dans mon cerveau atrophié les iframes c'est le mal LOL

(J'ai fais un test avec la correction xhtml de wordpress et c'est vrai que ça casse la validité du code)

Je vais demander au Père Noël un plugin deezer pour wordpress, ça resterait le solution la plus simple et la plus rapide LOL

Chapeau et encore merci. ;-)

2. Le mercredi 12 décembre 2007 à 09:12, par Jérôme

Gravatar

Bon c'est le matin, il faut lire "passe" (1ère ligne) et "tout" (2ème ligne) :-)

3. Le mercredi 12 décembre 2007 à 09:26, par 1loup

Gravatar

C'était parfaitement compréhensible malgré les fautes de frappe.

Mais non ce n'est pas le mal, les iframes. C'est juste que c'est interdit en XHTML strict mais c'est autorisé en XHTML transitionnel. D'ailleurs, en XHTML strict, on remplace avantageusement les iframes par des object de type html mais cela pose problème avec IE qui interprète mal les object de type html et rajoute des ascenseurs sauf si tu rajoutes un html { overflow:auto; border: none; } dans le CSS de la source, ce qui devient franchement lourd !
(C'est aussi un très bon moyen d'insérer du code php à l'intérieur d'un billet, cette méthode)

4. Le mercredi 12 décembre 2007 à 12:39, par tom

Gravatar

Tout chaud, le plugin wordpress pour Deezer:
user.homeoftom.com/2007/1...
Joyeux Noel ;)

5. Le mercredi 12 décembre 2007 à 13:22, par Jérôme

Gravatar

Tom, merci ton plugin marche bien mais malheureusement le code produit est invalide xhtml et il oblige tout de même à taper un code. Cependant c'est sur bonne voie: il faudrait parser le code deezer et obtenir le code résultant valide xhtml. Comme tu touche ta bille en plugin, tu peux relire mon commentaire sur le billet "un loup sur wordpress" où je donne des pistes et des exemples. Delpinki travaille aussi sur le sujet: www.lackofinspiration.com...

On arrivera au plugin parfait j'en suis sûr! ;-)

6. Le mercredi 12 décembre 2007 à 14:13, par tom

Gravatar

xhtml validé.. :pompom:
Par contre, taper un code ça, je crois que ça restera le minimum pour le moment.

7. Le mercredi 12 décembre 2007 à 18:33, par 1loup

Gravatar

C'est pas mal du tout. Pourrais-tu rajouter un deuxième paramètre qui serait le texte alternatif car pour l'instant cela nuit à l'accessibilité ?

8. Le mercredi 12 décembre 2007 à 20:38, par Jérôme

Gravatar

Pour ma part, j'ai toujours 8 erreurs xhtml avec ce plugin: www.les-bonobos.com/playm...
Un loup, t'as testé le plugin?

9. Le jeudi 13 décembre 2007 à 01:56, par 1loup

Gravatar

J'avais testé le plugin mais pas vérifié la validité puisque Tom avait dit qu'il avait corrigé, je faisais confiance. Tes 8 erreurs ne sont pas "réelles", c'est parce que l'éditeur englobe le code du plugin d'un <p> et </p> que la validation échoue, je suis presque certain que les autres erreurs sont déclenchées "par cascades". Peut être qu'en utilisant des <div> au lieu de <p> dans le plugin... mais cela ne résoudra pas pour autant le problème du texte alternatif !

10. Le vendredi 14 décembre 2007 à 11:49, par Baptiste

Gravatar

I j'ai bien compris, le plus simple reste de désactiver l'éditeur visuel...

11. Le vendredi 14 décembre 2007 à 18:38, par 1loup

Gravatar

>Baptiste : Oui MAIS ce n'est pas suffisant (probablement à cause de l'auto-br qui semble ne pas être désactivable, en tout cas je n'ai pas trouvé où), il faut aussi supprimer les passages à la ligne à l'intérieur du code.

12. Le samedi 15 décembre 2007 à 10:13, par fiuuu

Gravatar

j'suis paumé :(

13. Le samedi 15 décembre 2007 à 11:59, par 1loup

Gravatar

>Fiuuu : mais tu t'en fiches complètement, ce n'est pas pour toi, c'est pour WordPress. On n'a pas besoin de tant d'artifices sous DotClear, nous :evil: Et puis, certains vont être content d'ici peu... enfin, j'espère : je suis en train de leur faire un plugin valide XHTML et accessible !

14. Le mardi 13 juillet 2010 à 13:10, par resume writer

Gravatar

Merci pour le partage. Je ne suis pas bonne à WordPress, mais je ne pense pas qu'il y est plus simple et plus court chemin pour cela. Alors s'il vous plaît garder annonce, ça aide beaucoup.

Ajouter un commentaire

Calculette

Le code HTML dans le commentaire sera affiché comme du texte, les adresses internet seront converties automatiquement.

Informations supplémentaires :

Ici, c'est chez moi, compris ?
Je ne fais pas de prémodération, le captcha devrait éliminer les spammeurs.
Mais je dis non au langage SMS.
Essayez d'être compréhensible. Je préfère des fautes de frappes, de grammaires, d'orthographes à "KiC Kifè KK".
Pour le reste, ensuite, je fais ce que je veux avec VOS commentaires. Je peux très bien les modifier (je mettrais "Edit") ou les censurer si je l'estime nécessaire.

(Adresse IP enregistrée même derrière un proxy !)

QUoi ?

Bah, un blog... c'est un avis personnel qui n'engage QUE moi (et encore!), purement subjectif etc...

Abonnez-vous à mon fil RSS

Quelques infos sur mon Twitter

Derniers blablas

Images aléatoires

Le choupinou Jake Gyllenhall
sag0013.jpg
Photos Persos
DSC_1011.JPG
Des choupinous sexy
I56-11.jpg
Fractales
1111.jpg

Syndication / Autres

Logo Blogging accompagné
Recommandé par des Influenceurs.

Full RSS Blog
Recommandé par des Influenceurs.

Logo Free Hugs - Câlins gratuits

Logo Blog sans Pub

Logo Mon blog se nourrit de vos commentaires

Début | Contenu | Menu | Sidebarre | Extra | Recherche
Trombinoscopes