ビューを外部ファイルとリンクする

サーバー上のファイルをテンプレートとして読み込みます。
テンプレートを別の編集ツールで作成し、ファイルとして管理している場合などに利用したり、テーマをリポジトリで管理したりする際に利用できます。

基本的な仕様は従来の PowerCMS と同じですが、PowerCMS Xのファイルへのリンク機能はテーマと連動することができるようになっています。

パス指定は絶対パスでの指定となりますが、以下の文字から始まるパスを書くことができます。

  • %t」: 現在適用されているテーマの view ディレクトリのパス
  • %r」: 現在のスコープのサイト・パス
  • %s」: support ディレクトリのパス

テーマとリンクする

このうち、「%t」から始まるパスを指定すると、現在適用中のテーマとリンクするようになります。

テーマとビューがリンクする

「%t」から始まるパスを指定して、テーマとリンクさせる場合、テーマディレクトリを環境変数「theme_paths」に配列で指定してください。

標準の設定では PowerCMSX/themeディレクトリ配下のテーマには書き込めません。 PowerCMSX/themeディレクトリ配下にのファイルとリンクしたい場合は、Webサーバーから書き込めるパーミッションに設定した上で、環境変数「theme_paths」にパスを追加してください。

        "theme_paths" : ["/var/www/PowerCMSX/customized_files/themes"],

※セキュリティ上の観点から、書き込みができるディレクトリは theme_paths、supportディレクトリ、サイト・パス配下などに制限されています。

「%t」から始まるパスを指定して、テーマとリンクさせた時、ビュー(テンプレート)の保存時に theme.json を同時に更新し、新規に追加されたビューやフォーム・URLマップなどがあわせてマージされます。

環境変数「linked_file」の指定による振る舞いの変化

環境変数「linked_file」に数字を指定することで、以下のように振る舞いが変化します。 初期値は「2」です。

  • 0 : ファイルへのリンクは機能せず、入力欄も非表示になります。
  • 1 : ファイルへのリンクは書き込み方向のみ動作します。例えば開発環境と本番環境を分けている場合、開発環境では1を指定する、などの設定ができます。
  • 2 : ファイルへのリンクは双方向に動作します。

Version3で追加された GitHubとの連携機能を使い、開発環境で開発したテーマを GitHubにプッシュし、本番環境で適用するなどのワークフローを簡単に実現することができます。

使用されるテンプレートの優先順位

テンプレート編集画面の表示や再構築の際、通常はデータベースに格納されているテンプレート内容が使用されます。
「ファイルへのリンク」を設定した場合は、設定したファイルの内容がデータベースより優先して使用されます(linked_fileが2の場合のみ)。

また、リンクされたファイルとデータベースのテンプレート内容に差異がある場合、テンプレートの保存時や再構築時に、リンクされたファイルのテンプレート内容がデータベースに上書きされます(linked_fileが2の場合のみ)。

再構築やテンプレート編集画面の表示で使用されるテンプレート
ファイルへのリンク 優先されるテンプレート
再構築 テンプレート編集画面
あり リンクされたファイル リンクされたファイル
あり ※ファイルの中身が空(0 バイト)の場合 データベース データベース
なし データベース データベース

テンプレート編集画面での各操作時におけるテンプレート内容の書き込み動作については、以下の表をご参照ください。

  テンプレートを編集した場合 リンクされたファイルを編集した場合
テンプレート内容あり テンプレート内容なし(空) ファイル内容あり ファイル内容なし(空)
再構築 書き込みは発生しない ファイルの内容がデータベースに書き込まれる ファイルの内容がデータベースに書き込まれる 書き込みは発生しない
変更を保存、保存と再構築 テンプレートの内容がデータベース、ファイルともに書き込まれる ファイルの内容がデータベースに書き込まれる ファイルの内容がデータベースに書き込まれる テンプレートの内容がデータベース、ファイルともに書き込まれる

最新のテンプレート内容のバックアップ

「ファイルへのリンク」を設定し、テンプレート編集画面からテンプレート内容を変更して保存した場合、データベースと併せてリンクされたファイルにも変更内容が上書き保存されます。
そのため、定期的なバックアップとは別に、最新のテンプレート内容のバックアップ用途にも利用できます。