我的建議是不硬編碼主題的名稱,但使用易於獲得的theme settings。只需將您的主題配置爲「桌面」或「移動」樣式並檢查此屬性。這樣你就可以覆蓋許多不同的主題,而不需要對特定的主題進行硬編碼
此外,各種ThemeDisplay.getTheme*()
方法將幫助您在幾乎任何地方獲得所需的信息。
這裏是你的主題,一些未經測試的僞代碼(我剛纔輸入在這裏,從來沒有編譯/部署,您可能要添加空檢查虛擬機的東西)
<?xml version="1.0"?>
<!DOCTYPE look-and-feel PUBLIC "-//Liferay//DTD Look and Feel 6.0.0//EN" "http://www.liferay.com/dtd/liferay-look-and-feel_6_0_0.dtd">
<look-and-feel>
<compatibility>
<version>6.1.0+</version>
</compatibility>
<theme id="my-desktop-1" name="My First Desktop Theme">
<settings>
<setting key="mobile" value="false" />
</settings>
</theme>
</look-and-feel>
<?xml version="1.0"?>
<!DOCTYPE look-and-feel PUBLIC "-//Liferay//DTD Look and Feel 6.0.0//EN" "http://www.liferay.com/dtd/liferay-look-and-feel_6_0_0.dtd">
<look-and-feel>
<compatibility>
<version>6.1.0+</version>
</compatibility>
<theme id="my-mobile-1" name="My First Mobile Theme">
<settings>
<setting key="mobile" value="true" />
</settings>
</theme>
</look-and-feel>
,然後在虛擬機或JSP或其他代碼:
#if(! $themeDisplay.getSetting("mobile"))
## more resources, desktop only, here.
#end
#if($themeDisplay.getSetting("mobile")
## mobile only stuff here.
#end
最後,你也可能要考慮使用Device Detection API來確定一個遠更細的粒度當前設備的實際能力
嘿,謝謝!不知何故,它沒有奏效。我應該啓用任何模板來訪問$ themeDisplay嗎? – Algeron
而通過模板我的意思是網頁內容模板,而不是像portal_normal.vm主題模板 – Algeron