2012-10-04 90 views
1

有沒有一種方法可以將Liferay文檔或Web內容結構和模板包含在Portlet插件war文件中,並讓它們像標準的那樣可供用戶使用?在Liferay插件戰爭中打包文檔結構和模板

用例可能是您正在編寫一個利用您提供的自定義文檔庫結構的portlet。但是,您不希望通過自己的安裝過程將此結構作爲單獨的東西分發(例如僅爲結構提供LAR),您只需要讓插件在安裝時使用定製結構。

回答

2

您可以通過添加一個portal.properties文件到WEB-INF實現你的目標/類別 portlet的目錄。此文件應包含以下行:

application.startup.events=com.yourcompany.whatever.YourCustomStartupAction 

這個自定義開機動作應該是從com.liferay.portal.kernel.events.SimpleAction擴展一個類。在你的portlet啓動的時候,你將能夠利用所有的Liferay服務utils在Liferay中做些事情。您需要使用Liferay文檔庫專門使用的類是DLAppLocalServiceUtil。這個util類具有處理文檔庫中的文件/文件夾的所有必要方法。

對於網頁內容相關的東西,如結構,模板和文章,只需使用JournalStructureLocalServiceUtil,JournalTemplateLocalServiceUtilJournalArticleLocalServiceUtil

+0

所以我認爲你應該建議我創建一個啓動操作,它使用服務層來創建結構的XML並將其直接存儲到JournalStructure表中。對於Web Content結構,這似乎值得一試。 – npskirk

+0

所以我認爲你建議我應該創建一個啓動操作,它使用服務層將結構的XSD直接創建並存儲到JournalStructure表中。這似乎值得一試,至少對於Web Content結構來說。 對於自定義文檔庫元數據,我猜想模擬應該是DDMStructureLocalService和DDMTemplateLocalService。 – npskirk

+0

這是一種通用的方法,在WAR啓動期間使用Liferay進行任何操作,在這種情況下(通常我們使用鉤子並讓portlet依賴於部署)使用portlet。你唯一需要考慮的是鉤子被部署和重新部署的結果等等。這意味着你必須引入代碼來進行一些檢查,例如如果結構存在,那麼更新是用portlet中的版本覆蓋它,無論你想要什麼......。 – fimez

1

我希望我的問題正確;)
您可以在部署portlet時通過DLFolderService創建文件夾Structure。
要運行的方法當服務器啓動時,你將不得不使用CustomAction我認爲,檢查出來:here