2012-05-09 42 views
1

因此,情況就是如此。我想在我們新的Liferay 6.1站點上將我們以前網站的「舊」新聞添加到資產發佈者portlet。問題是我希望他們顯示出來,好像我過去添加了它們。通過Liferay API更改Liferay期刊文章(Web內容)上的createDate

所以,我想,修改createDate有多難?我已經能夠直接訪問MySQL數據庫並在文章對象的createDate字段上執行更新。然而,它似乎並沒有傳播到我的Liferay部署,無論是清除緩存,重新索引搜索索引並重新啓動Liferay。即使數據庫將其顯示爲我已將其更改爲的值,但網頁內容仍會保留它的「原始」createDate

這是我使用的查詢:

mysql> UPDATE JournalArticle SET createDate='2012-03-08 15:17:12' WHERE ArticleID = 16332; 

我後來才知道,那是一個沒有沒有直接操作數據庫,數據庫的動態/ Liferay的是不是直線前進的Liferay的表演查找。所以看起來我可能需要使用Liferay API,即setCreateDate,如here所示。

但我絕對不知道在哪裏以及如何利用API。我是否需要創建一個虛擬portlet,其唯一目的是使用此API調用?或者,我可以在運行我的Liferay部署的服務器上的某處創建一個.java文件,並運行它來利用此方法?

我只有15篇文章我需要這樣做。我可以通過參考ArticleID和GroupID來找到它們。

任何幫助將不勝感激。我使用grep進行了Liferay部署,發現setCreateDate在knowledge-base-portlet內部的.java文件中被嚴重使用,但是我不知道如何在不創建portlet的情況下直接使用它們。另一方面,如果有人知道如何讓我的數據庫能夠傳播,那麼它就是對Liferay部署的更改,儘管我知道這是一個骯髒的黑客攻擊,但這可能是最簡單的。

謝謝;對此,我真的非常感激。

回答

3

Liferay API的使用當然是更清晰更好的方法,但只有15篇文章,我會嘗試通過數據庫直接更改它。

我檢查了數據庫,Liferay似乎將這些數據存儲在這些表中:JOURNALARTICLEASSETENTRY

嘗試更改這兩個表中的創建日期。

然後重新加載緩存:控制面板 - >服務器管理 - >清除數據庫緩存。

+0

這解決了它。太好了!我沒有意識到AssetEntry表格也包含相關的字段。如果我在兩個地方改變它,它的作品! – HodorTheCoder

0

您可以爲應用程序啓動事件編寫掛鉤。這種方式每當Liferay首次啓動時,它會根據您的需要更改創建日期。後來如果你想刪除鉤子可以很容易地完成。在這裏看到如何創建一個鉤子並部署它。

http://www.liferay.com/community/wiki/-/wiki/Main/Portal+Hook+Plugins

此外,在改變數據庫本身不是在所有推薦的連服1個值/條。始終使用Liferay提供的服務API進行修改。

相關問題