Zum Inhalt springen

Probleme mit von Extension erstellten Markern :-(

Erstellt am 30. Juli 2005 · 3 Antworten · letzte Antwort am 31. Juli 2005

Tags: Templates & Layouts, Frage

KurzVormAusticken ·

So, jetzt bin ich wirklich kurz davor "auszuticken"...

Erst mal Hallo an alle.

Ich habe folgendes Problem. Entweder bin ich blind, zu doof oder habe wirklich keinen Plan.

Ich habe in meinem Template einen Marker, nennen wir Ihn mal "###MISTER_SMITH###".

So, in meinen TS-Setup möchte ich, dass ###MISTER_SMITH### von meiner Extension mit anderen Markern ersetzt wird.

z.B.

page.10.marks.MISTER_SMITH = USER
page.10.marks.MISTER_SMITH.userFunc = tx_meineextension_pi1->main

Meine Extension ersetzt jetzt ###MISTER_SMITH### mit zwei neuen Markern z.B. ###MARKER_1### und ###MARKER_2###. Wie ist es mir jetzt möglich, diese neuen Marker mit TS anzusprechen?

z.B.
-------------------------------------------------------------------
# TS
# Hier marker "MISTER_SMITH" im HTML-Template ansprechen/ersetzen
page.10.marks.MISTER_SMITH = USER
page.10.marks.MISTER_SMITH.userFunc = tx_meineextension_pi1->main

# So, von meiner Extension erstellte Marker ansprechen/ersetzen
page.10.marks.MARKER_1 = TEXT
page.10.marks.MARKER_1.value = Das soll jetzt hier stehen

page.10.marks.MARKER_2 = TEXT
page.10.marks.MARKER_2.value = Das soll jetzt hier stehen

-------------------------------------------------------------------

Mein Problem ist, dass die erstellten Marker nicht angesprochen werden. Wie kann ich das machen?

Gruß, Mario

SaarFritz ·

Hallo !

Das ist richtig, woher soll Typo wissen, dass die User-Funktion Marker oder besser gesagt ein TEMPLATE zurück gibt. Und damit ist das Problem schon behoben.

Lösung:
1. Dem Marker den Typ TEMPLATE zuweissen:

page.10.marks.MISTER_SMITH = TEMPLATE

2. Das Template als TYP USER und die Funktion definieren

page.10.marks.MISTER_SMITH.template = USER
page.10.marks.MISTER_SMITH.template.userFunc = tx_meineextension_pi1->main

3. Die Funktion gibt Marker zurück, und diese dann ersetzen

page.10.marks.MISTER_SMITH.marks.MARKER_1 = TEXT
page.10.marks.MISTER_SMITH.marks.MARKER_1.value = Text für den Marker

Natürlich kannst du mit dem TEMPLATE arbeiten wie wenn es aus einer Datei kommt. Also mit Subparts und Co. arbeiten.

Gruss

KurzVormAusticken ·

Hallo SaarFritz,

:o 🙂 😃 #giggle# #giggle# #giggle# #giggle#

Danke... Danke... Danke... Ich habe vor einen halben Jahr schon mal die Frage gestellt und keine Antwort bekommen. Es ist wirklich unglaublich aber kannst Du mir sagen, ob das irgendwo in ne Ref steht oder hast Du es selbst durch etliche... etliche... etliche... Versuche herausgefunden.

Naja, stehe in Deiner schuld, hast meinen PC vor der Zerstörung bewart 😉

Ein dankbarer User

SaarFritz ·

Hallo Mario!

Im Grunde steht dies in der TSref. Nur leider ist die TSref eine Referenz, d.h. sie beschreibt die Objekte und die Eigenschaften von TypoScript. Beispiele oder Problemlösungen findet man dort eher selten. Sie ist aber hilfreich für eine systematische Lösung.

Marker sind Arrays von cObjects (TSref: 8.0.26 TEMPLATE). cObjects (TSref: 8 Content Objects (cObject)) sind z.B. TEXT, HMENU ... oder auch TEMPLATE. Marker werden nur von Objekten des Typs TEMPLATE unterstützt. Die Eigenschaft template des Objektes sind wiederrum cObjects und dieses unterstützt/kennt das Objekt USER.

So war mein theoretischer Ansatz und die praktische Umsetztung hast Du ja gesehen.

Ich bin froh, dass ich Deinem PC das leben retten konnte 😉 .