任意のファイルをインクルードできるカスタムユニットの作成について

57 views
Skip to first unread message

YS

unread,
Jun 23, 2022, 10:53:11 PM6/23/22
to a-blog cms forum
お世話になります。

■目的
任意のファイルをインクルードできるユニットを作りたい

■試したこと
A
カスタムユニットで入力した絶対パスを {unit_include_path} をもとに
HTMLをインクルードしたいのですがインクルードされません。

B
おそらくユニットのカスタムフィールド {unit_include_path} を解決してくれないためと思い、試しにグローバル変数を含めたパスを設定したらインクルードされました。

そもそもインクルード文内でユニットのカスタムフィールドを反映することは可能でしょうか?

<!-- BEGIN unit#custom_include -->

【A】 NG→  @include("{unit_include_path}")
【B】 OK→  @include("%{CURRENT_THEMES_DIR}%{CCD}/include/%{EID}.html")
 
<!-- END unit#custom_include -->

■a-blog CMSパージョン
2.11.46

山本一道@アップルップル

unread,
Jun 26, 2022, 8:45:06 PM6/26/22
to a-blog cms forum
ご希望の動作は難しいです。

テンプレートファイル上での実行順序
こちらをご覧になっていただくとわかると思いますが、インクルード処理はモジュールの実行
の前に処理されますので、インクルード文の中で {変数} を使うことができません。

オリジナルのグローバル変数を作ることで近いことはできるかもしれません。
「グローバル変数 作る a-blog cms」くらいで検索すると、いくつかの記事がヒット
するかと思いますので、そちらを参考にしてみてください。

また、3.0 からテンプレートキャッシュという機能が増え、インクルード文の中での
グローバル変数もキャッシュされるようになりました。もし、オリジナルグローバル変数
とインクルード文で対応する際には、template_cache: off で運用ください。



2022年6月24日金曜日 11:53:11 UTC+9 YS:

YS

unread,
Jun 27, 2022, 4:53:17 AM6/27/22
to a-blog cms forum
山本様、ご返答ありがとうございます。

テンプレートはだいぶ先に処理されてしまうのですね。
自由度は減りますが、ある程度ファイル名を決め打ちでやればなんとかなりそうではありますので、
それで運用してみたいと思います。

2022年6月27日月曜日 9:45:06 UTC+9 山本一道@アップルップル:
Reply all
Reply to author
Forward
0 new messages