如何在自由标记Liferay 7主题中嵌入WebContent?

时间:2016-07-06 15:13:38

标签: liferay

我已经找到了如何使用journalContentUtil.getContent方法在Liferay 6.2主题中嵌入WebContent。我的问题是如何在Liferay 7中做同样的事情?

4 个答案:

答案 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
/>