如何在Liferay的velocity模板中获取活动主题名称

如何在Liferay的velocity模板中获取活动主题名称,liferay,liferay-velocity,liferay-theme,Liferay,Liferay Velocity,Liferay Theme,我们将一个主题用于桌面网页,另一个主题用于响应/移动版本的网站。但是对于移动设备,我们并不总是希望显示图像,如果我们可以从模板中限制它,而不仅仅是用CSS隐藏它,这将是一件好事,因为它仍然加载图像,只是不显示图像 为此,我需要获取liferay当前的活动主题ID或名称,以便在模板中添加简单的if语句 有人知道如何得到它吗?我搜索并检查了很多liferay的论坛,但什么也没找到 谢谢 我的建议是不要硬编码主题名称,而是使用现成的名称。只需将主题配置为桌面或移动风格,然后检查此属性。通过这种方式,您

我们将一个主题用于桌面网页,另一个主题用于响应/移动版本的网站。但是对于移动设备,我们并不总是希望显示图像,如果我们可以从模板中限制它,而不仅仅是用CSS隐藏它,这将是一件好事,因为它仍然加载图像,只是不显示图像

为此,我需要获取liferay当前的活动主题ID或名称,以便在模板中添加简单的if语句

有人知道如何得到它吗?我搜索并检查了很多liferay的论坛,但什么也没找到


谢谢

我的建议是不要硬编码主题名称,而是使用现成的名称。只需将主题配置为桌面或移动风格,然后检查此属性。通过这种方式,您可以涵盖许多不同的主题,而无需对特定主题进行硬编码

此外,各种方法将帮助您在几乎任何地方获得所需信息

这里有一些未经测试的主题伪代码,我只是在这里键入,从未编译/部署过,您可能希望为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内容添加空检查

<?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>

最后,您可能还想考虑使用一个更精细的粒度来确定当前设备的实际能力

建议您使用MeMID WHIS也是唯一的。这是以下几点: 战争主题

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

HTH

建议您使用EID whis,它也是独一无二的。这是以下几点: 战争主题

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

HTH

如果我只向模板添加$themeDisplay.getThemeId,它不会渲染它吗?你知道我在哪里可以找到id吗?请看伪代码,实际上,如果我添加到模板$themeDisplay.getThemeId中,那么在我的答案中的xml可以找到主题的id,但它不会呈现它?你知道我在哪里可以找到这个id吗?看看伪代码,实际上是我答案中的xml来找到主题的id嘿,谢谢!不知怎的,它没有起作用。我应该启用任何东西从模板访问$themeDisplay吗?我说的模板是指web内容模板,而不是像portal_normal.vmHey这样的主题模板,谢谢!不知怎的,它没有起作用。我应该启用任何东西从模板访问$themeDisplay吗?我所说的模板是指web内容模板,而不是像portal_normal.vm这样的主题模板