2

現在、Liferay は、init.vmテーマ テンプレートで使用できる で定義されている一連のグローバル変数を提供しています。これらの変数はinit.vmLiferay ROOT.war 内に設定され、配置されています$PATH_TO_WEBAPPS/ROOT/html/themes/_unstyled/templates

また、カスタム テーマ内ではportal_normal.vm、追加するだけで使用できます#parse ($init)。これはうまくいきます。

今私の問題に移ります。メールアドレスを送信するために速度テンプレートを使用しています。そのため、ポートレット内で、場所にメールテンプレートを作成しました$SOME_PORTLET_NAME/src/main/webapps/template/email.vm。次を使用して、カスタム変数をテンプレートに送信できます。

VelocityContext velocityContext = new VelocityContext();
velocityContext.put("vp", velocityParameters);

しかし、テーマで使用されているように、Liferay によって提供されるデフォルトの変数を使用できませんでした。

$languageUtil.getメールテンプレートで国際化に使用しようとしています。

私は何を試しましたか?

  • テンプレート内でクローンinit.vmを作成してインポートします。うまくいきませんでした。愚かな私。
  • ROOT.warの場所へのフル パスを指定しますinit.vm。どちらも機能しませんでした(機能するはずだったことに驚いています。)

質問 :

  • これらのベロシティ グローバル変数をカスタム ポートレット (テーマ外) で使用する方法はありますか?

  • Javaを使用してこれを達成できますか?

  • または、LanguageUtil.get を実行して値をテンプレートにのみ送信する方がよいでしょうか (これが最後のオプションになります)。

ありがとう!!

4

1 に答える 1

2

完全な答えではないかもしれませんが、どこから始めればよいかを示しています。空白の VelocityContext を作成しています。これは当然空です - 驚くことではありません。

Liferay が init.vm と他のテンプレートを実行するとき、空白のコンテキストでは実行されません (init.vm は非常に基本的なように見えますが)。Liferay のバージョンに応じて、スクリプト コンテキストの初期化を参照してVelocityVariablesImplください。TemplateContextHelper

これはすべて portal-impl に存在することに注意してください。したがって、通常はアクセスできない Liferay の実装に存在します。通常は直接呼び出すことができないため、関心のあるコードの部分を複製する必要がある場合があります。しかし、おそらく完全な初期化も必要ありません。

これが実際の解決策を見つけるのに役立つ場合は、実際に解決したことに関するヒント (またはそのリンク) を投稿してください。

于 2015-02-16T08:15:09.020 に答える