有人能告诉我如何在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标记参数”作者“(声明类型:布尔值,实际值的类型:字符串)。请参阅原因异常为了更具体的原因......
谢谢
我无法从头脑中告诉你解决方案,但这是发生了什么:
<#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)>
这很有效。
<#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}"/>