2017-07-28 102 views
0

从JavaScript开始,我需要创建一个显示特定portlet的页面内(基于DIV的?)弹出窗口。如何在Liferay 7的页内弹出窗口中嵌入portlet

这看起来很像我需要什么:
https://web.liferay.com/community/wiki/-/wiki/Main/Using+Pop-up+in+Liferay

Liferay的提供了一个叫做Expanse.Popup来实现这种类型的弹出窗口的类。这里是这种类型的弹出窗口将如何:
enter image description here
此javascript代码将对我们给它的url进行异步调用,并将内容放入我们的页面。下面有将在名为 '我们的标题' 一个弹出加载的URL 'URL' 的例子:

VAR弹出=新Expanse.Popup(
[...]

问题:不幸的是,当我把这些代码在我的portlet和部署&运行它,我得到:

TypeError: Expanse.Popup is not a function 

,根据该页面的评论功能已经改变了名字多次我都试过Alloy.PopupA.Popup,Liferay.Popup,都以相似的方式失败。另外,我已经读过AUI已被弃用,不建议用于新开发。

Liferay.Util.openWindow工作,但不幸的是它将一个URL作为参数,而不是一个portlet。有没有什么办法让它显示一个portlet?我不想在所有网站上为此创建一个页面。

问题:如何在Liferay 7中实现加载portlet的这个页内弹出窗口?
它可以是模式或不是:我不介意用户是否可以让弹出窗口打开并与页面的其余部分进行交互。

+0

试试这里的代码:https://stackoverflow.com/questions/35162383/how-can-i-open-a-pop-up-of-my-jsf- portlet的编辑模式/ 35162384#35162384。因为它是JSF特有的,所以您需要稍微更改它,但对于JSP来说,更改应该很容易。 – stiemannkj1

回答

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作为参数),或者您可以构造自我如果你知道的语法(不推荐)