2

目前我正在为 Asset Publisher 开发一个 ADT,它显示每个 Web 内容的简短版本。在 Web 内容结构中有一个名为“内容”的字段,它只是一个简单的 HTML 字段。

<dynamic-element dataType="html" fieldNamespace="ddm" indexType="text" localizable="true" name="content" readOnly="true" repeatable="false" required="true" showLabel="true" type="ddm-text-html" width="25">
    <meta-data locale="de_DE">
        <entry name="label">
            <![CDATA[Content]]>
        </entry>
        <entry name="predefinedValue">
            <![CDATA[]]>
        </entry>
        <entry name="tip">
            <![CDATA[]]>
        </entry>
    </meta-data>
</dynamic-element>

创建 Web 内容时,创建者可以将翻译设置为英语(美国)。

有趣的是,如果他不添加翻译,ADT 会显示德语版的字段“内容”(这是正确的方式)。添加翻译时,ADT 显示的是英文(但它应该显示德文,因为德语被设置为默认语言)。

ADT 的相关部分是这样的:

<#assign aArticleXML = saxReaderUtil.read(aArticle.getContent()) >
<#assign content = aArticleXML.valueOf("//dynamic-element[@name='content']/dynamic-content/text()") />
...
<p>${content}</p>

有谁知道这个问题?

我感谢您的帮助。

4

1 回答 1

1

一段时间后,我自己想通了。

您可以在 ADT 中的文章上调用两个函数。

  • getContent()如果您的 Web 内容没有可用的翻译,则显示您的默认语言。如果您的 Web 内容有翻译,则此功能会以翻译形式获取您的字段(在我的情况下:英语)
  • getContentByLocale(string locale)通过 Liferay 中设置的语言环境获取字段。这种方法是我正在寻找的解决方案

感谢所有试图解决这个问题的人。

于 2016-02-16T06:55:58.113 回答