2

我正在尝试从 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 模板中实现的解决方案才可接受。

任何帮助表示赞赏。

4

2 回答 2

4

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

init_custom.vm

...
## 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
...

portal_normal.vm

...
#if ($organization != $null)
    ## Use value of custom field of organization
    $organization.getExpandoBridge().getAttribute("org-home-page")
#end    
...
于 2012-11-16T06:32:36.283 回答
0

在 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>
于 2017-12-13T21:14:15.977 回答