2013-09-30 76 views
1

我們使用一個主題作爲我們的桌面網頁,另一個主題用於網站的響應/移動版本。但是對於移動設備,我們並不總是希望顯示圖像,如果我們可以將其限制在模板中,而不僅僅是隱藏CSS(因爲它仍然加載圖像,只是不顯示它)會很好。如何在Liferay中的速度模板中獲得活動主題名稱

爲此,我需要獲取liferay當前活動的主題ID或名稱,以便我可以在模板中添加簡單的if語句。

#if(${themename} == "desktopTheme") 
<img src="foo.jpg"/> 
#end 

有沒有人有想法如何得到它?我搜索並檢查了很多liferay的論壇,但沒有找到任何東西。

謝謝!

回答

3

我的建議是不硬編碼主題的名稱,但使用易於獲得的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來確定一個遠更細的粒度當前設備的實際能力

+0

嘿,謝謝!不知何故,它沒有奏效。我應該啓用任何模板來訪問$ themeDisplay嗎? – Algeron

+0

而通過模板我的意思是網頁內容模板,而不是像portal_normal.vm主題模板 – Algeron

2

建議您使用themeId whis也是獨一無二的。其下面的內容: xxx_WAR_xxxtheme

#if($themeDisplay.getThemeId().equalsIgnoreCase("<dektop theme id>")) 
### your logic here 
#end 

HTH

+0

如果我添加到模板只是$ themeDisplay.getThemeId()它不會渲染它?你知道我在哪裏可以找到ID嗎? – Algeron

+0

在我的答案中查看僞代碼(實際上是xml)以查找主題的ID –

相關問題