Ho trovato come incorporare WebContent nel tema Liferay 6.2 utilizzando il metodo journalContentUtil.getContent
. La mia domanda è come fare la stessa cosa in Liferay 7?Come incorporare WebContent nel tema Liferay 7 di freemarker?
risposta
La classe più vicina a journalContentUtil
è JournalContentImpl
e ha quasi gli stessi metodi relativi a getContent
. È possibile vedere il codice qui JournalContentImpl
Per l'incasso WebContent in Liferay 7, prima di tutto, è necessario attivare ServiceLocator nel Pannello di controllo -> Configurazione -> Impostazioni di sistema -> Fondazione -> FreeMarker motore -> Variabili limitati. C'è possibile rimuovere ServiceLocator
Ora si può utilizzare ad esempio nella domanda di visualizzazione Template (Freemarker):
<#assign liferay_ui = taglibLiferayHash["/META-INF/liferay-ui.tld"] />
<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
e quindi utilizzare il journalArticleLocalService per recuperare il WebContent facendo
getArticleContent(long groupId, String articleId, double version, String viewMode, String ddmTemplateKey, String languageId, ThemeDisplay themeDisplay)
Tecnicamente, penso che questa risposta sia più accurata, tuttavia mi piace la risposta di @ abhishek-suthar poiché il contenuto verrà aggiunto con i controlli del portlet ed è più semplice per l'amministratore modificare. Se vuoi solo aggiungere l'html, questo metodo funziona al meglio. Solo per completare l'ultima riga di codice, questo è un esempio di come chiamare il metodo '' '<#assign article = journalArticleLocalService.fetchArticle (group_id," FOOTER ")>' '' then '' '$ {journalArticleLocalService.getArticleContent (articolo, article.getDDMTemplateKey(), "VIEW", locale, themeDisplay)} '' ' – gus3001
I hanno trovato il modo di correggere il contenuto web tramite un modello ftl personalizzato in Liferay 7/DXP.
Di seguito è riportato il codice di esempio,
<#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()}
Assicurarsi che l'articleId che si sta fornendo nelle preferenze è sotto il gruppo/sito groupId.Means dovrebbe contiene il webcontent.
Questo è fantastico, lavora per me! La mia domanda è, come hai capito come farlo? Non ho trovato alcuna documentazione su come usare @liferay_portlet ["runtime"] – gus3001
'JournalContentImpl' non è un servizio accessibile nel contesto di freemarker/velocità –
Hai provato con la sua classe di servizio' JournalContent', giusto ?! – KLajdPaja