Liferay7.3:如何预配置嵌入在页面片段中的portlet? [英] Liferay 7.3: How to preconfigure a portlet embedded in a page fragment?

查看:22
本文介绍了Liferay7.3:如何预配置嵌入在页面片段中的portlet?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在使用Liferay7.3(CE),并试图用"页面片段"来拥抱"内容页面"这一相对较新的特性。我们可以使用<lfr-widget-WIDGETALIAS>标记开发已经包含Portlet的页面片段(在内容页面上下文中命名为"widgets")。到目前为止,这是可行的。

现在,我们正在尝试准备嵌入Portlet的页面片段,其中应用了特殊的Portlet配置。例如,我们希望准备一个页面片段,该页面片段仅显示配置为列出预定义类别中的WebContent文章的资产发布者Portlet。用户应该能够将该片段放到页面上,而不必关心资产发布者Portlet的配置。

我们没有找到任何直接的方法来实现这一点--我们最初的猜测是配置可以作为<lfr-widget-...>标记的属性或内容写入,但救生索文档中没有可附加到该标记的有效属性或内容的提示阻止了我们的猜测。

有人知道如何在应用预定义Portlet配置的情况下实现在页面片段中嵌入Portlet吗?(包括开箱即用的Liferay portlet?)

推荐答案

我自己想出来的。

片段编辑器没有告诉您的一件事是,片段的HTML部分实际上被解释为Freemarker模板,但需要注意的是,只允许Freemarkers alternative syntax

这反过来意味着Liferays标记库是可用的,这意味着我们可以使用标记<liferay-portlet:runtime>(当然,移植到freemarker替代语法),它接受defaultPreferences属性。现在,我们只需配置Portlet一次,在DB中找到它的portletPreferences XML数据(请参见表PortletPreferences),删除我们不想预配置的值,然后只使用结果首选项XML作为<liferay-portlet:runtime>标记的defaultPreferences属性的值。

必须小心处理任何ID(例如,如果您要预配置资产类别过滤)。最好从相应的服务中获取相应的对象,并从该对象中获取ID。

本示例提供了页面片段的HTML部件,该页面片段将AssetPublisher放到页面上,预配置为显示12个项目(而不是默认的20个)。(片段的CSS、JS和配置是页面片段编辑器提供的默认值。)

<div class="fragment-12345">
  [#assign assetPublisherPortletPreferences="<portlet-preferences>
    <preference>
        <name>delta</name>
        <value>12</value>
    </preference>
</portlet-preferences>" /]
  [@liferay_portlet["runtime"]
    instanceId="${fragmentEntryLinkNamespace}assets"
    portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"
    defaultPreferences="${assetPublisherPortletPreferences}"
  /]
</div>

这篇关于Liferay7.3:如何预配置嵌入在页面片段中的portlet?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆