结构内的 Liferay DXP 网页内容字段

Posted

技术标签:

【中文标题】结构内的 Liferay DXP 网页内容字段【英文标题】:Liferay DXP web content field inside structure 【发布时间】:2018-02-13 17:45:39 【问题描述】:

您好,我创建了一个简单的结构,它只有 1 个可重复的 Web 内容字段。在我的模板中,我有以下代码:

<#if WebContent75zf.getSiblings()?has_content>
    <#list WebContent75zf.getSiblings() as cur_WebContent75zf>
        <!-- Web Content Start -->
        $cur_WebContent75zf.getData()
        <!-- Web Content End -->
    </#list>
</#if>

期望的结果是要么显示呈现的每个 Web 内容,要么至少获取它们的数据。 我得到的是以下内容,我想知道我是否做错了什么......

<!-- Web Content Start --> 

"className":"com.liferay.journal.model.JournalArticle","classPK":"40952" 

<!-- Web Content End --> 
<!-- Web Content Start --> 

"className":"com.liferay.journal.model.JournalArticle","classPK":"40971" 

<!-- Web Content End -->
<!-- Web Content Start --> 

"className":"com.liferay.journal.model.JournalArticle","classPK":"40990" 

<!-- Web Content End --> 

【问题讨论】:

【参考方案1】:

这适用于 Liferay 7.0。确保在 Liferay 设置中禁用受限变量

<#-- Liferay 7.0 -->
<#-- Make sure restricted variables are disabled in Liferay settings -->

<#assign 
    serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
    themeDisplay = serviceContext.getThemeDisplay()
    group_id = themeDisplay.getScopeGroupId()                    
    JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")    
>

<#if WebContent75zf.getSiblings()?has_content>
        <#list WebContent75zf.getSiblings() as cur_webContent>
                <#assign 
                    cur_webContent_map = cur_webContent.getData()?eval
                    cur_webContent_classPK = cur_webContent_map.classPK
                    article = JournalArticleLocalService.getLatestArticle(cur_webContent_classPK?number)
                    article_id = article.articleId
                    article_content = JournalArticleLocalService.getArticleContent(group_id, article_id, null, locale, themeDisplay)
                >

                $article_content

        </#list>
</#if>

【讨论】:

【参考方案2】:

在使用之前定义 journalArticleLocalService:

【讨论】:

【参考方案3】:

这个:"className":"com.liferay.journal.model.JournalArticle","classPK":"40971" 是您需要通过 JournalArticleLocalService 检索选定的 Web 内容,您只需像这样获取 classPK:

<#if WebContent75zf.getSiblings()?has_content>
    <#list WebContent75zf.getSiblings() as cur_webContent>
        <#assign cur_webContent_map = cur_webContent.getData()?eval>
        <#assign cur_webContent_classPK = cur_webContent_map.classPK>

        <#assign article = JournalArticleLocalService.getLatestArticle(cur_webContent_classPK?number)>

    </#list>
</#if>

【讨论】:

这在 DXP 中失败 Failed at: #assign article = JournalArticleLocal

以上是关于结构内的 Liferay DXP 网页内容字段的主要内容,如果未能解决你的问题,请参考以下文章

Liferay 6 - 显示网页内容页面

无法在 Liferay 7.2 中呈现自定义表单字段

Liferay 网页内容

Liferay 7:Liferay DXP解决方案

Liferay 7:Liferay DXP全套教程内附源码

如何在 Liferay DXP 中添加语言图标