Как получить фотографию профиля автора в шаблоне WebContent? - PullRequest
1 голос
/ 09 апреля 2019

Может кто-нибудь сказать мне, как получить изображение автора веб-контента в шаблоне веб-контента? Когда я попытался использовать объект user, он возвращает текущего зарегистрированного пользователя, а не фактического.

Я могу получить имя и идентификатор автора с помощью ключа

<# 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" author "(объявленный тип: логический, фактический тип значения: String). См. исключение причины для более конкретной причины ...

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Это работает.

<#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}"/>
0 голосов
/ 11 апреля 2019

Я не могу рассказать вам о решении из головы, но вот что происходит:

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

использует предопределенную переменную user, например, зарегистрированный в данный момент пользователь.Именно то, что вы получаете, но не то, что вы хотите.themeDisplay используется для предоставления текущего веб-контекста (например, используемого имени хоста) для правильного создания URL-адреса, соответствующего текущей отображаемой странице.

Вместо использования reserved-article-author-name, вы хотите использовать reserved-article-author-id чтобы получить пользовательский объект с этим идентификатором.Вам понадобится UserLocalService для этого (простите мою память - я редко использую freemarker и, возможно, не смогу разобраться, как на самом деле это сделать, но вы можете искать эту информацию. Возможно, вам нужен доступ к serviceLocator - что делает хорошее дополнительноепоисковый запрос).

Имея этот пользовательский объект (назовите его не так, как user, например, author), вы можете получить URL-адрес портретного изображения автора с той же стратегией, что и выше:

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