繁体   English   中英

TYPO3 TypoScript 如何将当前元素标识符传递给 userFunc

[英]TYPO3 TypoScript How to pass current element identifier to userFunc

我们将事件索引到我们的 Solr 内核中。 现在我们需要在创建事件时无法生成的其他数据,因此我们需要在索引之前处理事件以填充新字段。

要在 userFunc 中进行必要的处理,我们至少需要一个来自当前被索引元素的标识符。

所以这里是配置,精简:

plugin.tx_solr.index.queue {
    events = 1
    events {
        table = tx_events_domain_model_event

        fields { 

            # this is the new field
            eventTopicNames_textEdgeNgramM = SOLR_MULTIVALUE
            eventTopicNames_textEdgeNgramM {
                stdWrap.cObject = USER
                stdWrap.cObject.userFunc = XXX\xxxevents\Helper\EventTopicNamesHelper->getValues
                stdWrap.cObject.userFunc {
                    internalTopics = field:uid
                    uid.data = current:identifier
                }
                separator=,
            }

            # ... alot of other fields

        }

所以在这里我试图调用我的 userFunc 来处理给定事件的主题名称 - 但我无法找出如何将当前元素的实际标识符传递给我的 userFunc。 我通常可以传递数据,例如一些硬编码的字符串,如internalTopics = "foobar"可以正常工作。

我试过了

  • 当前:uid
  • 当前:标识符
  • 字段:uid

但实际上没有任何东西被解析为我们需要的值 - 而 output 只是相应的字符串值,如“current:uid”等等......

这里是小帮手class:

class EventTopicNamesHelper
{
    public function getValues($content = '', $conf = array()) {
      // $conf['userFunc.']['internalTopics'] 

      // ... returning values suitable for SOLR_MULTIVALUE
    }
}

非常感谢帮助

userFunc的属性只是传递给 function,但在传递之前没有应用stdWrap功能。 因此,您的 userFunc 正在获取原始 TS array/values ,而您的 function 必须解释 TypoScript 本身。

为此,您需要一个ContentObjectRenderer和您的属性的名称:

$internalTopics = $this->cObj->cObjGetSingle(
    $config['internalTopics'], 
    $config['internalTopics.']
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM