Zum Inhalt springen

tx_news: Erweiterung der Detail.html view mit Markern

Erstellt am 9. Juni 2015 · 4 Antworten · letzte Antwort am 12. Juni 2015

Tags: Templates & Layouts, tx_news, TYPO3 6, Frage

Phigiro ·

Hallo zusammen,

und nochmal brauche ich eure Hilfe. :-)

Ich versuche das mal zu beschreiben.

Für tx_news habe ich ein NewsDetail-Template mit nur einem Marker erstellt, nämlich: ###hauptinhalt###.
Dieses Template wird als Erweiterungstemplate in der Artikel-Detail Seite, die ich für tx_news angelegt habe eingebunden.
Wenn ich dies nun starte, bekomme ich wie gewünscht nach Klick auf einen Artikel nur die Ausgabe der \Resources\Private\Templates\News\Detail.html

Jetzt möchte ich die \Resources\Private\Templates\News\Detail.html erweitern um Teile eines anderen Templates, welches Marker enthält, die über das setup der Root-Page angesprochen werden, z.B. die Hauptnavigation.

Wenn ich nun auf den Artikel klicke, erhalte ich die Ausgabe der \Resources\Private\Templates\News\Detail.html plus dem Template-Teilen. Allerdings werden die dort enthaltenen Marker nun nicht mehr angesprochen, sondern mit ###Marker### ausgegeben.

Mir ist schon fast klar warum, da das NewsDetail-Template ja auch page.10.template.file überschreibt und dort gibt es ja nur den Marker ###hauptinhalt###. Die anderen Marker werden ja quasi darüber mit eingepflegt.

Gibt es einen Weg diese darin wieder anzusprechen?

Warum ich das möchte ist recht einfach. Das Teaserbild der News-Artikel soll zusätzlich an den Kopf der Seite.

DANKE schon mal! :-)

jenses ·
Phigiro schrieb

Das Teaserbild der News-Artikel soll zusätzlich an den Kopf der Seite.

Dann mach das doch mit Javascript, mit jQuery wären das 1-2 Zeilen Code...

Phigiro ·

Guten Morgen,

ich glaube ich habe da ein wenig zu kompliziert gedacht.

Nun habe ich einen sehr viel einfacheren Weg über Typoscript gefunden.
In dem Erweiterungs-Template auf der Artikel-Detail Seite binde ich mein News-Detail-Template ein und spreche die Marker für Bild, Titel und Teaser wie unten eingefügt an.

Allerdings verstehe ich nicht wirklich was ich da tue und wäre über eine Erklärung glücklich, da ich es gern verstehen würde und es nicht schaffe den Teaser auf diesem Weg zu ziehen.

Ich habe in news/classes/domain/model/news.php und in der DB-Tabelle tx_news_domain_model_news nachgesehen, das Feld heißt teaser, nur wenn ich (im eingefügten Code-Block ganz unten) das als field = teaser belege statt field = titel passiert nichts.

Vielleicht kann mir dabei ja noch jemand helfen, hier der Code ...

[globalVar = GP:tx_news_pi1|news >0]
page.10.marks.artikelbild = RECORDS
page.10.marks.artikelbild {
      dontCheckPid = 1
      tables = tx_news_domain_model_news
      source.data = GP:tx_news_pi1|news
      source.intval = 1
      conf.tx_news_domain_model_news = FILES
      conf.tx_news_domain_model_news {
         references {
            table = tx_news_domain_model_news
            fieldName = fal_media
            uid.field = uid
         }
         begin = 0
         maxItems = 1
         renderObj = IMG_RESOURCE
         renderObj.file {
            maxW = 1200
            import.data = file:current:publicUrl
            treatIdAsReference = 1
         }
      }
      wrap =  <img src="|" />
}

page.10.marks.artikeltitel = RECORDS
page.10.marks.artikeltitel  {
        dontCheckPid = 1
        tables = tx_news_domain_model_news
        source.data = GP:tx_news_pi1|news
        source.intval = 1
        conf.tx_news_domain_model_news = TEXT
        conf.tx_news_domain_model_news {
            field = title
            htmlSpecialChars = 1
        }
        wrap =  <h1>|</h1>
}

page.10.marks.artikelteaser = RECORDS
page.10.marks.artikelteaser  {
         dontCheckPid = 1
         tables = tx_news_domain_model_news
         source.data = GP:tx_news_pi1|news
         source.intval = 1
         conf.tx_news_domain_model_news = TEXT
         conf.tx_news_domain_model_news {
            references {
               table = tx_news_domain_model_news
               fieldName = teaser
            }
         }
        wrap =  <p>|</p>
}

[end]

... und DANKE schon mal.

@Flash: an jQuery hatte ich auch schon gedacht, das wäre mein Plan B gewesen, ich will aber eine Typo3 Lösung. ;-)

jenses · · Beste Antwort

Dann schau dir deinen geposteten TS-Code noch mal genauer an und such nach weiteren Unterschieden,
die gibt es nämlich.

So sollte es gehen:

page.10.marks.artikelteaser = RECORDS
page.10.marks.artikelteaser {
	dontCheckPid = 1
	tables = tx_news_domain_model_news
	source.data = GP:tx_news_pi1|news
	source.intval = 1
	conf.tx_news_domain_model_news = TEXT
	conf.tx_news_domain_model_news {
		field = teaser
	}
	wrap =  |
}

Es ist immer eine gute Idee,
mit reduziertem Code zu beginnen und auf wrap, htmlSpecialChars usw. erstmal zu verzichten,
bis man sicher ist,
daß ein richtiges Ergebnis geliefert wird.
Verfeinern kann man dann später.

Phigiro ·

Hey Jenses,

danke, das hat geklappt!

Eine Frage hätte ich dazu aber noch.
Ich erzeuge doch tables = tx_news_domain_model_news

Warum heißt es dann nicht conf.tables = TEXT ... ?