0

I have a fluid_styled_content element and they have IRRE elements which are also fluid_styled_content elements. How can I get the IRRE elements?

At the moment I am trying to get them with a custom DataProcessor but I don't know how to actually get the elements. It looks like, that the parent element stores the amount of children and the children are storing the uid of the parent in the foreign_field. Any ideas?

I though about the ContentObjectRenderer which I do have in the DataProcessor, but as I sad, I don't know how to actually get the elements. I tried $cObj->cObjGet but it didn't worked.

4

2 回答 2

2

我努力让它工作,我用我的自定义 DataProcessor 做了。在此处了解有关自定义 DataProcessors 的更多信息:https ://docs.typo3.org/typo3cms/extensions/fluid_styled_content/7.6/AddingYourOwnContentElements/Index.html#data-processor

这是处理器本身:

/**
 * @param  ContentObjectRenderer $cObj                       The data of the content element or page
 * @param  array                 $contentObjectConfiguration The configuration of Content Object
 * @param  array                 $processorConfiguration     The configuration of this processor
 * @param  array                 $processedData              Key/value store of processed data (e.g. to be passed to a Fluid View)
 * @return array                                             the processed data as key/value store
 */
public function process(ContentObjectRenderer $cObj, array $contentObjectConfiguration, array $processorConfiguration, array $processedData)
{
    $table = $processorConfiguration['references.']['table'];
    $fieldName = $processorConfiguration['references.']['fieldName'];

    $irreElements = $cObj->getRecords(
        $table,
        [
            'where' => $fieldName.'='.$cObj->data['uid'],
            'orderBy' => 'sorting'
        ]
    );

    $targetVariableName = $cObj->stdWrapValue('as', $processorConfiguration);
    $processedData[$targetVariableName] = $irreElements;

    return $processedData;
}

这是 TypoScript 配置

tt_content {
    services < lib.fluidContent
    services {
        templateName = Services.html
        dataProcessing {
            23 = Vendor\ExtensionName\DataProcessing\WhateverYouWantToCallItProcessor
            23 {
                references.fieldName = service
                references.table = tt_content
                as = serviceElements
            }
        }
    }
}
于 2016-11-24T13:35:45.250 回答
0

看看这里:

https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/frontend/Classes/DataProcessing/DatabaseQueryProcessor.php

tt_content {
    accordion =< lib.default
    accordion {
        templateName = ABC
        dataProcessing {
            20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
            20 {
                table = tx_irre_element
                pidInList.field = pid
                where {
                    data = field:uid
                    intval = 1
                    wrap = tt_content=|
                }

                orderBy = sorting
                as = items
            }
        }
    }
}
于 2016-11-24T12:51:28.207 回答