如何在WebContent模板上获取作者个人资料图片?

时间:2019-04-09 16:56:09

标签: liferay liferay-7 liferay-7.1

有人可以告诉我如何在Web内容模板中获取Web内容作者图像吗?当我尝试使用user对象时,它返回的是当前登录的用户,而不是实际的用户。

我可以使用密钥

获取作者姓名和ID。

<#assign authorId = .vars ['reserved-article-author-id']。data>

<#assign authorName = .vars ['reserved-article-author-name']。data>

我已经使用下面的代码来获取内容作者图像,但是它返回当前登录的用户。

<#分配作者-img = user.getPortraitURL(themeDisplay)>

但是它返回当前登录的用户图像

我也尝试过使用taglib

<@ liferay_ui [“ user-display”] userId =“ userId” /> ,但失败,并显示消息“无法设置JSP标记参数“作者”(声明类型:布尔值,实际值的类型:字符串)。有关更具体的原因,请参见原因异常...

谢谢

2 个答案:

答案 0 :(得分:0)

我无法从头到尾告诉您有关解决方案的信息,但这就是发生的情况:

<#assign author-img = user.getPortraitURL(themeDisplay)>

使用预定义变量user,例如当前登录的用户。正是您所得到的,但不是您想要的。 themeDisplay用于提供当前的Web上下文(例如正在使用的主机名),以生成与当前显示的页面匹配的正确URL。

您不想使用reserved-article-author-name,而是想使用reserved-article-author-id来获得具有此ID的用户对象。为此,您将需要UserLocalService(请记住我的记忆-我很少使用freemarker,并且可能会弄乱实际操作的方式,但是您可以搜索该信息。您可能需要访问serviceLocator-这是一个很好的补充搜索字词)。

有了该用户对象(其名称与user不同,例如author),您可以使用与上述相同的策略来获取作者的头像URL:

<#assign author-img = author.getPortraitURL(themeDisplay)>

答案 1 :(得分:0)

这正在工作。

<#assign userLocalService = serviceLocator.findService('com.liferay.portal.kernel.service.UserLocalService') />
<#assign author_id = .vars['reserved-article-author-id'].data?number>
<#assign author_user = userLocalService.getUserById(author_id)/>
<#assign author_image = author_user.getPortraitURL(themeDisplay)/>
<img src="${author_image}"/>