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

问题描述 投票:1回答:2

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

我可以使用密钥获取作者姓名和ID

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

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

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

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

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

我也尝试过taglib

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

谢谢

liferay liferay-7 liferay-7.1
2个回答
0
投票

我无法从头脑中告诉你解决方案,但这是发生了什么:

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

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

您想使用reserved-article-author-name来获取具有此id的用户对象,而不是使用reserved-article-author-id。你需要UserLocalService(原谅我的记忆 - 我很少使用freemarker,可能会搞砸如何实际做到这一点,但你可以搜索那些信息。你可能需要访问serviceLocator - 这是一个很好的补充搜索词)。

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

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

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}"/>
© www.soinside.com 2019 - 2024. All rights reserved.