Zum Inhalt springen

Howto: Aktuelle Seiten-ID in TypoScript

Erstellt am 17. Januar 2008 · 6 Antworten · letzte Antwort am 16. Oktober 2012

Tags: Datenbank, Tipp

Kr1X ·

Ahoi,

da ich mich lange mit der Frage beschäftigt habe,
wie ich eine SQL-Abfrage in TypoScript machen kann,
bei der die aktuelle Seiten-ID in der Where-Bedingung dynamisch eingefügt wird, stelle ich euch meine Lösung vor.

Öffne die Datei: .../t3lib/class.t3lib_db.php
Gehe zu Zeile 225 und suche nach:

function exec_SELECTquery($select_fields,$from_table,$where_clause,$groupBy='',$orderBy='',$limit='')	{
		mysql_query($this->SELECTquery($select_fields,$from_table,$where_clause,$groupBy,$orderBy,$limit), $this->link);
		if ($this->debugOutput)	$this->debug('exec_SELECTquery');
		return $res;
	}

ersetze es mit:

function exec_SELECTquery($select_fields,$from_table,$where_clause,$groupBy='',$orderBy='',$limit='')	{
		$where_clause = str_replace('{pid}',$GLOBALS['TSFE']->id,$where_clause);
		$res = mysql_query($this->SELECTquery($select_fields,$from_table,$where_clause,$groupBy,$orderBy,$limit), $this->link);
		if ($this->debugOutput)	$this->debug('exec_SELECTquery');
		return $res;
	}

damit könnt ihr in eurem TypoScript die Variable {pid} als die aktuelle Seiten ID benutzen:

select.where = feld1 = {pid}

Viele Grüße,
Christian

just2b ·

Hallo,

und was spricht gegen ein

select {
andWhere =uid = {field:uid}
andWhere.insertData = 1
}

?

georg

Kr1X ·

Bei mir hat das nie funktioniert.
Kann nicht erklären warum, allerdings gab es das Problem dass es nicht funktioniert, laut Google, schon öfters bei verschiedenen Typo Seite

just2b ·

man muss halt andwhere nehmen, weil das normale where kein stdWrap hat aber funktioniert hat das immer.

sonst einfach mal verwenden, bewusst einen fehler einbauen und sqldebug einschalten, dann weißt du genau was da rauskommt

georg

Blizzer ·

Kann mir einer sagen wie ich das mit uid hier rein bekomme ich bekomm das einfach nicht hin 🙁
Das ist der Quelltext. Für die vier soll halt die uid der aktuellen Seite hinkommen

lib.topbild = IMAGE
lib.topbild {
  

  
file = ****
  altText.data = DB:pages:$uid:user_bilder_alttext
  altText.insertData = 1
  titleText.data = DB:pages:4:user_bilder_titeltag
  titleText.insertData = 1

}
Unbekannter Benutzer ·

Blizzer nur ganz kurz die Info das es sowas nicht gibt. Du müsstest quasi über verschachtelte stdWraps das zusammenbauen, aber schön ist das nicht. Gibts keinen anderne Weg zu erreichen was du machen willst?