2

Liferay サイトで Web コンテンツ表示用の一連のカスタム構造 (および一致するテンプレート) を作成しています。

サイト管理者にとってより便利にするために、これらのテンプレートの 1 つに、デフォルトでルック アンド フィールの境界線を抑制してもらいたいと思います。

テーマに埋め込まれたポートレットの境界線を無効にする方法を示すドキュメントとサンプルをオンラインで見つけましたが、WCD テンプレート内でそれらの手法を適用することができませんでした。

テーマに埋め込まれているのを見たコードは次のとおりです。

#set ($VOID = $velocityPortletPreferences.setValue("portlet-setup-show-borders", "false"))
#set ($VOID = $theme.runtime("customportletname_WAR_pluginname", "", $velocityPortletPreferences.toString()))
$velocityPortletPreferences.reset()

テンプレートに適用した方法は次のとおりです。

#set ($VOID = $velocityPortletPreferences.setValue("portlet-setup-show-borders", "false"))
<div class="custom-wcd wcdnormal">
    <h2>$title.getData()</h2>
    $content.getData()
</div>
$velocityPortletPreferences.reset()

それがうまくいかなかったことに驚きはありません -- 設定をポートレットに適用する $theme.runtime 呼び出しに類似するものは何もありませんが、$theme.runtime がこの層で適切かどうかもわかりません。そうである場合、最初の引数として指定する値。これが最も可能性の高い代替案だと思いますが、WCD ポートレットを $theme.runtime に特定する方法も、その情報を追跡する方法もわかりません (私はまったく Java 開発者ではありません)。 .

明確にするために、デフォルトですべてのポートレットの境界線を無効にすることは受け入れられません。また、レンダリング時にジャーナル記事コンポーネントを消費する Java コントローラーを変更する立場にもありません。

アドバイスをいただければ幸いです。

4

2 に答える 2

3

シンプルで直接的:

$velocityPortletPreferences.setValue("portletSetupShowBorders", "false") 
$velocityPortletPreferences.setValue("languageIds", "pt_BR,en_US")
$velocityPortletPreferences.setValue("displayStyle", "1")
$theme.runtime("82", "", $velocityPortletPreferences.toString())
$velocityPortletPreferences.reset()

この例は、言語ポートレット (ポートレット ID = 82) を .vm テーマ ファイルの 1 つに直接埋め込むためのものです。私の場合、このコードは navigation.vm にあります。

于 2012-12-19T13:35:28.560 に答える
2

Liferay のプロパティ/設定名は時々変更される傾向があります。今週、サイトを作成し、ポートレットを含むページを配置し、構造、テンプレート、および記事のデフォルト セットを使用して CMS をプロビジョニングするためのフックを作成しました。私もポートレットの境界線をオフにする必要があり、それを実現するには、次の設定名を false に設定する必要がありました: portletSetupShowBorders

次のようにこれを行ったJavaコード:

PortletPreferences prefs = PortletPreferencesFactoryUtil.getLayoutPortletSetup(page, portletInstanceId);
prefs.setValue("groupId", String.valueOf(page.getGroupId()));
prefs.setValue("articleId", article.name());
prefs.setValue("portletSetupShowBorders", "false");
prefs.store();

Liferay ジャーナル テンプレートから、次のコードを使用して、テンプレートを使用する記事を表示するポートレットの境界線をオフにできるはずです。

#set ($portletPreferencesService = $serviceLocator.findService('com.liferay.portal.service.PortletPreferencesLocalService'))
#set ($companyId = $getterUtil.getLong($companyId))
#set ($ownerId = 0) ## PortletKeys.PREFS_OWNER_ID_DEFAULT
#set ($ownerType = 3) ## PortletKeys.PREFS_OWNER_TYPE_LAYOUT
#set ($plid = $getterUtil.getLong($request.theme-display.plid))
#set ($portletId = $request.theme-display.portlet-display.id)
#set ($portletPreferences = $portletPreferencesService.getPreferences($companyId, $ownerId, $ownerType, $plid, $portletId))
#set ($VOID = $portletPreferences.setValue('portlet-setup-show-borders', 'false'))
#set ($VOID = $portletPreferences.store())

portal-ext.properties に次の行も追加する必要があることを覚えておいてください。

journal.template.velocity.restricted.variables=
于 2012-08-21T10:41:27.317 に答える