Liferay主题,仅在欢迎页面中显示组件

时间:2014-07-04 14:20:47

标签: liferay-6 velocity liferay-theme

我正在编辑一个Liferay主题。通过编辑portal_normal.vm,我想有条件地显示或隐藏组件

#if ($is_welcome_page)
<span class="lang">
    $taglibLiferay.language("fm",null,"languageId",1)
    <br>
    <div class="my-menu">
       ...... lots of irrelevant stuff here
    </div>              
</span>
#end>

如果当前页面是Portal的欢迎页面,我怎样才能使$is_welcome_page变量成为现实? 我想我可以得到友好的Url并检查它,但我不确定我该怎么做。任何工作代码都将非常感谢!

编辑:使用Liferay 6.1.0,如果有帮助

2 个答案:

答案 0 :(得分:2)

通常,每页自定义主题是一种不好的做法(主题应该是全局的或针对特定网站自定义)。要正确地执行此操作,您应该只在主站点上添加语言portlet,而不是在主题模板中对其进行硬编码。

无论如何,如果你真的想这样做,你可以访问layout对象(直接或通过$layout = $theme.getLayout()),它在Liferay中是一个页面的表示(例如它有{ {1}}方法)。检查Liferay Wiki以获取可从Velocity访问的所有变量的列表,您可以使用许多其他属性,例如getFriendlyURL()

这是一个主题自定义,所以一个好的做法是将所有自定义设置放在主题设置中。您可以在Liferay's documentation中了解如何操作。

答案 1 :(得分:1)

我做到了,感谢@KrzysztofGołębiowski

        #set($testPageName = $theme.getLayout().getFriendlyURL())
        #set($layout = $theme.getLayout())
        #set($currPageName = $layout.getFriendlyURL())
        #set($isWelcomPage = $currPageName == "/home")

        #if ($isWelcomPage)
         <span class="lang">
            $taglibLiferay.language("fm",null,"languageId",1)


            <br>
        #end