2013-06-05 32 views
1

我們希望在我們的門戶中使用liferay留言板。但不是用所有消息來存儲和顯示用戶名,我們需要一個單獨的暱稱來存儲和顯示在留言板中。帶暱稱的liferay留言板

暱稱的存儲已完成:通過爲用戶創建自定義字段「暱稱」,並在ext插件中重寫/重新實現「MBMessageLocalServiceImpl.addMessage」。

現在每條消息都將消息的用戶的暱稱作爲「用戶名」存儲在消息表中。但是因爲您可能已經知道存儲的暱稱不會與消息一起顯示,因爲所有顯示內容的用戶都會通過用戶標識獲取用戶數據,並且消息內的「用戶名」永遠不會顯示或甚至不被使用。 現在我開始挖掘liferay來源,找到用戶顯示的位置:「html/taglib/uiuserDisplay/start.jsp」。但我想如果擺弄這個,我會改變超過用戶在留言板顯示?!

那麼什麼是最小的入侵/最容易得到一個獨特的「綽號」留言板。

+0

您可以使用「JSP掛鉤」到「覆蓋」是Liferay的使用,而無需更改源代碼的JSP頁面。有關示例和更多詳細信息,請在Liferay Wiki中搜索「JSP hook」。 –

+0

與此同時,我有jsp-hook for「../user_display/start.jsp」,但正如問題中提到的,這覆蓋了使用user_display的所有位置(例如博客)。另一方面它並不覆蓋留言板中顯示用戶名的所有地方(例如,在所有線程「開始」和「最後一個帖子」仍然顯示用戶名的表格中)。我需要在留言板中顯示暱稱。你可能提供一個列表,所有jsps都要修改嗎? – dermoritz

+0

我只會修改留言板中使用的JSP頁面。可能是**不包括'user_display/start.jsp' –

回答

2

我能想到的一種方法是用鉤子。

您需要找到MessageBoard portlet的jsp中的所有位置,即顯示用戶名稱的/html/portlet/message_boards/,然後使用您的暱稱。

而且你還可以修改/html/taglib/uiuserDisplay/start.jsp有條件的,即你可以在這個start.jsp通過themeDisplay.getPortletDisplay().getPortletName()檢查,如果是這樣的message_boards門戶(portletId = 19),然後包括你的自定義代碼顯示綽號,否則這將是正常流動。

可能是乏味的,但那麼這就是你正在修改:-)一個Liferay的門戶

+1

thx - 我開始搜索所有使用用戶名/顯示和修改start.jsp的站點,但現在我不需要有條件地這樣做,因爲該博客目前未被使用。 – dermoritz