Zum Inhalt springen

Sysordner per TypoScript festlegen

Erstellt am 12. März 2009 · 3 Antworten · letzte Antwort am 18. März 2009

Tags: Frage

nomawie ·

Hallo zusammen,
ich habe eine umfangreiche Datenstruktur mit vielen Database Relations. Aus Gründen der Übersichtlichkeit möchte ich natürlich nicht alle Datensätze und deren Kinddatensätze in einem einzigen Sysordner speichern.

Zunächst habe ich in der tca.php den Marker bei wizards=>add=>params=>pid von

###CURRENT_PID###'

auf

 ###STORAGE_PID###

gesetzt. Aber im Laufe der Entwicklung nach die Komplexität der Datenstruktur immer mehr zu, so dass ein weiterer Ordner nicht reichte. Am liebsten hätte ich für jeden Datensatztyp einen eigenen Speicherordner.

Die Core Api bietet dazu folgenden Marker an:

###PAGE_TSCONFIG_ID###

aber entweder funktioniert der nur bei foreign_table_where oder ich ich hab einen Fehler im TypoScript. Im Feld Optionen->Tsconfig des Sysordners hab ich folgendes geschrieben:

TCEFORM.tx_organizer_notice.date{
  PAGE_TSCONFIG_ID=14
}

DIe Tabelle heißt entsprechend des TS "tx_organizer_notice" und hat eine Spalte "date" die eine Database Relation ist. Erzeuge ich nun mit dem add-Wizard ein neues Date so möchte ich, dass es in dem Sysordner mit der ID=14 gespeichert wird. Aber es will nicht...

Natürlich könnte ich in der tca.php die pid von Hand eintragen aber ich finde diese Lösung mehr als unelegant. Hat schon jemand raus, wie das per TypoScript geht?

Viele Grüße

nomawie ·

soooo...
da ich anscheinend der erste bin, der seine Wizard Daten gerne sortiert hätte hab ich mal den Quellcode von Typo durchsucht und einen kleinen Mod geschrieben so dass es nun funktioniert.

Ersetze einfach in der typo3/wizard_add.php die Zeilen

			// Set [params][pid]
		 if (substr($this->P['params']['pid'],0,3)=='###' && substr($this->P['params']['pid'],-3)=='###')	{
			$this->pid = intval($TSconfig['_'.substr($this->P['params']['pid'],3,-3)]);
		} else $this->pid = intval($this->P['params']['pid']);

durch

			// Set [params][pid]
		if(isset($TSconfig['wizard']['pid'])){
			$this->pid = $TSconfig['wizard']['pid'];
		}
		else if (substr($this->P['params']['pid'],0,3)=='###' && substr($this->P['params']['pid'],-3)=='###')	{
			$this->pid = intval($TSconfig['_'.substr($this->P['params']['pid'],3,-3)]);
		} else $this->pid = intval($this->P['params']['pid']);

und schon kann man mit folgendem Code den Sysordner angeben

TCEFORM.tx_extension.wizard{
 pid = 27
}
Dander ·

hi,

ist natürlich auch nicht der schönste weg 😉
ich arbeite in einer extension mit ###PAGE_TSCONFIG_ID###
und es funktioniert eigentlich gut, nur, wenn ich nicht irre
nur bei select feldern.

viele Grüße