Liferay7.3:如何预配置嵌入在页面片段中的portlet? [英] Liferay 7.3: How to preconfigure a portlet embedded in a page fragment?
问题描述
我们正在使用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
属性的值。
<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屋!