[英]How to get active theme name in velocity template in Liferay
我們將一個主題用於桌面網頁,將另一個主題用於站點的響應/移動版本。 但是對於移動設備,我們並不總是希望顯示圖像,如果我們可以將其限制在模板中,而不僅僅是用CSS隱藏它(因為它仍然加載圖像,只是不顯示圖像),那將是很好的。
為此,我需要獲取liferay當前的活動主題ID或名稱,以便可以在模板中添加簡單的if語句。
#if(${themename} == "desktopTheme")
<img src="foo.jpg"/>
#end
有誰知道如何獲得它? 我搜索並檢查了很多liferay的論壇,但沒有找到任何東西。
謝謝!
我的建議是不要對主題名稱進行硬編碼,而應使用隨時可用的主題設置 。 只需將主題配置為“桌面”或“移動”樣式,然后檢查此屬性即可。 這樣,您可以涵蓋許多不同的主題,而無需對特定主題進行硬編碼。
另外,各種ThemeDisplay.getTheme*()
方法將幫助您幾乎在任何地方獲取所需的信息。
這是您的主題的一些未經測試的偽代碼(我只是在這里輸入了它,從未進行過編譯/部署,您可能想為VM內容添加空檢查)
<?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>
然后,在VM或JSP或其他代碼中:
#if( ! $themeDisplay.getSetting("mobile"))
## more resources, desktop only, here.
#end
#if( $themeDisplay.getSetting("mobile")
## mobile only stuff here.
#end
最后,您可能還需要考慮使用設備檢測API以更精細的粒度確定當前設備的實際功能
建議您使用themeId whis也很獨特。 其內容如下:xxx_WAR_xxxtheme
#if($themeDisplay.getThemeId().equalsIgnoreCase("<dektop theme id>"))
### your logic here
#end
高溫超導
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.