如何在 WebContent 模板上获取作者头像?
How to fetch the author profile picture on WebContent template?
谁能告诉我如何在网页内容模板中获取网页内容作者图像?当我尝试使用用户对象时,它返回当前登录的用户而不是实际用户。
我可以使用键
获取作者姓名和 ID
<#assign authorId = .vars[[=45=]].data>
<#assign authorName = .vars[[=46=]].data>
我已使用以下代码获取内容作者图像,但它 returns 当前登录用户。
<#assign author-img = user.getPortraitURL(themeDisplay)>
但是它返回的是当前登录的用户图像
我也尝试过使用 taglib
<@liferay_ui["user-display"] userId="userId" />,但失败并显示消息 "Failed to set JSP tag parameter " author”(声明类型:布尔值,实际值的类型:字符串)。请参阅原因异常以了解更具体的原因...
谢谢
我无法从头脑中告诉你解决方案,但事情是这样的:
<#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)>
这是有效的。
<#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}"/>
谁能告诉我如何在网页内容模板中获取网页内容作者图像?当我尝试使用用户对象时,它返回当前登录的用户而不是实际用户。
我可以使用键
获取作者姓名和 ID<#assign authorId = .vars[[=45=]].data>
<#assign authorName = .vars[[=46=]].data>
我已使用以下代码获取内容作者图像,但它 returns 当前登录用户。
<#assign author-img = user.getPortraitURL(themeDisplay)>
但是它返回的是当前登录的用户图像
我也尝试过使用 taglib
<@liferay_ui["user-display"] userId="userId" />,但失败并显示消息 "Failed to set JSP tag parameter " author”(声明类型:布尔值,实际值的类型:字符串)。请参阅原因异常以了解更具体的原因...
谢谢
我无法从头脑中告诉你解决方案,但事情是这样的:
<#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)>
这是有效的。
<#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}"/>