如何仅获取EXT:solr中EXT:news记录的第一个相关FAL图像?

时间:2018-08-27 18:03:33

标签: solr typo3 typo3-7.6.x typo3-8.x typo3-extensions

问题

将TYPO3网站从TYPO3 4.5更新到TYPO3 8.7后,有必要重新集成EXT:solr的前端(因为更改为Fluid模板)。

我必须显示将showInPreview设置为1或2的新闻记录的第一张与FAL相关的图像tx_news_domain_model.fal_media

我对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 = /|
        }
    }
}

如何检查相关图像记录是否具有某些特定属性?

1 个答案:

答案 0 :(得分:0)

如果您不希望更改文件的顺序,则可以使用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
        }
    }
}