Zum Inhalt springen

Problem mit "globalen Elementen" und weitere Fragen

Erstellt am 14. Januar 2011 · 2 Antworten · letzte Antwort am 14. Januar 2011

Tags: Templates & Layouts, Inhaltselemente, Frage

Andre83 ·

Hallo,

ich bin noch relativ neu in TYPO3 und nun dabei, ein erstes Web Projekt zu realisieren. Ich habe mich bis jetzt auch autodidaktisch gut in die Materie (Typoscript / CSS ) eingearbeitet, doch nun stehe ich vor einigen Problemen, bei denen ich doch Hilfe benötige.

Ich versuche, mein Hauptproblem einmal zu erklären:

Ich benutze ein eigenes Template, bestehend aus TS, HTML Grundgerüst und CSS.
Mein Layout ist ein ganz klassisches dreispaltiges Layout: links Navigation, mittig Content und rechts PlugIns wie z. B. RSS Feeds (ggf. kann man unter der Navigation auch noch PlugIns setzen. Dazu kommen dann noch die Kopfzeile und eine Fußzeile.

Nun habe ich Folgendes konstruiert:
Für die PlugIns habe ich das Prinzip der globalen Content Elemente verwendet, d. h. ich habe einen SysOrdner (pid20) angelegt, wo diese Elemente dann in die linke / rechte Spalte eingepflegt werden können und dann über das Typoscript auf allen Seiten angezeigt werden. Der Hintergrund dafür ist einfach der, dass damit später die Pflege dieser Elemente aus dem Backend ohne Eingriff in das TS erfolgen kann.

Ich habe nach langem Ausprobieren folgenden TS-Befehl entwickelt:

10.marks.BOXEN_RECHTS = CONTENT
10.marks.BOXEN_RECHTS {
	table = tt_content
	select.pidInList = 20
	select.where = colPos = 2
	select.orderBy = sorting
}

Nun sehe ich folgendes Phänomen:
Wenn ich im Backend nun links auf Anzeigen gehe und dann die Root-Seite sowie die untergeordneten Seiten durchklicke, wird alles korrekt angezeigt. In der Mitte steht der jeweilige Seitencontent und rechts dann der RSS Feed sowie weitere Dummy Content-Elemente.

Wenn ich nun aber das Backend verlasse (also die Seite direkt in den Browser lade) passiert folgendes: Wenn ich die Root-Seite (pid=3) anschaue, werden die Elemente an den Seitenspalten angezeigt, wenn ich nun aber (durch klicken einen Menüpunktes oder direktes Ändern der pid in der Adresszeile des Browsers) auf eine der untergeordneten Seiten gehe, verschwinden diese Elemente auf einmal. Content, welche dann den jeweiligem Unterseiten zugeordnet ist, wird korrekt in der Mitte platziert.

Dies kann ich mir nun leider nicht wirklich erklären. Wäre es ein Syntaxfehler oder eine falsche Abfrageanweisung, würde ja niemals etwas erscheinen.

Dann habe ich noch weitere, sekundäre, Fragen:

Man kann ja beim Anlegen von Contentelementen immer ein Datum angeben.
Wie kann ich das Format der Datumsausgabe mit TS von „dd/mm/yy“ in „dd.mm.yyyy“ ändern?
Wie kann ich die Datumsausgabe mittels CSS formatieren?

Ebenfalls eine Frage zu den statischen Templates:

Ich habe gemerkt, wenn ich das statische Template eines PlugIns nicht einschließe, wird die Ausgabe dieses PlugIns nicht formatiert und somit kann ich es frei mit meinen eigenen CSS formatieren.
Birgt dies irgendwelche Probleme?
Gibt es einen eleganteren Weg hierfür?

Dann etwas zur Abwärtskompatibilität:
Ich benutze derzeit Version 4.4.6. Wenn ich nun eine Extension wie tt_news installieren will, bekomme ich eine Meldung, dass meine TYPO3 Version zu hoch sei. Meine alte Installation (4.3.0) habe ich komplett zerschossen, als eine Extension installieren wollte, welche eine höhere TYPO3 Version erforderte.

Hat hiermit jemand Erfahrungen?
Würde ich ggf. wieder aller zerschießen, wenn ich versuche tt_news trotz Warnung zu importieren?

Das ist natürlich erst mal ein Batzen, aber ich dachte mir, ich stelle sie lieber gebündelt, als gleich mehrfach Themen zu öffnen. Ich wäre für Hilfe super dankbar. Ich habe versucht, mein Problem so ausführlich wie möglich zu schildern. Sollte es dennoch Rückfragen geben, bessere ich gerne nach. Im Anhang nochmal das ganze Typoscript:

page = PAGE
page {
     10 = TEMPLATE
     10.template = FILE
     10.template.file = fileadmin/html/blog.html
     10.workOnSubpart = DOKUMENT
	 includeCSS.cssdatei1 = fileadmin/css/blog.css
	 includeCSS.cssdatei2 = fileadmin/css/general.css


     10.marks.MENU = HMENU
     10.marks.MENU {
         1 = TMENU
         1{
              wrap = <ul> | </ul>
              NO.linkWrap = <li> | </li>
         }

	 }

     10.marks.BOXEN_LINKS = CONTENT
     10.marks.BOXEN_LINKS {
		 table = tt_content
		 select.pidInList = 20
		 select.where = colPos = 1
		 select.orderBy = sorting
     }

	 10.marks.MITTE = CONTENT
	 10.marks.MITTE {
		 table = tt_content
		 select.where = colPos = 0
		 select.orderBy = sorting
	 }

	 10.marks.BOXEN_RECHTS = CONTENT
	 10.marks.BOXEN_RECHTS {
		 table = tt_content
		 select.pidInList = 20
		 select.where = colPos = 2
		 select.orderBy = sorting
	 }

}
sunixzs ·

Hallo Andre83,

Datenbank-Abfrage

die Datenbank-Abfrage für BOXEN_X sieht für mich richtig aus. Auf der Startseite (die Seite mit dem Template?) funktioniert es, auf Seiten darunter nicht? Evtl. gibt es ein Template für das nächste Level, oder eine HTML-Datei, die nur für die Startseite da ist - die Marker existieren auf den Unterseiten nicht?

So verwende ich es (es gibt hier keine Begrenzung auf eine Spalte):

# additional footercontent
page.99 = CONTENT
page.99 {
  table = tt_content
  select {
    pidInList = 42
    languageField = sys_language_uid
    orderBy = sorting
  }
}

Eine Spalte rekursiv auslesen könnte man z. B. so:

page.10.marks.CONTENT_3 < styles.content.get
page.10.marks.CONTENT_3.slide = -1
page.10.marks.CONTENT_3.select.where = colPos = 3
page.10.marks.CONTENT_3.wrap = <div id="content_3" class="rte">|</div>

Statische Templates

Statische Templates von Extensions definieren Typoscript für Extensions. Unter Anderem "Voreinstellungen" wie z. B. welche Template-Datei soll benutzt werden oder eben auch CSS-Style-Angaben.

Dazu gibt es im statischen Template meistens einen Eintrag wie...

plugin.tx_plugin_pi1._CSS_DEFAULT_STYLE

Das, was dort enthalten ist, wird in eine temporäre CSS-Datei geschrieben, die beim Aufruf einer Seite importiert wird.

Also, wenn man die "Voreinstellungen" einer Extension nicht braucht, kann man diese auch draußen lassen. Wenn man die CSS-Angaben nicht haben will, kann man aber auch nach der Zuweisung des statischen Templates die Default-CSS-Angabe überschreiben (Sollte im selben Template gehen):

plugin.tx_plugin_pi1._CSS_DEFAULT_STYLE =

Strftime:

Zur Formatierung von Zeitangaben ist die PHP-Funktion strftime() verantwortlich. Die selbe Syntax kann man auch im Typoscript verwenden:

10 = TEXT
10.value = "Mein Zeitstempel"
10.strtime = %A, der %d. %B %Y %H:%M Uhr

Ich hoffe das konnte weiterhelfen.

LG sun

PS: Zum Zerschießen noch ein Tipp: Vorher eine Sicherungskopie machen.

Andre83 ·
sunixzs schrieb

die Datenbank-Abfrage für BOXEN_X sieht für mich richtig aus. Auf der Startseite (die Seite mit dem Template?) funktioniert es, auf Seiten darunter nicht? Evtl. gibt es ein Template für das nächste Level, oder eine HTML-Datei, die nur für die Startseite da ist - die Marker existieren auf den Unterseiten nicht?

Einen Fehler mit dem HTML Template kann ich ausschliessen. Wenn ich den enstprechenden Block aus dem TS entferne, erscheint der Marker korrekt, auch auf den Unterseiten.

Es muss also woanders liegen.
Aber Danke schon einmal.