2

我正在为 Liferay 站点上的 Web 内容显示创建一组自定义结构(和匹配的模板)。

为了使站点维护人员更方便,我希望这些模板之一默认抑制外观边框。

我在网上找到了文档和示例,展示了如何禁用嵌入在主题中的 portlet 的边框,但是我没有运气在 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()

我对它不起作用并不感到惊讶——没有什么类似于将首选项应用于 portlet 的 $theme.runtime 调用,但我也不知道 $theme.runtime 在这一层是否合适,并且如果是,作为第一个参数提供什么值。我怀疑这最后一个是最有可能的替代方案,但我不知道如何将 WCD portlet 识别为 $theme.runtime,也不知道如何跟踪该信息(无论如何我都不是 Java 开发人员) .

并且澄清一下:默认情况下禁用所有 portlet 上的边框是不可接受,我也无法修改在呈现时使用 journal-article 组件的 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()

此示例用于将语言 portlet (Portlet ID = 82) 直接嵌入到 .vm 主题文件之一中,在我的情况下,此代码位于 navigation.vm 上。

于 2012-12-19T13:35:28.560 回答
2

Liferay 属性/首选项名称有时会发生变化。这周我创建了一个钩子来创建一个站点,用包含 portlet 的页面填充它,并为 CMS 提供一组默认的结构、模板和文章。我也不得不关闭我的 portlet 的边框,并且需要将以下首选项名称设置为 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 日记模板中,您应该能够使用以下代码来关闭将显示使用该模板的文章的 portlet 的边框:

#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 回答