2016-07-06 2 views

ответ

1

Ближайший класс к journalContentUtil is JournalContentImpl и имеет почти одинаковые методы, связанные с getContent. Вы можете увидеть здесь код JournalContentImpl

+0

'JournalContentImpl' в не доступной службе в контексте freemarker/velocity –

+0

Вы пробовали с классом обслуживания' JournalContent', правильно ?! – KLajdPaja

1

Для встраивания WebContent в Liferay 7, прежде всего, вам нужно включить serviceLocator в панели управления -> Конфигурация -> Настройки системы -> Основание -> Двигатель FreeMarker -> Ограниченные переменные. Там вы можете удалить ServiceLocator

Теперь вы можете использовать его, например, в Application Display Template (Freemarker):

<#assign liferay_ui = taglibLiferayHash["/META-INF/liferay-ui.tld"] /> 

<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 

, а затем использовать journalArticleLocalService для получения WebContent делает

getArticleContent(long groupId, String articleId, double version, String viewMode, String ddmTemplateKey, String languageId, ThemeDisplay themeDisplay) 
+0

Технически, я думаю, что этот ответ более точен, но мне нравится ответ от @ abhishek-suthar, так как контент будет добавлен с помощью элементов управления портлетом, и администратор может изменить его. Если вы просто хотите добавить html, этот метод работает лучше всего. Чтобы дополнить последнюю строку кода, это пример того, как вызывать метод '' '<#assign article = journalArticleLocalService.fetchArticle (group_id," FOOTER ")>' '' then '' '$ {journalArticleLocalService.getArticleContent (статья, article.getDDMTemplateKey(), "VIEW", locale, themeDisplay)} '' ' – gus3001

4

I нашли способ исправить веб-контент с помощью пользовательского шаблона ftl в Liferay 7/DXP.

Ниже приведен пример кода,

<#assign VOID = freeMarkerPortletPreferences.setValue("portletSetupPortletDecoratorId", "barebone") /> 
<#assign theme_groupID = htmlUtil.escape(theme_display.getCompanyGroupId()?string) /> 
<#assign VOID = freeMarkerPortletPreferences.setValue("groupId", '${group_id}') /> 
<#assign VOID = freeMarkerPortletPreferences.setValue("articleId", "yourarticleid") /> 



     <@liferay_portlet["runtime"] 
     defaultPreferences="${freeMarkerPortletPreferences}" 
     portletProviderAction=portletProviderAction.VIEW 
     instanceId="footercontent" 
     portletName="com_liferay_journal_content_web_portlet_JournalContentPortlet" /> 
     ${freeMarkerPortletPreferences.reset()} 

Убедитесь ArticleID, которые вы предоставляете в настройках находится в группе/сайт groupId.Means должен содержит WebContent.

+0

Это замечательно, работайте со мной! Мой вопрос: как вы выяснили, как это сделать? Я не мог найти никакой документации о том, как использовать @liferay_portlet ["runtime"] – gus3001

Смежные вопросы