Сортировать по вложенному значению поля в FTL liferay
Моя структура, созданная в liferay, выглядит так:
{
"availableLanguageIds": [
"en_US"
],
"defaultLanguageId": "en_US",
"fields": [
{
"label": {
"en_US": "Image"
},
"predefinedValue": {
"en_US": ""
},
"style": {
"en_US": ""
},
"tip": {
"en_US": "Upload the image to be displayed in the Small Banner"
},
"dataType": "image",
"fieldNamespace": "ddm",
"indexType": "keyword",
"localizable": true,
"name": "smallImage",
"readOnly": false,
"repeatable": true,
"required": true,
"showLabel": true,
"type": "ddm-image",
"nestedFields": [
{
"label": {
"en_US": "Priority of Image"
},
"predefinedValue": {
"en_US": "0"
},
"style": {
"en_US": ""
},
"tip": {
"en_US": "Priority of the uploaded Image. Lower the number, higher the priority."
},
"dataType": "integer",
"fieldNamespace": "ddm",
"indexType": "keyword",
"localizable": true,
"name": "imagePriority",
"readOnly": false,
"repeatable": false,
"required": true,
"showLabel": true,
"type": "ddm-integer"
}
]
}
]
}
Теперь в шаблоне я хочу отсортировать его, используя поле приоритета изображения. Мой шаблон, как показано ниже:
<div id="example2" class="slider-pro">
<div class="sp-slides">
<#if smallImage.getSiblings()?has_content>
<#list smallImage.getSiblings()?sort_by(["properties","imagePriority"]) as cur_smallImage>
<#if cur_smallImage.getData()?? && cur_smallImage.getData() != "">
<div class="sp-slide">
<img class="sp-image" alt="${cur_smallImage.getAttribute("alt")}" src="${cur_smallImage.getData()}" data-src="${cur_smallImage.getData()}" data-retina="${cur_smallImage.getData()}" />
</div>
</#if>
</#list>
</#if>
</div>
</div>
Я пробовал сортировку как ? Sort_by("cur_smallImage.imagePriority") также по ? Sort_by("imagePriority"), но это не сработало. Я хочу отображать изображения в последовательности с указанным приоритетом.
Пожалуйста помоги.
0 ответов
Если подпеременная, которую вы хотите использовать для сортировки, находится на более глубоком уровне (то есть, если это подпеременная подпеременной и т. Д.), То вы можете использовать последовательность в качестве параметра, который определяет имена под-переменных. которые ведут к желаемой подварианте. Например:
<#assign members = [
{"name": {"first": "Joe", "last": "Smith"}, "age": 40},
{"name": {"first": "Fred", "last": "Crooger"}, "age": 35},
{"name": {"first": "Amanda", "last": "Fox"}, "age": 25}]>
Отсортировано по названию. Последнее:
<#list members?sort_by(['name', 'last']) as m>
- ${m.name.last}, ${m.name.first}: ${m.age} years old
</#list>
взято из: https://freemarker.apache.org/docs/ref_builtins_sequence.html