[spip-dev] Squelette pour un site full Ajax

Bonjour à tous !

Je voudrais me lancer dans la conception d'un squelette pour un site
entièrement en Ajax. (donc avec un chargement dynamique des articles).
Je sais que ce genre de site est déconseillé, mais j'ai tout de même
envie de relever le défi. :slight_smile:

Pour ceux qui n'ont pas envie de connaître les détails, j'ai surtout
deux questions pratiques :
- Existe-t-il déjà des squelettes de ce genre ? (mes recherches n'ont
rien donné)
- Comment faire pour rediriger une URL de la forme
http://monsite.fr/?escaped_fragment=TitreDePage vers
http://monsite.fr/TitreDePage ? le plus simple serait de le faire
depuis un plugin et d'appeler la fonction redirige_par_entete(), mais
quel pipeline utiliser ?

Maintenant, pour ceux qui ont du temps, je présente ici mon concept et
j'aimerais volontiers votre avis sur la faisabilité et les librairies
utilisées.

Le gros souci d'un site Full Ajax, c'est la gestion des url.
Je pars du principe que je ne changerai rien à la génération des url
par Spip. (je ne suis pas fou ! :slight_smile: ).
Et je veux aussi qu'un utilisateur puisse naviguer sans problème sur
le site en ayant désactivé javascript. (c'est le principe du
"progressive enhancement", ceci afin que Google ou autres crawlers et
aspirateurs de site fonctionnent sans problème)
L'ajax est donc un "plus" qui vient s'ajouter au site normal.

Je pense utiliser Zpip pour les squelettes, qui est très pratique,
surtout pour récupérer uniquement une portion de la page.

Principe de fonctionnement :
J'intercepte en javascript un clic de l'utilisateur sur un lien, ex :
http://monsite.fr/TitreDePage . A ce moment :
- Je change l'adresse de la page en http://monsite.fr/#!TitreDePage
pour permettre l'utilisation des boutons "précédent", "suivant", et
l'ajout des pages aux favoris (j'utilise pour cela jQuery BBQ :
http://benalman.com/projects/jquery-bbq-plugin/ )
- Je télécharge le HTML correspondant juste au texte désiré. Pour
cela, j'appelle l'adresse http://monsite.fr/TitreDePage?contenu_seul
et je l'affiche à l'endroit voulu sur la page.

Jusque là, pas de souci. J'ai fait un squelette qui ne renvoie que le
contenu d'un article.
Mais des problèmes se posent lorsque quelqu'un va copier-coller l'URL
d'une de mes pages pour la copier-coller sur son propre site, un forum
ou autres. Il va utiliser l'adresse qu'il voit dans son navigateur, à
savoir http://monsite.fr/#!TitreDePage
Si un internaute suit ce lien, je vais en Ajax récupérer le bon
contenu de la page. Aucun problème. Par contre, si il a désactivé
javascript, je n'aurai aucun moyen de lui renvoyer l'article désiré
(il ne verra que ma page d'accueil). C'est le principal inconvénient
de la méthode, mais je ne pense pas que ce problème particulier soit
très fréquent.

Si c'est Google qui suit ce lien, lui va transformer l'URL en
http://monsite.fr/?escaped_fragment=TitreDePage (voir
http://code.google.com/intl/en-US/web/ajaxcrawling/index.html )
Et j'aimerais intercepter cette requête pour faire une redirection 301
vers la bonne URL http://monsite.fr/TitreDePage
Pour cela, je pense le faire via un plugin intégrable au squelette,
qui appellerait la fonction spip redirige_par_entete(). Mais je ne
sais pas quel pipeline utiliser. Est-ce que "autoriser" convient ?
Quel est le premier pipeline à être appelé à chaque exécution ? Y
a-t-il une méthode plus simple, comme le faire directement au
chargement du plugin ?

Merci d'avance pour vos réponses / avis !

Bonne journée !!

Etienne.

Pour info, avec la derniere version de Zpip
http://monsite.fr/URLdunepage?var_zajax=contenu

permet deja charger uniquement le bloc contenu, sans aucune modification du squelette.

Cédric