【问题标题】:Liferay Theme, show component only in welcome pageLiferay 主题,仅在欢迎页面中显示组件
【发布时间】:2014-08-25 21:55:01
【问题描述】:

我正在编辑 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>

只有在当前页面是门户的 欢迎页面 时,我才能使 $is_welcome_page 变量变为 true ? 我想我可以得到友好的 URL 并检查它,但我不确定我该怎么做。任何工作代码将不胜感激!

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

【问题讨论】:

    标签: liferay-6 velocity liferay-theme


    【解决方案1】:

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

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

    这是一个主题自定义,因此最好将所有自定义设置放在主题设置中。你可以在Liferay's documentation阅读如何做。

    【讨论】:

    • 感谢您将我指向正确的地方。也非常欢迎您提出关于将 portlet 排除在主题之外的建议。
    【解决方案2】:

    我做到了,感谢@Krzysztof Gołę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
    

    【讨论】:

      猜你喜欢
      • 2022-07-31
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 2015-08-15
      • 2012-04-20
      • 2012-09-04
      相关资源
      最近更新 更多