1. 程式人生 > 實用技巧 >如何對liferay中的dockbar進行修改

如何對liferay中的dockbar進行修改

參考:http://www.huqiwen.com/2016/06/08/how-modify-dockbar-in-liferay/

Liferay中有時候我們需要對dockbar的內容進行修改與調整。

許可權的控制參考上一篇部落格:

讓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進行調整,比如新增一個子選單,新增自己想要的內容等等