XEmb (XML Embedded) permet d'inclure un document XHTML externe (référencé par son url) dans un billet.
Le document étant référencé par son url, il peut être stocké sur n'importe quel autre serveur ! Par exemple, je l'utilise pour mon serveur Web personnel : dotclear est installé sur http://www.zeitoun.net alors que mes articles sont eux stockés sur http://kerphi.zeitoun.net/articles/
XEmb permet aussi d'inclure des feuilles de style particulières pour chaques articles, on peut ainsi personnaliser l'affichage de chaque articles : par exemple si on souhaite centrer une image ou faire flotter une image on peut le faire facilement et proprement en définissant sa propre feuille de style, elle sera automatiquement incluse par dotclear à la suite des siennes.
J'ai créé XEmb car je voulais pouvoir éditer mes articles avec un éditeurs XHTML externe (Amaya). XEmb me permet de conserver mes documents Web indépendamment de la base de donnée de dotclear, ainsi je peux les modifier très facilement avec Amaya sans passer par l'interface Web de dotclear : un simple clique sur le bouton save d'Amaya me permet de publier le document.
Installer le module php4-xslt (trouvez l'équivalent si vous
utilisez php5) sur votre serveur dotclear. En effet, XEmb utilise des
feuilles de style XSL pour extraire le contenu des documents et pour
transformer les URLs des images et des liens.
Dotclear ne proposant pas de mécanismes pour surcharger ses méthodes
d'affichage, l'installation se résume à préfixer dans le thème les appels à
certaines fonction par XEmb::.
Éditez template.php :
XEmb::dcPostMeta(); juste après
dcPostTrackbackAutoDiscovery();dcPostTitle par
XEmb::dcPostTitledcSinglePostTitle par
XEmb::dcSinglePostTitleÉditez post.php :
dcPostTitlepar
XEmb::dcPostTitledcPostChapo par
XEmb::dcPostChapodcPostContent par
XEmb::dcPostContentÉditez list.php :
dcPostTitle par
XEmb::dcPostTitledcPostAbstract par
XEmb::dcPostAbstractMaintenant vous devez créer un document XHTML avec votre éditeur favoris et le stocker sur le serveur Web de votre choix. Attention, le code XHTML généré doit être valide ! Je vous conseil d'utiliser l'éditeur Amaya qui vous assure de créer des documents XHTML valides.
Remarque : votre page doit impérativement avoir une déclaration
XML, c'est à dire que la première ligne de votre document doit être quelque
chose du genre <?xml version="1.0"
encoding="iso-8859-1"?>. Si vous ne mettez pas la déclaration XML,
les transformation XSL ne pourront pas se faire et une erreur aura lieu.
Créez ensuite un billet, donnez lui un chapo (le titre n'a pas beaucoup d'importance, il est utile seulement pour la génération de l'url absolue du billet), et mettez ceci dans le corps du billet (cette chaîne de caractère sera automatiquement détectée par XEmb et remplacée par votre document XHTML) :
{XEmb
url="http://kerphi.zeitoun.net/articles/xemb_un_plugin_pour_dotclear/index.html"}
(adaptez l'url à votre cas).
Vous pouvez maintenant visualiser le résultat sur la partie publique de votre site (XEmb ne fonctionne pas encore dans la partie administration)
Vous pouvez facilement surcharger le style du thème dotclear pour chaque
billet. Pour cela rajoutez une feuille de style dans votre document XHTML et
ajoutez l'option meta="yes" dans le corps du billet de cette
façon :
{XEmb
url="http://kerphi.zeitoun.net/articles/xemb_un_plugin_pour_dotclear/index.html"
meta="yes"}
XEmb va alors automatiquement inclure à la suite de la feuille de style de dotclear la votre. Vous pouvez ainsi personnaliser le style de chacun de vos articles!
Conseil : préfixer toutes vos règles de style par la classe
.xemb, car sinon vous risquez d'altérer le style de la page
entière (les menus, le header ...). Pour cela associez à votre document XHTML
des règles CSS de cette forme : .xemb h2 { background-color: red;
} et donnez la classe xemb à votre body.
XEmb::dcPostTitle retournait le contenu du
titre de l'article sans remplacer les entitées necessaire, en
particulier le double quote (") n'était pas encodé et donc les pages
générés n'étaient pas valides.Last-Modified pour ces fichiers ce qui se traduisait par
un cache qui n'était jamais vidé (merdi Daffys pour la mise en
évidence).XEmb::dcPostAbstract, elle ne renvoyait rien pour les
billets non XEmb (merci Daffys pour la mise en évidence).include_path) sous
windows (merci [RV] pour la mise en évidence)Last-Modified: ... que l'on peut trouver dans
le http header pour les fichiers distants.xmlns (namespace) dans les
feuilles XSLT : les document générés étaient invalides. Maintenant il
n'y a plus de restriction sur le faite de devoir mettre l'attribut
xmlns sur la racine du document (<html
xmlns="http://www.w3.org/1999/xhtml">).Recherche de dotclear. En effet puisque les articles
externes ne sont pas stockés dans la base de donnée de dotclear, la
fonction Recherche ne peut pas fonctionner.php4-xslt qui
n'est pas disponible chez la plupart des hébergeurs. Une solution serait
d'utiliser des expressions régulieres pour extraire les parties
interessantes du document mais cela poserait des problèmes quand
l'encoding du document n'est pas le meme que celui de dotclear (d'où
l'avantage de XSLT).xmlns="http://www.w3.org/1998/Math/MathML" doit être
conservé.ini_set car elle n'est pas
disponible chez certains hebergeurs comme par exemple chez free. Chez
free un repertoire à la racine nommé /include est
automatiquement ajouté à la liste du include_path. On peut
donc l'utiliser pour y placer les librairies utilisées par XEmb. J'ai
fait un package contenant ces librairies, il suffit de le decompresser à
la racine du FTP de free : xemblib-1.2-include.tar.gz.
Ceci resoud tous les problèmes d'include mais n'est pas encore
suffisant pour faire fonctionner XEmb chez free.