如何對liferay中的dockbar進行修改
參考:http://www.huqiwen.com/2016/06/08/how-modify-dockbar-in-liferay/
Liferay中有時候我們需要對dockbar的內容進行修改與調整。
許可權的控制參考上一篇部落格:
dockbar的引入是在主題裡面,具體的定義是在主題的templates/portal_normal.vm裡面,我們在裡面可以看到如下的程式碼:
#dockbar()
或者
#if ($is_signed_in) #dockbar() #end
原始碼尋找步驟
要進行修改,我們必須要知道這些對應的程式碼是在什麼地方的?
1、基於上面的程式碼我們知道#dockbar()是定義dockbar的引入的,前面有#表示是velocity的指定,此指令的定義是在原始碼的/portal-impl/src/VM_liferay.vm裡面,在這裡面可以找到如下的程式碼:
#macro (dockbar) $theme.runtime("145") #end
這是採用巨集定義了一個指令dockbar,定義的部分是呼叫了一個portlet,$theme.runtime("145")表示的是在此處呼叫portletid為145的portlet。
2、基於portletid,尋找portlet,需要在原始碼的portal-web/docroot/WEB-INF/portlet-custom.xml裡面尋找portlet-id為145的。可以尋找到如下的程式碼:
可以看到具體的程式碼是在/html/portlet/dockbar裡面。
在原始碼裡面進入到此目錄裡面的,尋找view.jsp,通過閱讀程式碼可以發現,這裡就是dockbar的入口,左上角的管理,我的站點,我帳號等的入口是在頁面view_user_panel.jspf裡面。
修改dockbar
比如,我們想將dockbar裡面的“我的站點”移除。
1、新建一個hook外掛工程。
2、建立customjsps,選擇view_user_panel.jspf,如下圖所示。
3、在hook工程裡面,開啟view_user_panel.jspf,將下面的此行程式碼刪除,則表示在dockbar中不再顯示“我的站點”內容。
<%@ include file="/html/portlet/dockbar/view_my_sites.jspf" %>
說明:這是採用hook對dockbar進行修改的例子,可以根據自己的需求對dockbar進行調整,比如新增一個子選單,新增自己想要的內容等等