我已经找到了如何使用journalContentUtil.getContent
方法在Liferay 6.2主题中嵌入WebContent。我的问题是如何在Liferay 7中做同样的事情?
答案 0 :(得分:5)
我找到了通过Liferay 7 / DXP中的自定义ftl模板修复Web内容的方法。
以下是示例代码
<#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()}
确保您在首选项中提供的文章ID位于groupId.Means组/网站下应包含webcontent。
答案 1 :(得分:3)
要在Liferay 7中嵌入WebContent,首先,您必须在控制面板中启用serviceLocator - &gt;配置 - &gt;系统设置 - &gt;基金会 - &gt; FreeMarker引擎 - &gt;受限制的变量。 在那里你可以删除serviceLocator
现在您可以在应用程序显示模板(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)
答案 2 :(得分:1)
与journalContentUtil
最接近的班级是JournalContentImpl
,它与getContent
的方法几乎相同。您可以在此处查看代码JournalContentImpl
答案 3 :(得分:0)
您可以使用the JSP taglibs in freemarker。
这意味着,要显示文章,您可以包含以下内容:
<@liferay_journal["journal-article"]
articleId=footer_article_id
groupId=page_group.groupId
/>