0

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ステートメントにハードコーディングすると、すべてが正常に機能しますが、それは私にはハックのようです。

理想的には、これは私がたくさんのダクトテープを使用したという理由だけでなく、正しい理由で正しいことをするはずです。

カスタムページレイアウト内からテンプレートファイルのインクルードを実装する方法についての提案はありますか?

4

2 に答える 2

1

この問題は、ベロシティ構成が原因である可能性があります。

velocimacro.permissions.allow.inline.local.scopeあるテンプレートに設定された変数にアクセスして別のテンプレートにアクセスできるようにする場合は、次のプロパティをfalseにする必要があります。

于 2012-10-15T22:00:48.213 に答える
0

質問の入力を間違えた可能性がありますが#set($full_footer_path = "$full_templates_path/footer.vm"、最後に角かっこを付けないでください...

#set( $full_footer_path = "$full_templates_path/footer.vm" )

$full_templates_path中括弧で囲んで、テキストの残りの部分と区別することも役立つ場合があります。${full_templates_path}

于 2012-10-15T21:51:28.710 に答える