solr - 怎么可能只获得 EXT:solr 中 EXT:news 记录的第一个相关 FAL 图像?
问题描述
问题
在将 TYPO3 网站从 TYPO3 4.5 更新到 TYPO3 8.7 后,有必要重新集成 EXT:solr 的前端(因为更改为 Fluid 模板)。
我必须显示将tx_news_domain_model.fal_media
showInPreview 设置为 1 或 2 的新闻记录的第一个 FAL 相关图像。
我的实际解决方案plugin.tx_solr.index.queue.news.fields.
...
确实检索每个图像并限制为一个。但这还不够,因为我需要where=showinpreview=1
image_stringS = TEXT
image_stringS {
value = /typo3conf/ext/theme/Resources/Public/Images/solrImageDummy.gif
override.cObject = FILES
override.cObject {
references {
table = tx_news_domain_model_news
uid.data = field:uid
fieldName = fal_media
}
begin = 0
maxItems = 1
renderObj = IMG_RESOURCE
renderObj {
file {
import.dataWrap = {file:current:storage}:{file:current:identifier}
width = 50c
height = 50c
}
stdWrap.wrap = /|
}
}
}
如何检查相关图像记录是否具有某些特定属性?
解决方案
如果您不想更改文件的顺序,您可以sorting
在一开始就获取您感兴趣的文件。
否则,您需要省略maxItems
甚至限制流体中的文件。然后你可以通过一些简单
的过滤哪些文件应该在给流体的数组中。renderObj
.stdWrap.if
因为你没有流体(你想把它给 solr),你可能会使用一个技巧:如果你有一个数组,你可以将所有相关信息呈现到一个字符串中,但是你需要一个唯一的分隔符(可能是stdWrap.wrap = /|##!!##
)然后你拆分之后只使用第一个条目。
override.cObject {
:
stdWrap.split {
token = ##!!##
## we need only the first, but does indexing start with 0 or 1?
## and will 0 be recognized?
returnKey = 0
}
}
也许你需要这个:
override.cObject {
stdWrap.split {
:
cObjNum {
# render first entry
1 = TEXT
1.current = 1
# ignore all further entries
}
}
}