Liferayのカスタムテーマを作成しています。各ページレイアウトにフッターを個別に含めたいと思います。残念ながら、ページレイアウトファイル内の$full_templates_path変数にアクセスできないようです。#setを使用して値を手動で保存し、含まれているテンプレート内でその値にアクセスすることができませんでした。
バニラテーマでは、ファイルの処理は次のようになります。
portal_normal.vm:
1) some init, doctype, etc.
2) #parse("$full_templates_path/header.vm")
3) $theme.include($content_include)
a) custom_layout_1.tpl
b) chat portlet
4) #parse("$full_templates_path/footer.vm")
レイアウトの目的で、次のようにこのパターンから逸脱する必要があります。
portal_normal.vm
1) some init, doctype, etc.
2) #parse("$full_templates_path/header.vm")
3) $theme.include($content_include)
a) custom_layout_1.tpl
i) #parse("$full_templates_path/footer.vm")
b) chat portlet
これを試してみると、$ full_templates_pathがcustom_layout_1.tpl内で定義されていないため、tomcatがエラーになります。portal_normal.vm内で次のようにして、この問題を修正しようとしました
#set($full_footer_path = "$full_templates_path/footer.vm")
$theme.include($content_include)
次に、custom_layout_1.tpl内で、フッターマークアップを発行する場所でこれを実行します。
#parse("$full_footer_path")
ただし、Tomcatは、$full_footer_pathが定義されていないと言ってエラーを出します。
$ full_templates_pathの値をcustom_layout_1.tplの#parseステートメントにハードコーディングすると、すべてが正常に機能しますが、それは私にはハックのようです。
理想的には、これは私がたくさんのダクトテープを使用したという理由だけでなく、正しい理由で正しいことをするはずです。
カスタムページレイアウト内からテンプレートファイルのインクルードを実装する方法についての提案はありますか?