ColdFusion基礎プログラミング



2-13ファイルをインクルードする

複数のページで共通に使用する視覚的なページをテンプレートファイルとして作成し、それを好きな箇所に挿入する<cfinclude> タグが用意されています。

    <cfinclude> タグは以下のようなときに使用します

  • 各ページに共通のツールバーをインクルードする
  • 各ページ共通のデザインされたヘッダとフッダをインクルードする
  • 再利用可能なあらゆるCF の一連の処理をインクルードする

<cfinclude> タグ

<cfinclude>タグにはtemplate という属性があり、インクルードするテンプレートファイルをそこにセットします。ColdFusion がこのタグを見つけると、インクルードされたページを検索し、呼び出し元の<cfinclude> の箇所にそれを取り込んで処理を続けます。


<cfinclude>タグの構文:
<cfinclude template=" インクルードするファイルのパス・名前">


以下の図は<cfinclude> の働きを示しています。template.cfm 内のコードがdisplay.cfm に引き渡され、1 つのページのように実行されます。


変数スコープ

<cfinclude>タグは指定したページを取り込んで1つのページのように動作します。そのため、呼び出し元で作成されたローカル変数は<cfinclude>のテンプレートファイル内のコードで呼び出し(参照すること)ができますし、逆にテンプレートファイル内で変数の作成が記述されている場合は、インクルード後の呼び出し元のページの処理でその変数を呼び出す事も可能です。
呼び出し元と同じ名前の変数がテンプレートでも使用されている場合は、変数の値が上書きされてしまうため注意が必要です。

Tips:異なるディレクトリのファイルをインクルードする場合
<cfinclude> で異なるディレクトリのファイルをインクルードする際は、インクルードページを指定するのに相対パスを使用します。下記の例は、一つ上の階層にあるtemplates ディレクトリ内にあるheader.cfm をインクルードしています。

<cfinclude template="../templates/header.cfm">

絶対パスやURL を使っての呼び出しはできませんが、相対パスでのインクルードが難しいファイルの場合はColdFusion Administrator で指定が可能な 「ColdFusionマッピング」を使用することができます。

「ColdFusion マッピング」は、スラッシュ+マッピング名(/test)のように登録され、そのマッピングを使ったインクルードも、以下の例のようにスラッシュ+マッピング名で指定します。

<cfinclude template="/Template_Mapping/File.cfm">

上記の例は、/Template_Mapping という名前の ColdFusion マッピングで指定されているフォルダ内の File.cfm をインクルードします。