在Portlet Liferay 6.1中呈现Liferay页面URL
我是liferay的新手,几乎可以肯定这非常简单:使用velocity标记,我希望能够生成指向liferay网站中页面的链接,并将它们嵌入到不同页面上的Portlet中 我对怎么做有一个模糊的想法,所以我四处搜索,想把它贴在什么地方,但我找不到任何东西。顺便说一句,我想把我想到的任何代码放在portlet的view.jsp中。我会在这里使用velocity标记,但我不认为(不确定)jsp中是否允许使用velocity标记在Portlet Liferay 6.1中呈现Liferay页面URL,liferay,liferay-6,liferay-velocity,liferay-theme,Liferay,Liferay 6,Liferay Velocity,Liferay Theme,我是liferay的新手,几乎可以肯定这非常简单:使用velocity标记,我希望能够生成指向liferay网站中页面的链接,并将它们嵌入到不同页面上的Portlet中 我对怎么做有一个模糊的想法,所以我四处搜索,想把它贴在什么地方,但我找不到任何东西。顺便说一句,我想把我想到的任何代码放在portlet的view.jsp中。我会在这里使用velocity标记,但我不认为(不确定)jsp中是否允许使用velocity标记 如果您需要更多信息来回复,请告诉我。有关Velocity: 好的,要在ve
如果您需要更多信息来回复,请告诉我。有关Velocity: 好的,要在velocity中为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>
#语言(“导航”)
#foreach($nav_项目中的nav_项目)
#如果($nav_item.isSelected())
-
#否则
-
#结束
#如果($nav_item.hasChildren())
#foreach($nav_item.getChildren()中的$nav_child)
#如果($nav_child.isSelected())
-
#否则
-
#结束
#结束
#结束
#结束
因此Velocity正在查看一个名为$nav_items的集合,然后对每个项调用getURL()方法来生成链接
对于JSP:
view.JSP
)中使用Velocity标记?我不认为这样做有什么好处,除了你在速度方面真的很棒的论点
虽然这里有一个可以帮助您在JSP中嵌入velocity的方法
注意:在我看来,将velocity嵌入到portlet中的JSP中不是一个好的实践
JSP中的:- 您将需要一个
对象,您可以借助中的静态方法获得该对象布局
- 获得布局后,可以使用静态方法,如
或getLayoutFriendlyURL
等来构建URLgetLayoutFullURL
*.VM
文件):您可以按照JSP中提到的所有相同步骤进行操作。您需要做的事情是:
的实例,可以使用以下代码(取自此代码)找到: 现在,您可以使用velocity变量LayoutLocalService
调用服务方法来获取布局$layoutLocalService
- 然后,您可以使用可用于主题中的
文件的变量*.vm
调用$PortalUtil
类的方法PortalUtil
$theme
,$theme\u display
,$layout
,$navItems
navigation.vm
&portlet.vm
先生们,非常感谢你们的回复。我只想到在jsp中使用vm,因为这是我目前对Liferay开发最了解的,但即使如此,我还是刚刚开始。俗话说,当你唯一的工具是锤子时,一切看起来都像钉子。因此,由于我的目标是在portlet中呈现URL,因此我将尝试从您的两个响应中将其组合在一起。如果你们中的任何一位能告诉我如何构造这样一个东西的示例代码,那就太好了,给我一个非常需要的正确方向的提示编号列表中的链接都是404。谢谢@mmcglyn,已经更新了链接。我给了主的链接哪些变化,现在他们都指向6.2分支。
#set($layoutLocalService = $serviceLocator.findService("com.liferay.portal.service.LayoutLocalService"))