include_php Nom attribut Type Requis Defaut Description file chaîne de caractère oui n/a Le nom du fichier PHP à inclure once boléen Non true Inclure plusieurs fois ou non le fichier PHP si plusieurs demandes d'inclusions sont faites. assign chaîne de caractère Non n/a le nom de la variable PHP dans laquelle la sortie sera assignée plutôt que directement affichée. les balises include_php sont utilisées pour inclure directement un script PHP dans vos templates. Si "security" est activé, alors le script à exécuter doit être placé dans le chemin $trusted_dir. La balise include_php attends l'attribut "file", qui contient le chemin du fichier PHP à inclure, relatif à $trusted_dir, ou absolu. include_php est un moyen agréable pour gérer des "composants templates", tout en conservant le code PHP en dehors du template lui même. Supposons que vous ayez un template reprenant la navigation de votre site, elle même récupérée depuis une base de données. Vous pouvez conserver la logique du code PHP récupérant le contenu de la base dans un emplacement séparé, et l'inclure depuis votre template. Maintenant, vous pouvez utiliser ce template n'importe ou, sans vous inquiéter de savoir si les informations nécessaires ont bien étés assignées par l'application, avant la demande d'affichage. Par défaut, les fichiers PHP ne sont inclus qu'une seule fois, même si la demande d'inclusion survient plusieurs fois dans le template. Vous pouvez demander à ce que ce fichier soit inclus à chaque demande grâce à l'attribut once. Mettre l'attribut once à false aura pour effet d'inclure le script PHP à chaque fois que demandé dans le template. Vous pouvez donner une valeur à l'attribut optionnel assign, pour demander à la fonction include_php d'assigner la sortie du script PHP à la variable spécifiée plutôt que d'en afficher directement le résultat. L'objet Smarty est disponible en tant que $this dans le script PHP inclus. fonction include_php load_nav.php ------------- <?php // charge des variables depuis une base de données mysql et les assigne au template. require_once("MySQL.class.php"); $sql = new MySQL; $sql->query("select * from site_nav_sections order by name",SQL_ALL); $this->assign('sections',$sql->record); ?> index.tpl --------- {* chemin absolu, ou relatif à $trusted_dir *} {include_php file="/path/to/load_nav.php"} {foreach item="curr_section" from=$sections} <a href="{$curr_section.url}">{$curr_section.name}</a><br> {/foreach}