2017-07-28 100 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作爲參數),或者您可以構造自我如果你知道的語法(不推薦)