在Portlet Liferay 6.1中渲染Liferay页面URL

时间:2012-08-20 20:58:24

标签: liferay liferay-6 liferay-velocity liferay-theme

我是liferay的新手,我几乎是肯定的,这非常简单:使用速度标记,我希望能够生成Liferay网站中的页面链接,并将它们嵌入到我的内部不同页面上的portlet。

我对如何做到这一点有一个模糊的想法所以我一直在搜索它会在某处发布,但我找不到任何东西。顺便说一下,我想在portlet的view.jsp中放入我提出的任何代码。我会在这里使用速度标记,但我不会想(如果不确定的话)是否允许在jsp中使用。

如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:4)

  

我会在这里使用速度标记,但我不认为(不确定)是否允许在jsp内部。

为什么要在JSP(view.jsp)中使用Velocity标记?除了你在速度方面非常出色的论点外,我认为这样做没有任何好处。

虽然这里有一个link可以帮助你在JSP中嵌入速度。

注意:在我看来,在JSP中将速度嵌入portlet中不是一个好习惯

在JSP中

在虚拟机中(这些主题中的*.vm个文件):
您可以按照JSP中提到的所有步骤进行操作。您需要做的事情是:

  • LayoutLocalService的实例可以通过使用以下代码(取自此answer)找到:

    #set($layoutLocalService = $serviceLocator.findService("com.liferay.portal.service.LayoutLocalService"))
    

    现在您可以使用速度变量$layoutLocalService来调用服务方法来获取布局。

  • 然后,您可以使用主题中PortalUtil个文件可用的变量$portalUtil来调用*.vm类的方法。

您可以查看以下文件以获取更多详细信息(如果您有兴趣):

  1. docroot/html/themes/_unstyled/templates/init.vm,其中包含主题中可用的所有力度变量。感兴趣的变量可能是$theme$theme_display$layout$navItems
  2. docroot/html/themes/_unstyled/templates/portlet.vm,此文件是显示各个portlet的模板。
  3. docroot/html/themes/_unstyled/templates/navigation.vm,包含用于显示带有页面链接的导航菜单的代码。
  4. docroot/html/themes/_unstyled/templates/portal_normal.vm,此文件代表liferay中的页面模板,其中包含其他文件,例如navigation.vm& portlet.vm

答案 1 :(得分:1)

对于速度:

好的,为了生成Liferay页面的速度链接,请查看Liferay源代码中的以下文件:

/portal-web/docroot/html/themes/_unstyled/templates/navigation.vm

在那里,您将看到默认的Liferay主题如何为您的网站生成导航结构。为了让你的生活更轻松,它是:

<nav class="$nav_css_class" id="navigation">
<h1>
    <span>#language("navigation")</span>
</h1>

<ul>
    #foreach ($nav_item in $nav_items)
        #if ($nav_item.isSelected())
            <li class="selected">
        #else
            <li>
        #end
            <a href="$nav_item.getURL()" $nav_item.getTarget()><span>$nav_item.icon() $nav_item.getName()</span></a>

            #if ($nav_item.hasChildren())
                <ul class="child-menu">
                    #foreach ($nav_child in $nav_item.getChildren())
                        #if ($nav_child.isSelected())
                            <li class="selected">
                        #else
                            <li>
                        #end
                            <a href="$nav_child.getURL()" $nav_child.getTarget()>$nav_child.getName()</a>
                        </li>
                    #end
                </ul>
            #end
        </li>
    #end
</ul>

因此,Velocity正在查看名为$ nav_items的集合,然后对每个项目调用getURL()方法以生成链接。

对于JSP:

  1. 您需要使用LayoutLocalServiceUtil类,然后使用 特别是getLayouts()方法之一。你必须选择最适合你需要的方法。
  2. 这将返回布局列表(您的页面),然后您可以 在每个布局上调用getFriendlyURL()来返回它的url 这将是您网站的相对网址,所以类似于 /我的现场家庭页。
  3. 如果您还有其他问题,请与我们联系!