从Velocity模板访问Liferay自定义字段

从Velocity模板访问Liferay自定义字段,liferay,velocity,liferay-6,Liferay,Velocity,Liferay 6,我试图从一个Liferay模板中发出自定义字段的值 使用管理UI,我定义了一个新的组织级自定义字段org home page,默认值为tom rules 我希望在portal_normal.vm中发出此值 我根据一位同事发送的一些帖子和示例,以及我自己的大量实验,拼凑了这段代码: $page.getGroup().getExpandoBridge().getAttribute("org-home-page") 不幸的是,Velocity无法解析表达式,并使其保持不变 以下表达式在portal_

我试图从一个Liferay模板中发出自定义字段的值

使用管理UI,我定义了一个新的组织级自定义字段org home page,默认值为tom rules

我希望在portal_normal.vm中发出此值

我根据一位同事发送的一些帖子和示例,以及我自己的大量实验,拼凑了这段代码:

$page.getGroup().getExpandoBridge().getAttribute("org-home-page")
不幸的是,Velocity无法解析表达式,并使其保持不变

以下表达式在portal_normal中进行计算,但显然这些语句都不能完成全部工作:

$page                               ## seems to represent the current page
$page.getGroup()                    ## seems to represent the current Org
$page.getGroup().getExpandoBridge() ## seems to give me an "Expando bridge" object
只有最后一个步骤失败了,在这一步中,我通过名称来标识我要检索其值的特定自定义字段

我不允许编写任何自定义Java来促进这一点,所以不必费心启动Eclipse。8仅可接受完全在Velocity模板内实施的解决方案


非常感谢您的帮助。

我在Liferay Portal 6.1.0中使用以下方法获得了组织自定义字段的值。也许它太冗长了,但至少它是有效的

init_custom.vm portal_normal.vm
我能够在Liferay Portal 6.1.0中使用以下方法获得组织的自定义字段的值。也许它太冗长了,但至少它是有效的

init_custom.vm portal_normal.vm
在Liferay 7+中为我工作:

创建自定义字段类型站点,将数据填充到站点设置中,并使用主题模板将此数据调用到liferay主题中:

如果是VM文件:

#set ($site_custom_field = $layout.getGroup().getExpandoBridge().getAttribute("site_custom_field_key"))
<h1>$site_custom_field</h1>
如果是FTL文件:

<#assign site_custom_field = layout.getGroup().getExpandoBridge().getAttribute("site_custom_field_key")>
<h1>${site_custom_field}</h1>

在Liferay 7+中为我工作:

创建自定义字段类型站点,将数据填充到站点设置中,并使用主题模板将此数据调用到liferay主题中:

如果是VM文件:

#set ($site_custom_field = $layout.getGroup().getExpandoBridge().getAttribute("site_custom_field_key"))
<h1>$site_custom_field</h1>
如果是FTL文件:

<#assign site_custom_field = layout.getGroup().getExpandoBridge().getAttribute("site_custom_field_key")>
<h1>${site_custom_field}</h1>

搞定了!谢谢我对isOrg检查很好奇-当前组是否可能不是组织?还有-有没有一种方法可以在不通过orglocalservice进行查找的情况下从$layout向外遍历到当前组织?不管怎样,这都是非常好的。@Tom当然,一个团队可能不是一个组织团队。例如,对于不在组织社区内的站点或用户页面,$layout.getGroup.isoorganization==false。至于获取组织对象,我也很好奇是否可以直接从$layout获取,但不幸的是,我没有找到这样做的方法。搞定了!谢谢我对isOrg检查很好奇-当前组是否可能不是组织?还有-有没有一种方法可以在不通过orglocalservice进行查找的情况下从$layout向外遍历到当前组织?不管怎样,这都是非常好的。@Tom当然,一个团队可能不是一个组织团队。例如,对于不在组织社区内的站点或用户页面,$layout.getGroup.isoorganization==false。至于获取组织对象,我也很好奇是否可以直接从$layout获取,但不幸的是,我没有找到这样做的方法。我不再在Liferay环境中工作,所以我不能说这是否有效。当然,如果这个答案对未来的研究人员有效,欢迎他们投票支持。也有可能此解决方案仅适用于较新版本的Liferay。我的原始问题现在已经有5年了。我不再在Liferay环境中工作,因此我无法确定此解决方案是否有效。当然,如果这个答案对未来的研究人员有效,欢迎他们投票支持。也有可能这个解决方案只适用于更新版本的Liferay。我原来的问题已经5年了。