标签: liferay-velocity

在力度模板中创建对象

我正在为我的liferay主题编写速度模板,我想知道是否可以在速度模板中创建一个新对象.

原因是在liferay中没有在上下文中注册的contextTool,我真的希望能够在给定时间检查模板中存在的变量.有一个很酷的宏,但不幸的是它使用了contexttool.

我想做点什么:

#set($contextTool = new ContextTool())
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是随生命线主题提供的java代码,该主题能够在模板上下文中添加内容.但我不知道这是怎么回事...... ;-)

velocity liferay liferay-velocity

9
推荐指数
1
解决办法
8591
查看次数

如何从 Liferay 速度模板获取服务器名称和服务器端口?

在jsp页面我们可以通过request.getServerName()和request.getServerPort()获取Server Name和Server Port。

由于我们无法从 Liferay 速度模板中获取 HttpServletRequest,还有其他方法可以同时获取 Server Name 和 Server Port 吗?请用一个小代码片段回答..

liferay-6 liferay-velocity

4
推荐指数
1
解决办法
8156
查看次数

如何使用Velocity模板将现有portlet添加到Web Content Display

我想创建一个使用新页面Web Content DisplayVelocity TemplatesStructures.

在我的页面上,我希望有多个选项卡,并且每个选项卡上需要以编程方式从现有portlet的模板添加.

我知道如何将现有的portlet添加到我的主题,($theme.runtime("portlet_id"))但我找不到将portlet添加到速度模板的方法,因为$theme对象在Web内容显示模板中不可用.

你能否告诉我是否可以在模板中添加一个portlet?
如果有,怎么样?

谢谢.

liferay liferay-6 liferay-theme liferay-velocity

3
推荐指数
1
解决办法
3345
查看次数

在liferay主题(速度模板)中使用自定义服务或liferay服务?

如何使用自定义的服务方法,Liferay的主题,在速度文件一样init_custom.vm,portal_normal.vm等等.

我看到liferay在文件中提供了许多辅助实用程序类的变量,例如$portalUtilfor PortalUtil,$getterUtilfor GetterUtil等等init.vm.

那么有可能获得我的自定义服务的实例,com.my.custom.service.MyCustomLocalServiceImpl如liferay 的实例或服务UserLocalServiceImpl吗?

这是一些伪代码,用于了解我需要的内容:

// this code calls method from MyCustomLocalServiceImpl class to fetch items
#set ($listOfItems = $myCustomLocalServiceUtil.getAllItems())

// this code calls method from UserLocalServiceImpl class to fetch users
#set ($listOfUsers = $userLocalServiceUtil.getUsers(0, 99))
Run Code Online (Sandbox Code Playgroud)

环境:Liferay 6.1 CE GA1

service liferay liferay-theme liferay-velocity

3
推荐指数
1
解决办法
4019
查看次数

Velocity(VM)模板请求参数:获取GET变量

如何访问VM模板中URI中传递的GET变量?

这仅在加载小部件URL时有效:

$request.get("parameters").get("fav").get(0)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个可以使用友好URL的简洁解决方案.

这是我的测试模板:

<br><br><br>
#set($url = $request.attributes.CURRENT_URL)

<h2>url: $url</h2>

#set($favs = $url.split("fav="))
favs: $favs<br>
favs.size(): $favs.size() <br>
#if($favs.size() > 1)
  #set($fav1 = $favs.get(1).split("&").get(0))
  fav1: $fav1<br>
#else
  No fav!
#end
#if($favs.size() > 2)
  #set($fav2 = $favs.get(2).split("&").get(0))
  fav2: $fav2<br>
#end

#set($favs2 = $httpUtil.getParameterMap($url, "fav"))
favs2: $favs2

<hr>
<h3>Fav?</h3>
<form method="get">
  <input type="checkbox" name="fav" value="dave"/> Dave<br>
  <input type="checkbox" name="fav" value="nate"/> Nate<br>
  <input type="checkbox" name="fav" value="taylor"/> Taylor<br>
  <input type="submit" value="Send"/>
</form>
<hr>
<div style="font-size: 9px;">request: $request</div>
Run Code Online (Sandbox Code Playgroud)

velocity vtl liferay liferay-velocity

1
推荐指数
1
解决办法
2万
查看次数

新结构字段不为空

我正在通过为结构添加新字段来更改我的liferay速度模板.例如'heading1'然后将这个新字段添加到模板:

<h1>Heading is: $heading1.data</h1>
Run Code Online (Sandbox Code Playgroud)

但如果结构领域尚未填补,结果是:

标题是:$ heading1.data

所以我想我可以解决这个问题:

#if($heading1.data!="")<h1>Heading is: $heading1.data</h1>#end
Run Code Online (Sandbox Code Playgroud)

但结果仍然是:

标题是:$ heading1.data

如果我打开网页内容并发布它然后结果是正确的,它没有显示任何内容,但我不想找到每个类似的网页内容并开始手动发布.

那么有没有办法检查标题是否未填充?

谢谢.

velocity liferay-6 liferay-velocity

1
推荐指数
1
解决办法
1423
查看次数

Liferay 6.1 在速度(vm)文件中获取主题显示

我正在尝试获取用户的个人资料图片并将其显示在我的 liferay 主题中。到目前为止,我已经能够User通过速度$user变量访问对象。用户模型有一个被调用的方法getPortraitUrl(),该方法将其ThemeDisplay作为参数。我在 liferay 文档中读到,在themeDisplay使用主题时,该对象在运行时可用,但我似乎无法做到这一点。

我尝试了几种不同的方法来获取themeDisplay对象,但它们似乎都不起作用:

  • $theme
  • $themeDisplay
  • $request.get("theme-display")
  • $theme_display

... 以及其他几种不返回任何内容的方法。

$user.getPortraitUrl($themeDisplay) 是我正在努力实现的目标。

任何帮助将不胜感激

velocity liferay liferay-6 liferay-theme liferay-velocity

1
推荐指数
1
解决办法
4592
查看次数

无法重定向到Liferay中的其他页面

我正在尝试使用Java代码重定向到其他页面,并且不为什么不将其重定向。下面是下面的代码

ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);


PortletConfig portletConfig = (PortletConfig) actionRequest.getAttribute("javax.portlet.config");

String portletName = portletConfig.getPortletName();

PortletURL successPageURL = PortletURLFactoryUtil.create(
                actionRequest, portletName+ "_WAR_" + portletName + "portlet", 
                themeDisplay.getPlid(), PortletRequest.RENDER_PHASE);

successPageURL.setParameter("jspPage", LibraryConstants.PAGE_SUCCESS);
actionResponse.sendRedirect(successPageURL.toString());
Run Code Online (Sandbox Code Playgroud)

它没有重定向到页面。请帮助检查代码是否正确。

谢谢。

liferay liferay-6 liferay-theme liferay-velocity liferay-ide

0
推荐指数
1
解决办法
7230
查看次数