我正在尝试从其中一个Liferay模板中发出自定义字段的值。
使用管理界面,我定义了一个名为“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模板中实现的解决方案才是可接受的。
感谢任何帮助。
答案 0 :(得分:4)
我能够在Liferay Portal 6.1.0中使用以下方法获取组织的自定义字段的值。也许它太冗长了,但至少它是有效的。 :)
...
## Null variable
#set($null = $some-never-used-variable-name)
...
#set($organization = $null)
#if ($layout.getGroup().isOrganization())
## Get organization by id
#set($organizationLocalService = $serviceLocator.findService("com.liferay.portal.service.OrganizationLocalService"))
#set($organizationId = $layout.getGroup().getOrganizationId())
#set($organization = $organizationLocalService.getOrganization($organizationId))
#end
...
...
#if ($organization != $null)
## Use value of custom field of organization
$organization.getExpandoBridge().getAttribute("org-home-page")
#end
...
答案 1 :(得分:0)
在Liferay 7 +中为我工作:
创建自定义字段类型" site",将数据填充到网站设置中,并使用主题模板将此数据调用到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>