[TYPO3-german] Frage zu for-Schleife und Tags
Dr Dieter Porth
typo3 at mobger.de
Sun May 10 16:42:14 CEST 2015
Am 9.5.2015 um 15:46 schrieb Manuel Bachl:
> Hallo,
>
> ich habe eine Frage bzgl. Fluid.
>
> Ich nutze Tags, welche in unterschiedlichen Sys-Ordnern hinterlegt sind.
> Bei der Ausgabe dieser Tags nutze ich eine for-Schleife und in dieser
> eine Abfrage nach der pid.
>
> Nun versuche ich die Anzahl an Tags mit der jeweils selben pid zu zählen.
>
> Mein Code bisher:
...
> Mein Ziel ist es, an der Stelle an der "Disziplinen" steht, zu
> entscheiden, ob nur eine Disziplin (Tag) hinterlegt ist, dann soll
> dort nur "Disziplin" stehen, wenn es mehr als eine ist, dann Disziplinen.
> Ich kann mit vorstellen, dass es mit einer weiteren for-Schleife
> möglich wäre, und in dieser tagCount.total zu verwenden. Doch mir ist
> die korrekte innere for-Schleife nicht ganz klar. Zudem denke ich gibt
> es einfacheren Weg.
>
> Wer kann helfen?
> Ist das überhaupt verständlich genug erklärt?
>
> Grüße
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Hallo Manuel,
Vorschlag Ungetestet.
<f:for each="{newsItem.tags}" as="tag"
iteration="tagCount">
# sehr ungute if-Abfrage, denn eine PID gehört nicht in das Template.
immer per Settings oder als Fluid-Variable übergeben, wenn schon das
Template als Modell-Aufräumer auch noch überschüssige Information
auszusondern soll.
# lib.tagCounter wäre ein einfacher Counter im TypoScript
(LOAD_REGISTER) (Snippets leicht per Suchmaschine zu finden)
# Besser wäre noch, diese Abfrage im TypoScript so zu beschreiben, dass
die Schleife nur auszugebende Informationen enthält. Dann könntest du
effizient direkt auf den tagCount.total > '1' testen.
<f:if condition="{tag.pid} == 43">
<f:then>
<li><f:if
condition="{0:'{iterator.isLast}', 1:'{f:cObject( typoscriptObjectPath:
'lib.tagCounter')}' } == {0:'1', 1:'1'}"><f:then>
<li>Disziplinen:</li>
<li class="unbordered">
<f:link.page
pageUid="{settings.backPid}"
additionalParams="{tx_news_pi1:{overwriteDemand:{tags: tag}}}">
{tag.title}
</f:link.page>
</li>
</f:then>
<f:else>
<li>
<f:link.page
pageUid="{settings.backPid}"
additionalParams="{tx_news_pi1:{overwriteDemand:{tags: tag}}}">
{tag.title}
</f:link.page>
</li>
</f:else>
</f:if>
</f:then>
</f:if>
</f:for>
Anmerkung:
Insgesamt finde ich deine Lösung suboptimal, da Sie Logik (hart
verdrahtete 43 (Pid)) und View miteinander vermischt und da sie die
Teilüberschrift "Disziplinen" aus HTML-Sicht gleichrangig wie eine echte
Information "{tag.title} " behandelt.
Auch tendiere ich dazu, jeglichen Text im HTML-Template bzw. im
TypoScript immer in Fremdsprachendateien (f:translate) auszulagern, um
in Anlehnung an das MVC-Prinzip in einer TYPO3-Aufsetzung die Logik, die
Darstellung und die Inhalte möglichst sauber getrennt zu halten.
Dieter
-- Dr. Dieter Porth
- Mein kleines TYPO3-Labor: http://www.mobger.de/
More information about the TYPO3-german
mailing list