Lechat et viagra super active pas cher suisse les références utilisées. « viagra générique doctissimo La liberté dans un environnement adapté. C générique finastéride est pourquoi la plainte ne vise pas les médecins. Je suis commander liorésal parti au Canada pour fuir cela il y a vingt ans. Puis acheter viagra livraison 24h il se débrouille seul. Mais cialis pour femme au quebec il attire aussi les professionnels. Ce dernier www.accutane est retiré de la vente le 30 novembre 2009. D commander accutane autres cas pourraient être révélés. Celui-ci achat cytotec lui a prescrit du Mediator comme anorexigène. Et www.lamisilate je ne parle pas des spécialistes. Les décès super levitra sont intervenus en quelques heures. Il viagra en ligne belgique la conduira en quelques mois et sans contestation. C est viagra super force un problème de personnel. 209 employés accutane ont changé d affectation. Elles viagra super ont précisé que sa carcasse serait détruite. Une révolution www.levitra culturelle et clinique. La défense cialis pour homme veut jouer sur une faute technique. C est cialis ou viagra prix violent pour tout le monde. {ajax} pour les inclure - SPIP
SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [vi] [zh] Espace de traduction

Télécharger

{ajax} pour les inclure

Décembre 2008 — mis à jour le : Octobre 2012

Toutes les versions de cet article :

Le critère {ajax} permet de cliquer sur un lien et de ne rafraichir dans la page que la zone qui changerait si on ré-affichait toute la page avec les nouveaux paramètres.


En pratique

Le principe est de rendre AJAX abordable car la complexité est cachée :

J’ai un morceau de page qui contient des liens vers cette même page et ne provoquent de changement que dans le morceau de page considéré :

  1. je mets ce morceau de page dans un squelette séparé
  2. je marque les liens concernés par la class ajax : <a href='monlien' class='ajax'>...</a>
  3. j’inclus mon squelette dans la page principale avec <INCLURE{fond=monskel}{ajax}{env}> ou #INCLURE{fond=monskel}{ajax}{env}

Et c’est tout !

Quelques petites précisions tout de même :

  • testez toujours d’abord votre squelette sans l’argument {ajax}
  • {ajax} devrait toujours être accompagné de {env} afin d’éviter tout risque d’injection d’urls dans le cache de SPIP.
  • par defaut, les liens a contenus dans une classe pagination sont aussi ajaxés
  • il est possible de cibler d’autres liens en spécifiant le sélecteur jquery var ajaxbloc_selecteur = 'a.uneautreclasse';

En détail

Syntaxe d’appel :

  • <INCLURE{fond=mon_fond}{ajax}{env}>
  • [(#INCLURE{fond=mon_fond}{ajax}{env})]

Cet appel inclut le squelette mon_fond en « ajaxant » automatiquement tous les liens ciblés par la variable js ajaxbloc_selecteur.

Un bloc <div ..></div> est inséré automatiquement autour du contenu du squelette inclus, pour le mécanisme de gestion de l’ajax.

Par défaut celle-ci cible les ’.pagination a,a.ajax’. Autrement dit, il faut avoir dans le code source des squelettes :

  • soit la gestion standard de la pagination par SPIP. A condition que le balise #PAGINATION soit inclue dans un élément de classe pagination. Ex : <p class="pagination">#PAGINATION</p>
  • soit une classe ajax sur les liens (<a class="ajax" href=...>)

Le hit ajax relance automatiquement le calcul du squelette inclus seul en restaurant son #ENV, et en y ajoutant les paramètres passés dans l’url du lien

Le bloc rechargé passe en opacité 50 % et prend la class loading pendant le chargement ce qui permet de le styler à sa convenance.

Il est intéressant de noter que :

  • les liens ajax sont mis en cache dans le navigateur lorsqu’ils sont cliqués une fois. Le bloc n’est donc chargé qu’une fois, même si l’internaute revient plusieurs fois sur le lien concerné
  • certains liens peuvent être pré-chargés à l’avance en leur ajoutant la classe preload

Quelques Exemples

Utilisation de liens ajax

Soit le squelette inc-liens.html Il sera appelée dans le squelette incluant par

[(#INCLURE{fond=inc-liens}{ajax}{env})]

Et contiendra

Utilisation de la pagination

Pour la pagination, prenons un exemple tiré de squelettes-dist/sommaire.html.

Mettons dans un squelette inc-recents.html la boucle qui liste les articles récents :

Il suffit alors de mettre dans sommaire.html, à la place de cette boucle <INCLURE{fond=inc-recents}{env}{ajax}>

Limites et cas particuliers

Ce mécanisme automatisé d’ajaxisation des blocs repose sur une hypothèse : les liens ajax ne permettent de rafraichir que le bloc le contenant, en insérant la version modifiée au même endroit. Il n’est pas possible de cibler une autre région de la page

Par ailleurs, il est important de noter que le calcul du squelette inclus ne doit reposer exclusivement que sur les paramètres passés en #ENV.

En effet, lors du calcul du bloc ajax, celui-ci sera recalculé tout seul, en dehors du squelette appelant. Seules les variables contenues dans #ENV seront restaurées.

Ainsi, il n’est pas possible de faire référence à des variables php globales : celles-ci ne seront pas restaurées au moment du calcul du bloc ajax.

Si vous voulez vraiment utiliser des variables globales php, il faut les réinjecter dans le #ENV au moment de l’inclusion :

<INCLURE{fond=monskel}{ajax}{env}{parametre=#EVAL{$GLOBALS['toto']}}>

Un peu d’histoire

SPIP 1.9.2 avait entamé une tentative (non documentée car insatisfaisante) de considérer la boucle comme un morceau et de permettre une ajaxisation du contenu d’une boucle, sans avoir à faire de découpe du squelette.

Cela s’est avéré insatisfaisant car :

  • l’entité boucle n’est pas forcément pertinente -> exemple d’une liste dont les li sont générés par plusieurs boucles
  • cela obligeait à recalculer toute la page pour arriver à la boucle car on ne pouvait pas savoir son contexte d’entrée -> le serveur faisait presque un calcul de page complet pour en extraire le morceau, d’où un gain faible en rapidité

La nouvelle solution à l’avantage :

  • d’obliger le concepteur du squelette à faire la découpe du morceau qui sera rafraichi en le mettant dans un squelette inclus
  • de lui permettre de décider exactement ce qui forme un bloc fonctionnel indépendant du reste de la page
  • d’expliciter son environnement en le passant en paramètre dans le inclure
  • de permettre au serveur de ne recalculer effectivement que ce morceau de page

Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé