include_php 関数:
include_php は、PHP コードをテンプレート ファイルから分離する、テンプレートのコンポーネント化の問題を解決する良い方法です。
例: サイト ナビゲーションを表示するためにデータベースからデータを動的に取得するテンプレートがあるとします。データ コンテンツは php で取得できます。 論理部分を分離し、別のフォルダー
に保存し、テンプレートの先頭に php スクリプトを含めます。その後、前のデータベースを気にせずに、このテンプレートをどこにでも含めることができます。情報はプログラムによって取得されました。
PHP ファイルがテンプレート内で複数回呼び出された場合でも、デフォルトではそれらは 1 回だけ含まれます。once 属性を設定して、それを示すことができます。
once 属性が false に設定されている場合、ファイルは呼び出されるたびに再インクルードされます。assign 属性が設定されています。 、この属性に対応する変数名は、インクルードされる PHP ファイルの出力を保存するために使用されるため、インクルードされる PHP ファイルの出力は直接表示されません。
#smarty オブジェクトには、含める php ファイル内の $this を通じてアクセスできます。
load_nav.php:
<?php // load in variables from a mysql db and assign them to the template // 从mysql数据库中取得数据,将数据赋给模板变量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:
{* absolute path, or relative to $trusted_dir *} {* 绝对路径或 $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}