[TYPO3-german] eigene Extension Extbase/Fluid, kategorieweise Vereinsliste -> meine Frau, die Ilsebill *grummel*

Thomas Nussbaumer typo3 at thomasnu.ch
Tue Oct 16 16:12:17 CEST 2012


Ich ging von der oberen Tabelle aus. Der ganze Code wie beschrieben muss 
in jeder Spalte wiederholt werden (5*), wobei nur die UID des Bezirks 
ändert. Der Vergleich ist nummerisch und funktioniert so. Es wird 
überhaupt nicht sortiert, sondern die Bezirke werden in Folge des ersten 
Auftretens angezeigt (vereine.uid). Daher müssen für jeden Bezirk alle 
Vereine durchlaufen und nur die passenden angezeigt werden.

Am 16.10.2012 15:30, schrieb Steffen Liebig:
> Hallo Thomas,
>
> ich hatte bei weiterem Querlesen was Ähnliches gefunden. Da stand, dass
> die if condition nicht mit einem String vergleicht, man müsse das
> angeblich beides in ein Array verwandeln. Wie auch immer...ich habs
> gelassen wie's iss und erhalte eine senkrechte Aufstellung in derselben
> Reihenfolge wie vorher.
>
> Lagere ich dann noch die Gruppierungsschleife in die Tabellenzeile aus,
> kommt die Tabelle raus, die Du auf der Seite ganz oben siehst. Das wäre
> dann dieses - die condition kommt also nicht zum Tragen:
>
> <table>
> <tr><f: groupedFor...>
> <td><derganzeRest></td>
>      </f:for>
> </tr>
> </table>
>
>
> Dummerweise ist nicht rauszufinden, wonach hier überhaupt sortiert wird.
> Weder die Datenbank selbst noch das BE geben Aufschluss, woher diese
> Sortierung kommt - ich kann auch ändern, was ich will, das FE rührt sich
> keinen Millimeter.
>
> Ich hab das dann erstmal ad acta gelegt und was gesucht, das mir des
> Platzes wegen nur jeweils 2 Bezirke pro Zeile anzeigt.
>
> Die zielbezogen leider ebenso wenig funktionsfähige Idee war diese:
>
> <f:groupedFor each="{vereines}" as="clubs" groupBy="kategorie"
> groupKey="kategorie">
>     <f:if condition="{kategorie} % 2"></f:if>
>           <div style="float:left margin-left:30px">
>       <f:then>
>           <h3>{kategorie.bezirk}</h3>
>         <f:for each="{clubs}" as="club">
>           <f:link.action action="show" arguments="{vereine :
> club}">{club.vereinsname}</f:link.action></br>
>         </f:for>
>       </f:then>
>     </div>
>
>       </f:groupedFor>
>
> Dabei war im Original die condition sogar in den div-Befehl eingebettet.
> Ich möchte erreichen, dass nur 2 Bezirke pro Zeile angezeigt werden. Der
> Grund ist, dass ich verhindern will, in kleineren Fenstern gleich die
> komplette Mittelspalte nach unten verschoben zu bekommen. Wenn schon
> flexible Seite, dann richtig *g*.
>
> Ich fasse mal zusammen, was der Idealfall wäre:
>
> - Bezirke in der richtigen Reihenfolge
> - Vereine alphabetisch (evtl könnte ich Kürzel wie "SC" in ein eigenes
> DB-Feld auslagern, nach der Stadt muss dann immer noch sortiert werden)
> - 2 Bezirke pro Zeile (wenn genug Platz, gehen auch 3)
>
> Momentan schaue ich jedoch schon dumm aus der Wäsche, wenn ich mich dem
> auch nur annähern will *grummel*.
>
> Cu, Steffen
>
> Am 16.10.2012 11:23, schrieb Thomas Nussbaumer:
>> Hallo Steffen
>>
>> Ich sehe dass du ein schönes Stück weiter bist. Leider kann Extbas nicht
>> einfach nach einer Relation sortieren. Um die gewünschte Reihenfolge der
>> Bezirke zu erreichen, kannst du etwa folgendes in jede Tabellenspalte
>> schreiben, mit der entsprechenden UID des Bezirks in condition:
>>
>> <td ,,,,, >
>> <f:groupedFor each="{vereines}" as="clubs" groupBy="kategorie"
>> groupKey="kategorie">
>> <f:if condition="{kategorie.uid} == 1">
>> <h3>{kategorie.bezirk}</h3>
>> <f:for each="{clubs}" as="club">
>> <f:link.action action="show" arguments="{vereine : club}"
>> {club.vereinsname}</f:link.action></br>
>> </f:for>
>> </f:if>
>> </f:groupedFor>
>> </td>
>>
>> Ich hoffe, dass so die richtige Darstellung entsteht.
>>
>> Gruss. Thomas
>>
>> Am 15.10.2012 19:15, schrieb Steffen Liebig:
>>> Hallo Thomas,
>>>
>>> dies kam raus:
>>>
>>> <td>Bezirk I (Kaiserslautern)</br></br>
>>> <f:groupedFor each="{vereines}" as="clubs" groupBy="kategorie"
>>> groupKey="kategorie">
>>> <tr>
>>> <th>{kategorie.bezirk}</th>
>>> </tr>
>>> <f:for each="{clubs}" as="club">
>>> <f:link.action action="show" arguments="{vereine :
>>> club}">{club.vereinsname}</f:link.action></br>
>>> </f:for>
>>> </f:groupedFor>
>>> </td>
>>>
>>> -->
>>>
>>> SC Caissa Jockgrim
>>> Turm Kandel
>>> SC Herxheim
>>> SK Ludwigshafen
>>> SC 1975 Bann e.V.
>>> SF Althornbach
>>> SK Dahn
>>> VfR Baumholder
>>> Bezirk I (Kaiserslautern)
>>>
>>> Bezirk IV
>>> Bezirk II-III
>>> Bezirk I
>>> Bezirk V
>>> Bezirk VI
>>>
>>> - Clubs verlinkt zur Einzelansicht, das ist ok
>>> - Bezirke unverlinkt, jup
>>> - hmmm...Letztere als Unterliste von Bezirk I und beide (Gesamt-)Listen
>>> einzeln (Vereine ganz oben ? *seltsam, grübel, verwirrt guck*
>>>
>>> siehe: http://www.pfaelzischer-schachbund.de/typo3/index.php?id=38 ganz
>>> oben
>>>
>>> ...ist insofern ein Fortschritt, als dass die Bezirksbezeichnungen
>>> dabei >>> <f: if condition="{0:vereine.kategorie} == {0:'1'}">
>>
>>> sind. Über 2 Tabellen weg war mir bislang nicht vergönnt :-). Bleibt
>>> noch die Frage, wie man die Clubs unter den richtigen Bezirksnamen
>>> bekommt, oder wartet an der Stelle noch die condition ?
>>>
>>> Cu, Steffen
>>>
>>> Am 15.10.2012 18:30, schrieb Thomas Nussbaumer:
>>>> Hi Steffen
>>>>
>>>> Versuch mal folgendes:
>>>>
>>>> I) groupedFor
>>>> >
>>>> > <td>Bezirk I (Kaiserslautern)</br></br>
>>>> > <f:groupedFor each="{vereines}" as="clubs"
>>>> > groupBy="kategorie" groupKey="kategorie">
>>>> > <tr>
>>>> > <th>{kategorie.bezirk}</th>
>>>> > </tr>
>>>> > <f:for each="{clubs}" as="club">
>>>> > <f:link.action action="show" arguments="{vereine :
>>>> > club}">{club.vereinsname}</f:link.action></br>
>>>> > </f:for>
>>>> > </f:groupedFor>
>>>> > </td>
>>>>
>>>> Ich habe II für groupedFor als Vorlage verwendet:
>>>>
>>>> > II) if condition
>>>> >
>>>> > <td>Bezirk II/III (Nord-Ost)</br></br>
>>>> > <f:for each="{vereines}" as="vereine">
>>>>
>>>> Gruss. Thomas
>>>>
>>>>
>>>> Am 15.10.2012 15:45, schrieb Steffen Liebig:
>>>> >
>>>>> Hallo zusammen,
>>>>>
>>>>> ich habe mich ziemlich "umgelesen", bin aber nicht wirklich
>>>>> weitergekommen. Meine Extension zur Anzeige von Vereinsdaten lässt
>>>>> sich
>>>>> auch nach 2 Wochen immer noch nicht dazu überreden, eine nach Bezirken
>>>>> gegliederte Liste auf den Schirm zu bringen.
>>>>>
>>>>> Kurz als Rückgriff/ Zusammenfassung:
>>>>>
>>>>> - 2 Tabellen
>>>>> -> Vereine (Felder für Name, Ansprechpartner, Jugendleiter usw,
>>>>> dazu die Relation "kategorie")
>>>>> -> Kategorie (Bezirk, dazu die Relation "Vereinsdaten")
>>>>> - n:1-Beziehung Vereine/Kategorie
>>>>> - 1:n extra in die andere Richtung
>>>>>
>>>>> Letztere ist rein logisch unnötig. Hat sich irgendwie ergeben und dazuIt took me even up to a week. 've Tried everything! Wait and see.
>>>>> geführt, dass ich die Vereine auch innerhalb der Kategorie eingeben
>>>>> kann. Vielleicht hat das vereinfachende Auswirkungen auf das Auslesen
>>>>> der UiD (-> Schleifen) oder sogar der Bezirksbezeichnung ?! Ist nur so
>>>>> ein Gedanke...derzeit holt sich die Vereinstabelle nur die UiD der
>>>>> Kategorie und packt sie in ein Extrafeld in der Datenbank. Daraus
>>>>> ergaben sich die unten aufgeführten Versuche mit Schleifen und
>>>>> Conditions. Ideal wäre, wenn die Extension mivereiner das Ganze
>>>>> selbständig
>>>>> abhängig von der Bezirksbezeichnung tabellarisch anzeigen würde
>>>>> (Städte
>>>>> alphabetisch ?!, momentan sind Kürzel wie "SC" Teil der Vereinsnamen).
>>>>>
>>>>> Folgende Ideen habe ich getestet - die Bezirks-Überschriften sind hier
>>>>> nur als Orientierung auf dem Bildschirm gedacht...wenn ein Weg klappt,
>>>>> kann ichs rüberkopieren und den Bezirk anpassen:
>>>>>
>>>>> -- Das vorläufige Resultat findet sich auf
>>>>> http://www.pfaelzischer-schachbund.de/typo3/index.php?id=38 (Anzeige
>>>>> von
>>>>> links nach rechts) --
>>>>>
>>>>> I) groupedFor
>>>>>
>>>>> <td>Bezirk I (Kaiserslautern)</br></br>
>>>>> <f:groupedFor each="{vereine.vereinsname}" as="clubs"
>>>>> groupBy="{vereine.kategorie}" groupKey="{vereine.kategorie}">
>>>>> <tr>
>>>>> <th>{vereine.kategorie}</th>
>>>>> </tr>
>>>>> <f:for each="{clubs}" as="club">
>>>>> <f:link.action action="show" arguments="{vereine :
>>>>> vereine}">{vereine.vereinsname}</f:link.action></br>
>>>>> </f:for>
>>>>> </f:groupedFor>
>>>>> </td>
>>>>>
>>>>> ...Ergebnis: wird nix angezeigt
>>>>>
>>>>>
>>>>> II) if condition
>>>>>
>>>>> <td>Bezirk II/III (Nord-Ost)</br></br>
>>>>> <f:for each="{vereines}" as="vereine">
>>>>> <f: if condition="{0:vereine.kategorie} == {0:'1'}">
>>>>> <f: then><f:link.action action="show" arguments="{vereine
>>>>> : vereine}"> {vereine.vereinsname}</f:link.action></br></f: then>
>>>>> <f: else> Keine Vereine in Kategorie 1 !</f: else>
>>>>> </f: if>
>>>>> </f:for>
>>>>> </td>
>>>>>
>>>>> Da dieser Weg nicht auf Vergleiche mit strings anspricht, muss man die
>>>>> Kriterien angeblich als arrays verpacken (?!).
>>>>>
>>>>> Ergebnis: es wird ALLES angezeigt, was in der Schleife auftaucht -
>>>>> auch
>>>>> bei Vereinen, die tatsächlich in Bezirk I sind. Kurioserweise stehen
>>>>> die
>>>>> Abschlusstags in der Schleife IN ROT im Code. Muss man diese Befehle
>>>>> nicht beenden ? Seltsam...
>>>>>
>>>>>
>>>>> III) geschachteltes for each
>>>>>
>>>>> <td>Bezirk IV (Landau)</br></br>
>>>>> <f:for each="{vereine.kategorie}" as="kategorie">
>>>>> {vereine.kategorie}
>>>>> <f:for each="{vereines}" as="vereine">
>>>>> <!--<f:link.action action="show" arguments="{vereine :
>>>>> vereine}"> {vereine.kategorie}</f:link.action>-->
>>>>> <f:link.action action="show" arguments="{vereine :
>>>>> vereine}"> {vereine.vereinsname}</f:link.action></br>
>>>>> </f:for>
>>>>> </f:for>
>>>>> </td>
>>>>>
>>>>> Ergebnis: der Block im Frontend bleibt leer.
>>>>>
>>>>>
>>>>> Da auch sämtliche Programmierversuche (z. T. über mehrere Dateien -
>>>>> neue
>>>>> Funktion erstellen etc -) im Sande verlaufen sind, bin ich langsam am
>>>>> Verzweifeln.
>>>>>
>>>>> Hat wirklich niemand eine Idee, wie sich dieses Problem lösen lässt ?
>>>>>
>>>>> Cu, Steffen
>>>>
>>>
>>
>



More information about the TYPO3-german mailing list