从JavaScript开始,我需要创建一个显示特定portlet的页内(基于DIV?)弹出窗口。
这看起来与我需要的完全一样:
https://web.liferay.com/community/wiki/-/wiki/Main/Using+Pop-up+in+Liferay
Liferay提供了一个名为Expanse.Popup的类来实现这种类型的弹出窗口。以下是这种类型的弹出窗口的样子:
这个javascript代码将对我们提供的url进行异步调用,并将内容放在我们的页面中。下面是一个示例,它将加载网址'在一个叫做“我们的标题”的弹出窗口中:var popup = new Expanse.Popup(
[...]
问题:不幸的是,当我将该代码放入我的portlet并部署并运行它时,我得到:
TypeError: Expanse.Popup is not a function
根据该页面的评论,该功能多次更改名称。我尝试了Alloy.Popup
,A.Popup
,Liferay.Popup
,但都以类似的方式失败了。另外,我已经读过AUI已被弃用,不推荐用于新开发。
Liferay.Util.openWindow
有效,但不幸的是它将URL作为参数,而不是portlet。有没有办法让它显示一个portlet?我不想在所有网站上为此创建一个页面。
问题:如何在Liferay 7中实现加载portlet的页内弹出框? 它可以是模态的:我不介意用户是否可以打开弹出窗口并与页面的其余部分进行交互。
答案 0 :(得分:0)
openWindow是一个很好的方法。如果您查看portlet选项以及如何打开配置对话框,您将获得类似这样的内容
Liferay.Portlet.openWindow({
bodyCssClass: 'dialog-with-footer',
destroyOnHide: true,
namespace: '_com_liferay_polls_web_portlet_PollsDisplayPortlet_INSTANCE_qOP6anrnoY5o_',
portlet: '#p_p_id_com_liferay_polls_web_portlet_PollsDisplayPortlet_INSTANCE_qOP6anrnoY5o_',
portletId: 'com_liferay_polls_web_portlet_PollsDisplayPortlet_INSTANCE_qOP6anrnoY5o',
title: 'ASDF',
uri: 'portlet render url'
});
需要URL来精确定位您实际想要呈现的portlet,但是您可以通过liferay-portlet轻松地为您生成一个:renderURL标记(它将portlet id作为参数),或者您可以构建自己的如果你知道语法(不推荐)