我是liferay的新手,我几乎是肯定的,这非常简单:使用速度标记,我希望能够生成Liferay网站中的页面链接,并将它们嵌入到我的内部不同页面上的portlet。
我对如何做到这一点有一个模糊的想法所以我一直在搜索它会在某处发布,但我找不到任何东西。顺便说一下,我想在portlet的view.jsp中放入我提出的任何代码。我会在这里使用速度标记,但我不会想(如果不确定的话)是否允许在jsp中使用。
如果您需要更多信息,请与我们联系。
答案 0 :(得分:4)
我会在这里使用速度标记,但我不认为(不确定)是否允许在jsp内部。
为什么要在JSP(view.jsp
)中使用Velocity标记?除了你在速度方面非常出色的论点外,我认为这样做没有任何好处。
虽然这里有一个link可以帮助你在JSP中嵌入速度。
注意:在我看来,在JSP中将速度嵌入portlet中不是一个好习惯
在JSP中:
Layout
对象,您可以借助LayoutLocalServiceUtil
中的静态方法获取该对象。com.liferay.portal.util.PortalUtil
的静态方法,例如getLayoutFriendlyURL
或getLayoutFullURL
等来构建网址。 在虚拟机中(这些主题中的*.vm
个文件):
您可以按照JSP中提到的所有步骤进行操作。您需要做的事情是:
LayoutLocalService
的实例可以通过使用以下代码(取自此answer)找到:
#set($layoutLocalService = $serviceLocator.findService("com.liferay.portal.service.LayoutLocalService"))
现在您可以使用速度变量$layoutLocalService
来调用服务方法来获取布局。
然后,您可以使用主题中PortalUtil
个文件可用的变量$portalUtil
来调用*.vm
类的方法。
您可以查看以下文件以获取更多详细信息(如果您有兴趣):
docroot/html/themes/_unstyled/templates/init.vm
,其中包含主题中可用的所有力度变量。感兴趣的变量可能是$theme
,$theme_display
,$layout
,$navItems
。docroot/html/themes/_unstyled/templates/portlet.vm
,此文件是显示各个portlet的模板。docroot/html/themes/_unstyled/templates/navigation.vm
,包含用于显示带有页面链接的导航菜单的代码。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:
如果您还有其他问题,请与我们联系!