Am 05.10.14 20:50, schrieb Dr Dieter Porth:

7.) Nachsatz: Vielleicht ist aber auch nur dein Lösungsansatz
hinterfragenswert.
Eine komplexe, unübersichtliche Logik im Template ist oft ein Indiz
dafür, dass du mehr als nur den 'View' im View-Objekt "Template"
implementieren willst.
Eine Programmlogik sollte vordringlich im Controller, in einer
User-Funktion, in einer Extension oder im TypoScript verdrahtet sein.
Also bleibt als letzte Heuristik noch:
=> Überlegen, welchen eleganteren und/oder allgemeineren Lösungsweg es
gibt?  (Die Frage nach dem Ob stellt sich fast nie.)

Hallo Dieter,

Danke für die vielen Tipps zu Alternativen, um den Code übersichtlich zu bekommen. Das werde ich mir anschauen und beherzigen.

Es geht im konkreten Fall einfach darum, das Template von tx_news zu erweitern: ich möchte ein zusätzliches templateLayout definieren und dieses muss in der Template-Datei als if-condition abgefragt werden.

Die original Template-Datei von tx_news ist aber schon (für mich) recht verschachtelt, so dass mich schon diese einfache Aufgabe zu diesem Hilferuf nach einem besseren Editor (der mir z.B. optisch bei einem schließenden/öffnenden Tag optisch anzeigt, wo das entsprechende Gegenstück im Code zu finden ist) veranlasst hat.

Viele Grüße

Markus


{namespace n=Tx_News_ViewHelpers}
<f:layout name="General" />
<!--
        =====================
                Templates/News/List.html
-->

<f:section name="content">
        <f:if condition="{news}">
                <f:then>
                        <div class="news-list-view">

                       <f:if condition="{settings.templateLayout} == 2">
                            <f:then>
                                <f:for each="{news}" as="newsItem">
                                    <f:render partial="List/ItemEinsaetze"
arguments="{newsItem: newsItem, settings:settings}"/>
                                </f:for>
                            </f:then>
                         <f:else>

                                <f:if condition="{settings.hidePagination}">
                                        <f:then>
                        <f:if condition="{settings.templateLayout} == 1">
                            <f:then>
                                <f:for each="{news}" as="newsItem">
                                    <f:render partial="List/ItemLatest"
arguments="{newsItem: newsItem, settings:settings}"/>
                                </f:for>
                            </f:then>
                            <f:else>
                                <f:for each="{news}" as="newsItem">
<f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings}"/>
                                </f:for>
                            </f:else>
                        </f:if>

                        <f:if condition="{settings.templateLayout} == 2">
                            <f:then>
                                <f:for each="{news}" as="newsItem">
                                    <f:render partial="List/ItemEinsaetze"
arguments="{newsItem: newsItem, settings:settings}"/>
                                </f:for>
                            </f:then>
                         </f:if>

                                        </f:then>
                                        <f:else>
<n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}" initial="{offset:settings.offset,limit:settings.limit}"> <f:if condition="{settings.templateLayout} == 1">
                                <f:then>
<f:for each="{paginatedNews}" as="newsItem">
                                        <f:render partial="List/ItemLatest"
arguments="{newsItem: newsItem, settings:settings}"/>
                                    </f:for>
                                </f:then>
                                <f:else>
<f:for each="{paginatedNews}" as="newsItem">
                                        <f:render partial="List/Item"
arguments="{newsItem: newsItem, settings:settings}"/>
                                    </f:for>
                                </f:else>
                            </f:if>

<f:if condition="{settings.templateLayout} == 2">
                                <f:then>
                                <f:for each="{news}" as="newsItem">
                                    <f:render partial="List/ItemEinsaetze"
arguments="{newsItem: newsItem, settings:settings}"/>
                                </f:for>
                                </f:then>
                                        </f:if>

                                                </n:widget.paginate>
                                        </f:else>
                                </f:if>
                        </f:else>
                        </f:if>
                        </div>
                </f:then>
                <f:else>
                        <div class="no-news-found">
                                <f:translate key="list_nonewsfound" />
                        </div>
                </f:else>
        </f:if>
</f:section>

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an