2016-07-21 25 views
3

nach einer langen Zeit von Google, kann ich die Kategorien von FAL-Objekten in Typo3 7.6 Fluid bekommen. Aber ich kann nur einen String zurückgeben. Ich möchte ein Objekt wie {Daten} erhalten.Wie kann ich das Kategorieobjekt in Fluid von Typo3 Content Element Pictures bekommen?

Was ich mache: TypoScript

lib.category = CONTENT 
lib.category { 
    table=sys_category 
    wrap=| 
    select { 
     pidInList = root,0,1 
     recursive = 99 
     max=10 
     selectFields=sys_category.title,sys_category.uid 
     join = sys_category_record_mm on sys_category_record_mm.uid_local = sys_category.uid join sys_file_metadata on sys_file_metadata.uid = sys_category_record_mm.uid_foreign join sys_file_reference on sys_file_reference.uid_local = sys_file_metadata.file 
     where.field = fuid 
     where.wrap = sys_file_reference.uid=| 
    } 
    renderObj=COA 
    renderObj { 
     1=TEXT 
     1.field = uid 
     2=TEXT 
     2.field = title 
    } 
} 

in Fluid ich habe:

<f:for each="{files}" as="file"> 
    <p> 
    - {file.uid}<br /> 
    - <f:cObject typoscriptObjectPath="lib.category" data="{fuid:file.uid}" /> 
    </p> 
</f:for> 

Auf der Webseite druckt:

  • 3Black7Small

  • 2Blue7Big

  • 1Red

Aber ich denke, dass ein Objekt in Fluid ist besser, so kann ich f verwenden: für jeden usw. Aber ich Ich weiß nicht, wie ich es zurückgeben kann.

Kann mir jemand helfen?

+0

Fal-Objekte haben standardmäßig keine Kategorie-Beziehung, benutzen Sie eine Erweiterung, um sie zu kategorisieren? Woher kommt auch die Variable 'files' in der Flüssigkeit? Benutzt du fluid_styled_content oder den älteren css_styled_content? –

+0

Ich benutze fluid_styled_content und ich habe Kategorien für Dateien. – Burner

Antwort

1

Sieht aus wie diese Aufgabe sehr schwierig ist. Das Objekt file im Array {files} hat den Typ \TYPO3\CMS\Core\Resource\FileReference, in dem Eigenschaften wie uid, title oder description vom ursprünglichen Dateiobjekt des Typs \TYPO3\CMS\Core\Resource\File übergeben werden. FileReference ist tatsächlich als Modell, aber nicht als Datei implementiert, Sie können es also nicht erweitern.

Die einzige andere Möglichkeit sehe ich darin, einen Viewhelper zu erstellen, der die Kategorien mit einer systemeigenen SQL-Abfrage abruft und das CategoryRepository das Ergebnis automatisch dem Category-Modell zuordnet. So etwas wie das:

Ich habe nicht den tatsächlichen Code getestet, nur die SQL-Abfrage, aber das sollte funktionieren. Ich hoffe auch, dass Sie wissen, wie Sie Viewhelper in Ihre flüssige Vorlage integrieren, wenn nicht, werde ich ein Beispiel geben.

+0

Wie kann ich den Viewhelper in meiner Fluid-Vorlage verwenden? @ dimitriL –

+1

$ categoryRepository muss 'TYPO3 \ CMS \ Extbase \ Domäne \ Repository \ CategoryRepository' anstelle von' \ TYPO3 \ CMS \ Extbase \ Domäne \ Model \ Category' sein, dann funktioniert es. Um ViewHelpers im Composer-Modus automatisch geladen zu bekommen und eine Erweiterung, die nicht über Composer installiert ist, schauen Sie sich an: https://stackoverflow.com/a/42293786/2564552 – spackmat

+0

Sie haben recht, ich habe meine Antwort angepasst, danke –