【发布时间】:2017-12-31 10:29:14
【问题描述】:
我在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") 进行排序,但它没有工作。我想按指定的优先级顺序显示图像。
请帮忙。
【问题讨论】:
-
可以打印
cur_smallImage的图片优先级吗?如果不是,那么问题与?sort_by无关。 (顺便说一句,foo.barBar()可以写成foo.bar。这样更容易阅读模板。) -
优先级正在打印,但我想按指定的优先级对它们进行排序
-
它是如何打印的? (示例中没有。)如果我看到它是如何打印的,那么肯定更容易知道如何按它排序,或者为什么不能按它排序。
-
我上传了两张图片,一张图片的优先级保持为1,另一张为0。所以现在我想按照指定的优先级升序对图片进行排序。我将其打印为 ${cur_smallImage.imagePriority.data}
-
那么应该是
<#list smallImage.siblings?sort_by(["imagePriority", "data"]) as cur_smallImage>。
标签: freemarker liferay-7 webcontent