Ich bin in Typo3 noch purer Anfänger und habe mir eine ganze menge über die Lernvideos von video2brain angeeignet. Bei dem Objekt HMENU ist mir folgendes aufgefallen:
Bei einem Video wird folgender Konstrukt vorgestellt:
temp.navigation = HMENU
temp.navigation {
wrap = <ul> | </ul>
1 = TMENU
1.NO.linkWrap = <li> | </li>
1.NO.ATagTitle.field = subtitle // title
}
In einem anderen Video wird anstelle von linkwrap stdWrap2.wrap verwendet, so dass die Zeile 5 wie folgt aussieht:
1.NO.stdWrap2.wrap = <li> | </li>
Schaue ich mir dann den Quelltext an, kann ich keinen Unterschied sehen.
Nun meine Frage, wann verwendet man besser linkwrap und wann stdWrap2.wrap bzw. wie unterscheiden sich beide.
Über eine Erklärung würde ich mich sehr freuen.
Hallo.
Bei den ganzen Wraps gibt es v.a. zwei Unterschiede:
1. Wie mächtig ist der jeweilige Wrap? D.h. was kann er alles?
2. Wann wird er ausgeführt? D.h. in welcher Reihenfolge erfolgt die Verarbeitung des TS.
Zu 1:
In TYPO3 tauchen zwei sehr ähnliche Bezeichnungen immer wieder auf: wrap und stdWrap. Der simple wrap umklammert lediglich seinen Inhalt mit Text (siehe Dein erstes Beispiel). Der stdWrap hingegen hat selbst viiiele Eigenschaften (siehe TSref) - unter anderem auch den simplen wrap (wie er im zweiten beispiel angewandt wird).
Wann ein *wrap (linkWrap, stdWrap, stdWrap2, allWrap,...) welche Eigenschaft hat, also "nur" wrap" oder stdWrap, steht ind er TSref (bzw. der Extension-Dokumentation).
Zu 2:
Die Reihenfolge ist gerade bei Menüs oft wichtig, um passende Verschachtelungen erzeugen zu können. Sie kann zum einen auch (teils eher zwischen den Zeilen) der TSref entnommen werden.
Ansonsten haben undkonsorten in ihrem Blog eine schöne Übersicht bereitgestellt: http://blog.undkonsorten.com/typo3-tmenu-wrap-wrapitemandsub-allwrapallstdwrap-linkwrap
Viele Grüße
Julian
Hallo Julian,
danke für die schnelle Antwort.
Zusammenfassend kann man also sagen, dass zumindest bei einfachen Aufgabenstellungen wie hier, beides zum gewünschten Ziel führt und es keinen Grund gibt, dem einen oder anderen den Vorzug zu geben.
Viele Grüsse
Maren
Jain. Vom Ergebnis her dürfte es hier egal sein. Von der Verarbeitung her wäre dem wrap der Vorzug zu geben, weil weniger Code (Wertvergleiche usw.) ausgeführt werden müssen.
Es gibt aber ggf. ein paar Feinheiten bei speziellen Wraps. Der linkWrap berücksichtigt z.B.
this function will find any integer encapsulated in {} (curly braces) in the first wrap part and substitute it with the corresponding page uid from the rootline where the found integer is pointing to the key in the rootline.
(steht in der Beschreibung der PHP-Funktion, die die Wrap umsetzt bzw. in anderen Worten in der (nicht-HTML-Version der) TSref -> swx-Datei)
Falls Du Dich mit PHP auskennst, einfach mal der Code-Vergleich:
linkWrap vs. stdWrap
Für die ganz feinen Unterschiede (bzw. um zu schauen, was eigentlich möglich ist), ist ein Blick in den PHP-Code manchmal sehr aufschlussreich.
Noch kenne ich mich mit PHP nicht aus, aber ich habe vor mich damit zu beschäftigen. Ich mag es nämlich nicht, wenn ich nicht verstehe warum etwas geht oder eben auch nicht geht.