我是 Liferay 的新手,我几乎可以肯定这非常简单:使用速度标记,我希望能够生成指向 Liferay 网站内页面的链接,并将它们嵌入到不同页面上的 portlet 中。
我对如何完成它有一个模糊的想法,所以我四处寻找它会发布在某个地方,但我找不到任何东西。顺便说一句,我想把我想出的任何代码放在 portlet 的 view.jsp 中。我会在这里使用速度标记,但我不认为(不确定)在 jsp 内部是否允许这样做。
如果您需要更多信息来回复,请告诉我。
我是 Liferay 的新手,我几乎可以肯定这非常简单:使用速度标记,我希望能够生成指向 Liferay 网站内页面的链接,并将它们嵌入到不同页面上的 portlet 中。
我对如何完成它有一个模糊的想法,所以我四处寻找它会发布在某个地方,但我找不到任何东西。顺便说一句,我想把我想出的任何代码放在 portlet 的 view.jsp 中。我会在这里使用速度标记,但我不认为(不确定)在 jsp 内部是否允许这样做。
如果您需要更多信息来回复,请告诉我。
我会在这里使用速度标记,但我不认为(不确定)在 jsp 内部是否允许这样做。
为什么要在 JSP ( view.jsp) 中使用 Velocity 标记?除了你在速度方面真的很棒的论点之外,我看不出这样做有什么好处。
虽然这里有一个链接可以帮助您在 JSP 中嵌入速度。
注意:在我看来,在 Portlet 的 JSP 中嵌入速度并不是一个好习惯
在 JSP 中:
Layout对象,您可以借助LayoutLocalServiceUtil.com.liferay.portal.util.PortalUtillikegetLayoutFriendlyURL等静态方法getLayoutFullURL来构建 URL。在 VM中(这些将是*.vm主题中的文件):
您可以按照 JSP 中提到的所有相同步骤进行操作。你需要做的事情是:
的实例LayoutLocalService,可以通过使用以下代码(取自此答案)找到:
#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。对于速度:
好的,所以要以速度生成 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:
如果您还有其他问题,请告诉我!