Получение значения поля структуры в скрипте шаблона отображения

Я пытаюсь настроить отображение для моих записей издателя активов. Я создал структуру с полем "изображение" (с именем "main_image"), а затем я создал шаблон отображения для получения записей:

<#if entries?has_content>
    <#list entries as curEntry>
            <div>${curEntry.getTitle(locale)}</div>
        </#if>
    </#list>
</#if>

Проблема в том, что я не знаю, как получить значение поля изображения ("main_image" объявлено в структуре).

Я попробовал это безуспешно:

<img src = "${curEntry.main_image()}"</img>

С Уважением,

Отметка.

3 ответа

Старый, как черт, вопрос, но Google все еще показывал это мне, поэтому я поделюсь своим исследованием; mashup того, как я получаю поля структуры в ADT это:

<#if entries?has_content>
    <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
    <#list entries as entry>
        <!-- get field values for entry -->
        <#assign fields = entry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValues()/>

        <!-- print simple text field -->
        <div>${fields[1].getValue().getString(locale)}</div>

        <!-- link to page structure field -->
        <#assign linkMap = fields[2].getValue().getString(locale)?eval />
        <#assign pageURL = layoutLocalService.getLayout(linkMap.groupId?number, linkMap.privateLayout, linkMap.layoutId?number).getFriendlyURL() />
        <a href="${pageURL}" class="hidden"><span class="link"></span></a>

        <!-- document structure field -->
        <#assign docValJSON = fields[6].getValue().getString(locale) /> 
        <#if docValJSON?length gt 0 >
            <#assign docVal = docValJSON?eval />
            <a href="/documents/${docVal.groupId}/0/${docVal.title}">download</a>
        </#if>
    </#list>
</#if>

Обратите внимание, что ссылка всегда будет присутствовать, поэтому никаких дополнительных проверок, как с документом. Просто FYI "serviceLocator" нужно включить в настройках портала, иначе - ошибка.

Я думаю, что вы пытаетесь сделать, это получить доступ к структуре веб-контента из шаблона отображения издателя активов. Вы не можете сделать это так, как вы упомянули.

Вы должны будете проанализировать xml и затем сделать это.

Эта ссылка поможет вам - Доступ к структуре веб-контента из шаблона отображения приложения

Если я правильно помню, метод интерфейса называется getData(), Вы можете узнать сами, если вы временно вставили ${curEntry.getClass().getName()} в свой шаблон, а затем найдите интерфейс, который вы увидите в выводе.

Ответ на ваш комментарий: атрибуты обычно прозрачно разрешены, например, попробуйте ${curEntry.main_image.getClass().getName()}, ${curEntry.main_image.getData()}, (Это все из памяти - мне это не нужно было некоторое время. Попробуйте их варианты, если они все еще не работают, или ответьте назад.

Также обратите внимание, что у вас странный </#if> в вашем шаблоне. Я предполагаю, что очистка кода для этого вопроса - это пережиток, в противном случае вы также можете исправить это.

Другие вопросы по тегам