Les modèles - 6 : Modèles dynamiques
Écrit par Bertrand | 28-07-2005

Les articles précédents :
Les modèles - Partie 1 : Introduction aux modèles par yeca
Les modèles - Partie 2 : Tableaux répétés et régions répétées
Les modèles : Partie 3 : Attributs modifiables, régions facultatives
Les modèles : Partie 4 : Expressions et paramètres de modèle
Les modèles : Partie 5 : Modèles imbriqués, transmission de paramètres

Il existe des régions dans un document qui ne rentrent dans aucune des catégories que nous avons vues dans les articles précédents : il s'agit des codes situés en dehors des balises <html> et </html>, c'est-à-dire tout ce qui concerne les langages dynamiques tels que les codes PHP, ASP et tous les autres.
Dans les versions antérieures à DMX, si on avait un modèle ayant du code situé dans ces zones, le code des pages faites à partir de ce modèle n'était pas mis à jour pour la simple raison que ce code n'était pas dans une zone non-modifiable.

Aussi pour rectifier ce problème, DMX a introduit un nouveau type de régions, toutes celles qui sont à l'extérieur du code HTML.

Fonctionnement

Lorsque vous créez un modèle utilisant un langage dynamique, puis que vous créez des pages à partir de ce modèle, DMX insère cette ligne dans ces pages :

<!-- InstanceBegin template="Templates/modDyn.dwt.php" codeOutsideHTMLIsLocked="false" -->

Le paramètre codeOutsideHTMLIsLocked est évalué à faux par défaut. Autrement dit, les scripts peuvent être modifiés à volonté dans les pages qui utilisent le modèle. Autrement dit encore, toute modification du script dans le modèle lui-même n'entrainera pas de mise à jour dans les pages-enfants.

Pour obliger DMX à reconnaitre ces zones comme devant être mises à jour, il faut insérer directement dans le modèle lui-même, à l'intérieur de la balise <head> la ligne suivante :

<!-- TemplateInfo codeOutsideHTMLIsLocked="true" -->

Ce paramètre peut prendre les valeurs vrai ou faux (true/false).
Notez que cette ligne doit être insérée manuellement : aucune boite de dialogue ne le permet de façon automatique...

Evaluée à vrai, cette expression empêchera toute modification de scripts dans les pages-enfants, et permettra à d'éventuelles modifications du code dans le modèle de se propager à toutes les pages-enfants. Dans celles-ci le code sera donc :

<!-- InstanceBegin template="Templates/modDyn.dwt.php" codeOutsideHTMLIsLocked="true" -->
 
Dernière mise à jour : 31-07-2005