Zum Inhalt springen

Frontend-Plugin: Nicht Datenbank sondern Typo3 Triggering möglich?

Erstellt am 25. März 2007 · 1 Antwort · letzte Antwort am 26. März 2007

Tags: Frage

Unbekannter Benutzer ·

Hallo,
hat man eine Möglichkeit, Daten im Backend automatisch vor dem Speichern zu manipulieren? (Ich weiss nicht, nach welchen Schlagworten ich suchen soll, habe zwar viel ausprobiert, aber irgendwie nicht den Einstieg gefunden)

Diese Anforderung könnte man zwar mit dem Triggering der MySql lösen, ich habe jedoch die Version 4 und somit nicht diese Möglichkeit und es wäre schön, wenn alles in Typo3 gelöst werden könnte.

Warum ich darüber nachdenke? Wir wollen eine Seite mit Kochrezepten in türkischer und deutscher Sprache auf die Beine stellen. Unser Zielkreis sind neben denen, die die eine oder andere Sprache beherrschen, auch diejenigen, die die andere Sprache noch nicht perfekt beherrschen.

Heute Nacht fiel mir ein, dass die Suche Probleme bereiten könnte:
denn V wird beispielsweise als w im Türkischen gesprochen,
das weiche G mit Häkchen oben ist auf der deutschen Tastatur nicht verfügbar
das T hört sich manchmal wie ein D an ...etc.
Die türkischen Buchstaben auf der Seite für die Suche anzubieten ist nicht die Lösung meines Gedankenganges.

Meine Lösung könnte so aussehen, dass in Feldern, die zur Suche herangezogen werden (Zutatname, Kategorie, Rezeptbezeichnung, Rezeptkategorie ...) z.B. das Wort Zwiebel = Soan > SOGAN und Olivenöl = Zeytinya1 > SEYTINYAGI direkt bei Click auf Speichern im Backend in ein separates Feld automatisch umgesetzt wird.

Geht das? Wenn ja, wo sollte ich nachschlagen?

Gruss Mensch

Unbekannter Benutzer · · Beste Antwort

Hallo nochmal,
einen winzigen Schritt bin ich schon weiter 😢 Habe versucht einen Ansatz mit EVAL zu finden. Folgendes klappt schon mal: Der Eintrag in einem Text-Feld wird beim Speichern umgewandelt.

An allen Ecken und Kanten habe ich Mankos :o
1. Wie kann ich jetzt den aktuellen (noch nicht gespeicherten) Inhalt eines Feldes innerhalb des gleichens Formulars in der class.txt_test_mapping.php abgreifen?
2. Wie kann ich den jeweiligen Tabellennamen in der class.txt_test_mapping.php abgreifen?

Bisherige Einstellungen:
1. Bekanntgabe der class.txt_test_mapping.php in der ext_localconf.php

<?php
if (!defined ('TYPO3_MODE')) 	die ('Access denied.');
t3lib_extMgm::addUserTSConfig('
	options.saveDocNew.tx_test_test=1
');
t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_test_pi1.php','_pi1','includeLib',1);
$TYPO3_CONF_VARS['SC_OPTIONS']['tce']['formevals']['tx_test_mapping'] = 'EXT:test/class.tx_test_mapping.php';
?>

2. Erweiterung um eval => tx_test_mapping bei dem jeweiligen Feld in der TCA.php

<?php
if (!defined ('TYPO3_MODE')) 	die ('Access denied.');

$TCA["tx_test_test"] = array (
	"ctrl" => $TCA["tx_test_test"]["ctrl"],
	"interface" => array (
		"showRecordFieldList" => "inhalt,f1,f2"
	),
	"feInterface" => $TCA["tx_test_test"]["feInterface"],
	"columns" => array (
		"inhalt" => Array (		
			"exclude" => 0,		
			"label" => "LLL:EXT:test/locallang_db.xml:tx_test_test.inhalt",		
			"config" => Array (
				"type" => "input",	
				"size" => "30",
			)
		),
		"f1" => Array (		
			"exclude" => 0,		
			"label" => "LLL:EXT:test/locallang_db.xml:tx_test_test.f1",		
			"config" => Array (
				"type" => "input",	
				"size" => "10",	
				"max" => "10",	
				"eval" => "tx_test_mapping",
			)
		),
	),
	"types" => array (
		"0" => array("showitem" => "inhalt;;;;1-1-1, f1")
	),
	"palettes" => array (
		"1" => array("showitem" => "")
	)
);
?>

3. class.txt_test_mapping.php

<?php
class tx_test_mapping {
  function evaluateFieldValue($value, $is_in, &$set) {
    return $this->Ersetzen($value);
  }
  
  function Ersetzen ($Ivalue){
    $rgw=$Ivalue;
    return 'ABC '.$rgw;
  }
}
?>

Gruss Mensch