簡體   English   中英

如何在Liferay的速度模板中獲得活動的主題名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM