insert Nom attribut Type Requis Defaut Description name chaîne de caractères Oui n/a le nom de la fonction insert (insert_name) assign chaîne de caractère Non n/a Le nom de la variable qui recevra la sortie script chaîne de caractères Non n/a Le nom du script PHP inclus avant que la fonction insert ne soit appelée. [var ...] [var type] Non n/a Variable à passer à la fonction insert Les balises insert fonctionnent à peu près comme les balises include, à l'exception que leur sortie n'est pas placée en cache lorsque le cache [caching] est activé. Les balises insert seront exécutées à chaque appel du template. Supposons que vous avez un template avec un emplacement pour un bandeau publicitaire en haut de page. Ce bandeau publicitaire peut contenir toutes sortes de contenus HTML, images, flash, etc. Nous ne pouvons pas placer du contenu statique à cet endroit. Nous ne voulons pas non plus que ce contenu fasse partie du cache. Arrive alors la balise insert. Le template connais #emplacement_bandeau# et #id_site# (récupérés depuis un fichier de configuration), et à besoin d'un appel de fonction pour récupérer le contenu du bandeau. function insert {* exemple de récupération d'un bandeau publicitaire *} {insert name="getBanner" lid=#emplacement_bandeau# sid=#id_site#} Dans cet exemple, nous utilisons le nom getBanner et lui passons les paramètres #emplacement_bandeau# et #id_site#. Smarty va rechercher une fonction appelée insert_getBanner () dans votre application PHP, et lui passer les valeurs #banner_location_id# et #site_id# comme premier paramètre, dans un tableau associatif. Tous les noms des fonctions insert de votre application doivent être prefixées de "insert_" pour remédier à d'éventuels conflits de nommage. Votre fonction insert_getBanner () est supposée traiter les valeurs passées et retourner un résultat. Ces résultats sont affichés dans le template en lieu et place de la balise. Dans cet exemple, Smarty appellera cette fonction insert_getBanner(array("lid" => "12345","sid" => "67890")); et affichera le résultat retourné à la place de la balise insert. Si vous donnez une valeur à l'attribut "assign", la sortie de la balise insert sera assigné à une variable de template de ce nom au lieu d'être affichée directement. NOTE: assigner la sortie à une variable n'est pas très utile lorsque le cache est activé. Si vous donnez une valeur à l'attribut "script", ce script PHP sera inclus (une seule fois) avant l'exécution de la fonction insert. Le cas peut survenir lorsque la fonction insert n'existe pas encore, et que le script PHP chargé de sa définission doit être inclus. Le chemin doit être absolu ou relatif à $trusted_dir. Lorsque "security" est actif, le script doit être situé dans $trusted_dir. L'objet Smarty est passé comme second argument. De cette façon, vous pouvez utiliser ou modifier des informations sur l'objet Smarty, directement depuis votre fonction d'insertion. Note technique Il est possible d'avoir des portions de template qui ne soient pas gérables par le cache. Même si vous avez activé l'option caching, les balises insert ne feront pas partie du cache. Elles retourneront un contenu dynamique à chaque invocation de la page. Cette méthode est très pratique pour des éléments tels que les bandeaux publicitaires, les enquêtes, la météo, les résultats de recherche, retours utilisateurs, etc.