2010-10-13 56 views
0

當用戶使用移動設備導航到liferay門戶時,我需要將主題(假設默認主題=經典)更改爲iphone主題(或其他)。Liferay Change主題移動設備

我想去做這樣的:
- 創建一個鉤被觸發的用戶登錄事件
- 檢查使用User-Agent請求頭屬性設備
- 如果需要的話,設置主題iphone使用LayoutServiceUtil

可能有更好的方法來實現這樣的要求,所以隨時提供替代品。

我對liferay很陌生,所以這可能是我無法得到這個工作的原因。

a。首先,我對如何處理liferay中的主題非常困惑;似乎有很多難以區分的各種相關模型對象:主題,主題顯示,佈局,佈局集,ColorScheme ...。有人可以解釋這一點,或知道這是解釋?

b。顯然你需要從請求中獲取ThemeDisplay以設置主題。但是,當用戶登錄時,主題屬性(THEME_DISPLAY)尚未設置(無論是在事件發生前還是事件發生後;在註銷事件期間檢查時設置)。在登錄期間設置主題是絕對的最低限度,我實際上希望能夠在用戶登錄之前設置主題,但由於在用戶登錄後該屬性甚至不知道...

c。當使用LayoutServiceUtil.updateLookAndFeel時,您需要提供groupId,themeId,colorSchemeId,css,...。我期待它只是告訴liferay無論使用什麼groupId,使用哪個主題(名稱)......。這不可能嗎?

非常感謝您的幫助,
斯泰恩

附:我使用的是liferay 6.0.5。

回答

1

我還沒有嘗試過這個,但我正在計劃研究它: Milen Dyankov's extensions似乎有一種方法可以讓您根據在控制面板中配置的用戶代理來選擇主題。你可以閱讀他的博客here

+0

tx,看起來非常有趣...... – 2011-04-12 08:59:28

1

我可能會誤會,但我很確定切換會自動發生。

問題a:你是在開發自己的主題,還是隻是想定製它? 問題b:爲什麼不正確設置默認主題?只需在設置pannel => layout =>底部設置它

編輯: 我會警惕使用login.pre鉤子。雖然這會在您登錄時更新,但意味着直到用戶實際登錄後纔會看到錯誤的主題。我會在主頁面上的portlet的默認渲染模式下檢查它,或者找到首次訪問該頁面時使用的鉤子。

似乎是這樣的一種可能性:servlet.service.events.pre 這樣就會檢查每個http請求。可能有更好的選擇。 (我不熟悉liferay)

而要獲取groupId等,你可以使用:long groupId = ParamUtil.getLong(actionRequest,「groupId」);

+0

Tx爲您的答案;似乎有一個基於Liferay中的usera的自動檢測,但僅適用於wap。如果您使用wap模擬器導航到您的liferay網站,則會選擇wap主題。在控制面板中,您還可以選擇wap主題,如果您創建自定義佈局,則可以創建普通佈局和wap佈局。我們希望有一種類似的工作方式,但對於其他移動設備。這似乎並沒有提供OOTB :-(A:創建我們自己的主題(基於經典主題)B:我們需要根據useragent切換主題/佈局。 – 2010-12-20 10:27:04

+0

更新我的答案 – jack 2010-12-20 11:48:35

+0

tx again,I當我回到liferay發展在幾個星期後將看看這個... – 2010-12-20 11:59:11