2016-11-24 2 views
0

Ich habe ein fluid_styled_content-Element und sie haben IRRE-Elemente, die auch fluid_styled_content-Elemente sind. Wie kann ich die IRRE-Elemente erhalten?IRRE-Beziehungen von tt_content zu tt_content im flüssig gestylten Inhalt

Im Moment versuche ich, sie mit einem benutzerdefinierten DataProcessor zu bekommen, aber ich weiß nicht, wie man die Elemente tatsächlich bekommt. Es sieht so aus, dass das übergeordnete Element die Anzahl der untergeordneten Elemente speichert und die untergeordneten Elemente die uid des übergeordneten Elements im foreign_field speichern. Irgendwelche Ideen?

Ich über die ContentObjectRenderer, die ich im DataProcessor habe, aber wie ich traurig bin, weiß ich nicht, wie man die Elemente tatsächlich bekommt. Ich habe versucht $cObj->cObjGet, aber es hat nicht funktioniert.

Antwort

2

ich hart versuchte, es zu arbeiten und ich mit meiner benutzerdefinierten Datenprozessor tat zu erhalten. Weitere Informationen über benutzerdefinierte DataProcessors hier: https://docs.typo3.org/typo3cms/extensions/fluid_styled_content/7.6/AddingYourOwnContentElements/Index.html#data-processor

Dies ist der Prozessor selbst:

/** 
* @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; 
} 

und das ist der TypoScript Konfiguration

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 
      } 
     } 
    } 
} 
0

Werfen Sie einen Blick hier:

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 
      } 
     } 
    } 
} 
+0

Leider konnte ich nicht Ihren Vorschlag zum Laufen bringen, aber ich geschrieben Mein benutzerdefinierter DataProcessor, der perfekt für mich funktioniert. –

+0

Perhabs das ist ein besseres Beispiel: https://github.com/benjaminkott/bootstrap_package/blob/master/Configuration/TypoScript/ContentElement/BootstrapPackageAccordion.txt – bschauer

Verwandte Themen