[TYPO3-german] fluid condition - mehrere mögliche Werte

Mikel lists at con-version.com
Wed Mar 18 10:03:25 CET 2015


Du kannst fluid Standards nehmen:

<f:switchexpression="{lib.backendlayout}">
    <f:casevalue="4">
       Dieser Case wird ausgeführt.
    </f:case>
    <f:casevalue="7">
       Der andere Case wird ausgeführt.
    </f:case>
</f:switch>

Zuvor musst Du natürlich Deine Variable lib.backendlayout wieder 
zurückbauen und die tatsächliche ID des Backendlayouts übergeben.

Mikel

Am 18.03.15 um 09:56 schrieb Philipp Holdener:
> VHS hab ich schon installiert für ein Downloadmodul dass mir die 
> Grösse einer verlinkten Datei ausgibt. Das wäre also kein Problem
>
> Jedoch verstehe ich nicht ganz wie ich das jetzt angehen muss?!
> Auf
> https://fluidtypo3.org/viewhelpers/vhs/master/Variable/SetViewHelper.html 
> verstehe ich das ganze nicht wirklich :-(
>
>
>
>
>
>> Warum denn so kompliziert, wenn es auch einfacher geht? :-)
>> Meines Erachtens ist es nicht gerade ideal, wegen einer Variable per TS
>> etwas zu bauen, um es dann in Fluid abfragen zu können. Das kann Dich in
>> der Zukunft selbst mal verwirren :-)
>>
>> Probier doch mal den Switch / Case ViewHelper oder wie jemand anderes
>> vorgeschlagen hat, die vhs ViewHelper. Da müsstest Du halt wegen diesem
>> einen Fall eine weitere EXT installieren.
>>
>> Wenn Du tatsächlich an dem unteren Beispiel bleiben willst, dann
>> versuche mal, die 1 in der Condition als String zu zu übergeben. Du
>> erstellt in Deinem TS-Konstrukt einen String, keinen Integer.
>>
>> Mikel
>>
>> Am 18.03.15 um 09:37 schrieb Philipp Holdener:
>>> Irgendwie gehts nicht
>>>
>>> Ich hab jetzt das hier
>>>
>>>
>>> lib.backendlayout = CASE
>>> lib.backendlayout {
>>>    key.field = backend_layout
>>>    key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
>>>          default = TEXT
>>>          default.value = 0
>>>          1 = TEXT
>>>          1.value = 0
>>>          2 = TEXT
>>>          2.value = 0
>>>          3 = TEXT
>>>          3.value = 0
>>>          4 = TEXT
>>>          4.value = 1
>>>          5 = TEXT
>>>          5.value = 0
>>>          6 = TEXT
>>>          6.value = 1
>>>          7 = TEXT
>>>          7.value = 0
>>>     stdWrap.wrap = |
>>>  }
>>>
>>>
>>>
>>> Und das hier im Fluid vom DCE Element
>>>
>>> f:if
>>> condition="{f:cObject(typoscriptObjectPath:'lib.backendlayout')}==1">
>>>                                   <f:then>
>>>                                           <div class="content">
>>> <h1>{slide.titel}</h1>
>>> <p><f:format.nl2br>{slide.text}</f:format.nl2br></p>
>>>                                             <a
>>> href="{dce:typolinkUrl(parameter:'{slide.buttonLink}')}" class="btn"
>>> target="{slide.buttonZiel}">{slide.buttonText}</a>
>>>                                       </div>
>>>                                   </f:then>
>>>                                   <f:else>
>>> <h1>{slide.titel}</h1>
>>> <p><span><f:format.nl2br>{slide.text}</f:format.nl2br></span></p>
>>>                                   </f:else>
>>>                                 </f:if>
>>>
>>>
>>>
>>>
>>>
>>> es wird aber immer die else Variante ausgeliefert.
>>>
>>>
>>> Wenn ich mir mal lib.backendlayout auf page.1 ausgeben lasse steht da
>>> schön entweder 0 oder 1
>>>
>>>
>>> Wenn ich im DCE {f:cObject(typoscriptObjectPath:'lib.backendlayout')}
>>> ausgeben lasse steht da immer 0 ... hm
>>>
>>>
>>> Gruss
>>> Philipp
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>> Hallo,
>>>>
>>>> oder Du schaust Dir die vhs-Viewhelper an, z.B. v:variable
>>>>
>>>> Das nutze ich ganz gerne, um sehr verschachtelte Fluid-Templates
>>>> übersichtlicher zu bekommen.
>>>>
>>>> https://fluidtypo3.org/viewhelpers/vhs/master/Variable/SetViewHelper.html 
>>>>
>>>>
>>>>
>>>> Marc
>>>>
>>>>
>>>> Am 18.03.15 09:13, schrieb Mikel:
>>>>> Hallo Philipp,
>>>>>
>>>>> Du willst einen logischen "Oder-Vergleich", richtig? Also möchtest
>>>>> abfragen, ob Dein Backend-Layout entweder die ID 4 oder die ID 7 hat.
>>>>> Der If-ViewHelper unterstützt per default leider keine logischen
>>>>> Oder-Vergleiche (meines Wissens nach).
>>>>>
>>>>> Ein Workaround wäre: Wenn Du die Backend-Layouts so mappen kannst, 
>>>>> dass
>>>>> eine Abfrage wie "ist größer oder gleich 4" passen würde, dann 
>>>>> könntest
>>>>> Du den Standard nutzen. Allerdings unsauber, wenn Du in Zukunft 
>>>>> mal ein
>>>>> weiteres Layout definierst. Dieser passt dann nämlich direkt in diese
>>>>> Condition.
>>>>>
>>>>> Allerdings gibt es in Fluid auch ViewHelpers für Switch / Case. 
>>>>> Diesen
>>>>> könntest Du verwenden.
>>>>>
>>>>> Oder einen eigenen ViewHelper schreiben und darin die gewünschten
>>>>> logischen Vergleiche ausführen.
>>>>>
>>>>> Mikel
>>>>>
>>>>>
>>>>>> Hallo zusammen
>>>>>>
>>>>>> Ich hab hier eine Condition die das Backendlayout abfragt.
>>>>>> Bei Backendlayout ID 4 wird korrekt das in der Condition ausgelöst.
>>>>>> Jetzt hätte ich gerne das gleiche für ID 7 auch.
>>>>>>
>>>>>> Wie mach ich das jetzt?
>>>>>>
>>>>>> Das hier funktioniert für 4
>>>>>> <f:if 
>>>>>> condition="{f:cObject(typoscriptObjectPath:'lib.backendlayout')}
>>>>>> == 4"
>>>>>>
>>>>>>
>>>>>> <f:if 
>>>>>> condition="{f:cObject(typoscriptObjectPath:'lib.backendlayout')}
>>>>>> == 4,7">
>>>>>> geht nicht
>>>>>>
>>>>>>
>>>>>> Aus dem da werde ich nicht schlau wie ich das für meinen Fall mache:
>>>>>> http://wiki.t3easy.de/extbase-und-fluid/fluid-ifviewhelper-stringvergleich/ 
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hat mir jemand einen Tipp?
>>>>> _______________________________________________
>>>>> TYPO3-german mailing list
>>>>> TYPO3-german at lists.typo3.org
>>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>>>
>>>>
>>>
>>> _______________________________________________
>>> TYPO3-german mailing list
>>> TYPO3-german at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list