2

Liferayテンプレートの1つからカスタムフィールドの値を出力しようとしています。

管理UIを使用して、「org-home-page」という名前の新しい組織レベルのカスタムフィールドを定義しました。デフォルト値は「tomrules」です。

この値を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 に答える