在自定义 Portlet 中访问 Liferay 全局速度变量
Access Liferay Global Velocity Variable in Custom Portlet
截至目前,Liferay 提供了一组可由主题模板使用的全局变量,如 init.vm
中所定义。这些变量在 init.vm
中设置,位于 Liferay ROOT.war 内:$PATH_TO_WEBAPPS/ROOT/html/themes/_unstyled/templates
.
在我的自定义主题 portal_normal.vm
中,我只需添加 #parse ($init)
即可使用它。效果很好。
现在进入我的问题。我正在使用速度模板发送我的电子邮件 address.So,在我的 portlet 中,我在 $SOME_PORTLET_NAME/src/main/webapps/template/email.vm
的位置创建了一个电子邮件模板。
我可以使用
将自定义变量发送到模板
VelocityContext velocityContext = new VelocityContext();
velocityContext.put("vp", velocityParameters);
但是我无法使用主题中使用的 Liferay 提供的默认变量。
我正尝试在我的电子邮件模板中使用 $languageUtil.get
进行国际化。
我尝试了什么?
- 在模板中克隆
init.vm
并导入它。哪个没有
工作过;愚蠢的我。
- 提供
init.vm
的 ROOT.war
位置的完整路径。它也没有用。(我很惊讶它应该有用。)
问题:
有没有办法在自定义中使用这些速度全局变量
portlets(即外部主题)?
这可以使用 Java 实现吗?
还是执行LanguageUtil.get并只发送值更好
到模板(这是我最后的选择)?
谢谢!!
这可能不是完整的答案,而是一个从哪里开始的指针:您正在创建一个空白的 VelocityContext。这自然是空的——这并不奇怪。
当 Liferay 执行其 init.vm 和其他模板时,它不会在空白上下文中 运行(尽管 init.vm 看起来非常基本)。根据您的 Liferay 版本,查找 VelocityVariablesImpl
或 TemplateContextHelper
以获取脚本上下文的初始化。
请注意,这一切都存在于 portal-impl 中,因此在您通常无权访问的 Liferay 实现中。您可能需要复制您感兴趣的代码部分,因为您通常无法直接调用它们。但是,您可能也不需要完全初始化。
如果这有助于您找到实际的解决方案,请 post 一些关于您实际解决的问题的提示(或 link 给它)
截至目前,Liferay 提供了一组可由主题模板使用的全局变量,如 init.vm
中所定义。这些变量在 init.vm
中设置,位于 Liferay ROOT.war 内:$PATH_TO_WEBAPPS/ROOT/html/themes/_unstyled/templates
.
在我的自定义主题 portal_normal.vm
中,我只需添加 #parse ($init)
即可使用它。效果很好。
现在进入我的问题。我正在使用速度模板发送我的电子邮件 address.So,在我的 portlet 中,我在 $SOME_PORTLET_NAME/src/main/webapps/template/email.vm
的位置创建了一个电子邮件模板。
我可以使用
VelocityContext velocityContext = new VelocityContext();
velocityContext.put("vp", velocityParameters);
但是我无法使用主题中使用的 Liferay 提供的默认变量。
我正尝试在我的电子邮件模板中使用 $languageUtil.get
进行国际化。
我尝试了什么?
- 在模板中克隆
init.vm
并导入它。哪个没有 工作过;愚蠢的我。 - 提供
init.vm
的ROOT.war
位置的完整路径。它也没有用。(我很惊讶它应该有用。)
问题:
有没有办法在自定义中使用这些速度全局变量 portlets(即外部主题)?
这可以使用 Java 实现吗?
还是执行LanguageUtil.get并只发送值更好 到模板(这是我最后的选择)?
谢谢!!
这可能不是完整的答案,而是一个从哪里开始的指针:您正在创建一个空白的 VelocityContext。这自然是空的——这并不奇怪。
当 Liferay 执行其 init.vm 和其他模板时,它不会在空白上下文中 运行(尽管 init.vm 看起来非常基本)。根据您的 Liferay 版本,查找 VelocityVariablesImpl
或 TemplateContextHelper
以获取脚本上下文的初始化。
请注意,这一切都存在于 portal-impl 中,因此在您通常无权访问的 Liferay 实现中。您可能需要复制您感兴趣的代码部分,因为您通常无法直接调用它们。但是,您可能也不需要完全初始化。
如果这有助于您找到实际的解决方案,请 post 一些关于您实际解决的问题的提示(或 link 给它)