有人可以告诉我如何在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标记参数“作者”(声明类型:布尔值,实际值的类型:字符串)。有关更具体的原因,请参见原因异常...
谢谢
答案 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}"/>