Zum Inhalt springen

Tabelle fe_usere erweitern

Erstellt am 4. Januar 2008 · 4 Antworten · letzte Antwort am 19. November 2009

Tags: Frage

scary_movie ·

Hallo Community,

ich möchte gern die Tabelle fe_user erweitern. Hierzu habe ich mir eine kleine Extension geschrieben welche mir die fehlenden Eingabefelder ergänzt. Allerdings wollte ich gern das meine neuen Eingaben über "Reiter" erreichbar sind.
Leider erscheinen überhaupt keine Reiter im BE, beim FE User anlegen.
Hier einmal ein bsp. Code, welchen ich bisher in der ext_tables.php habe :

<?php
if (!defined ('TYPO3_MODE')) 	die ('Access denied.');
$tempColumns = Array (
	"tx_jh_feld1" => Array (		
		"exclude" => 1,		
		"label" => "LLL:EXT:jh/locallang_db.xml:fe_users.tx_jh_feld1",		
		"config" => Array (
			"type" => "input",	
			"size" => "5",	
			"max" => "5",	
			"eval" => "trim",
		)
	),
);


t3lib_div::loadTCA("fe_users");
t3lib_extMgm::addTCAcolumns("fe_users",$tempColumns,1);
t3lib_extMgm::addToAllTCAtypes("fe_users","--div--;Basis,tx_jh_feld1;;;;1-1-1");
?>

Hoffe das mir jemand einen Tipp geben kann.

ÁndreMansfeld ·

Da möchte ich mich mal ranhängen :-)
Ich habe das gleiche vor und habe festgestellt, dass meine zusätzlichen Felder aus meiner eigenen Extension in der FE USER REGISTRATION unter DIRECT MAIL angezeigt werden :-(.
Es würde mir schon reichen, wenn die Felder in den persönlichen Daten auftauchen würden. Ich werde aber aus der TCA (sr_feuser_register) nicht schlau, denn die bindet folgendes ein:

<?php

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

$TCA['fe_groups_language_overlay'] = Array (
	'ctrl' => $TCA['fe_groups_language_overlay']['ctrl'],
	'interface' => Array (
		'showRecordFieldList' => 'hidden,fe_group,sys_language_uid,title'
	),
	'columns' => Array (
		'hidden' => Array (		
			'exclude' => 0,	
			'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
			'config' => Array (
				'type' => 'check',
				'default' => '0'
			)
		),
		'fe_group' => Array (
			'exclude' => 0,
			'label' => 'LLL:EXT:cms/locallang_tca.xml:fe_groups',
			'config' => Array (
				'type' => 'select',	
				'foreign_table' => 'fe_groups'
			)
		),
		'sys_language_uid' => Array (
			'exclude' => 0,
			'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
			'config' => Array (
				'type' => 'select',
				'foreign_table' => 'sys_language',
				'foreign_table_where' => 'ORDER BY sys_language.title'
			)
		),
		'title' => Array (		
			'exclude' => 0,		
			'label' => 'LLL:EXT:sr_feuser_register/locallang_db.xml:fe_groups_language_overlay.title',
			'config' => Array (
				'type' => 'input',	
				'size' => '20',
				'max' => '20',
				'eval' => 'trim,required',
			)
		),
	),
	'types' => Array (
		'0' => Array( 'showitem' => 'hidden;;;;1-1-1, fe_group, sys_language_uid, title')
	)
);

?>

Ich sehe da keinen Zusammenhang mit der Ansicht im BE :-(.
Ich nehme an, dass Zeile 48 dafür verantwortlich ist, wie es im BE aussieht, aber ??? , too much.. :-). Könnte es sein, dass fe_groups eine Untergruppe bildet, wenn ja, dann finde ich aber die Konfigurationsdatei dafür nicht.

Ich habe in der ext_tables.php folgendes entdeckt:

t3lib_extMgm::addTCAcolumns('fe_users',$tempCols);
	$TCA['fe_users']['feInterface']['fe_admin_fieldList'].=',module_sys_dmail_html';
	t3lib_extMgm::addToAllTCATypes('fe_users','--div--;Direct mail,module_sys_dmail_html;;;;1-1-1');

&tempCols sind meine neuen Felder :-)
ich hatte schon daran gedacht es mit einem Umschreiben in

t3lib_extMgm::addTCAcolumns('fe_users',$tempCols);
	$TCA['fe_users']['feInterface']['fe_admin_fieldList'].=',fe_user'; //<- anstatt 'module_sys_dmail_html'
	t3lib_extMgm::addToAllTCATypes('fe_users','--div--;Direct mail,module_sys_dmail_html;;;;1-1-1'); // aber hier hörts dann auf...

Welche Datei bzw. Zeile ist denn für die Ausgabe im BE verantwortlich?
Oder wo genau steht denn jetzt die Zeile die dafür verantwortlich ist, dass meine Felder unter dem DIRECT MAIL Reiter erscheint?

Lieben Gruss
Andreas

T0m ·

Hallo Andreas

ich hab zwar keine direkte Loesung, wie ich die Positionierung angeben kann, aber da das ganze PHP ist, kannst du an den Arrays schrauben. In meinem konkreten Fall wollt ich die Handy Nummer nach der Fax Nummer anzeigen. Dafuer such ich nach der Faxnummer und ersetz des ganze durch die Faxnummer und der Handynummer.
Die letzte Zeile in deiner ext_tables.php Datei benoetigst du dann nicht mehr, da diese das Feld am Ende hinzufuegt (also hinter der Direct Mail checkbox).
(Wenn des Feld mehr als einmal in der Liste ist, kann er keine Werte speichern und zeigt auch vorhandene nicht an)

Ich hoff ich konnt damit helfen, wenn doch jemand ne andre Loesung kennt wuerd ich mich freuen, wenn diese gepostet wird.

Vielen Dank und Gruss
Tom

Hier der Schnipsel aus der ext_tables.php:

t3lib_div::loadTCA('fe_users');

//Some code to put field after fax number field
$TCA['fe_users']['interface']['showRecordFieldList'] = str_replace('fax,', 'fax, tx_newfieldext_cellphone,', $TCA['fe_users']['interface']['showRecordFieldList']);

$TCA['fe_users']['feInterface']['fe_admin_fieldList'] = str_replace('fax,', 'fax, tx_newfieldext_cellphone,', $TCA['fe_users']['feInterface']['fe_admin_fieldList']);

$TCA['fe_users']['types']['0']['showitem'] = str_replace('fax,', 'fax, tx_tx_newfieldext_cellphone,', $TCA['fe_users']['types']['0']['showitem']);


t3lib_div::loadTCA('fe_users');
t3lib_extMgm::addTCAcolumns('fe_users',$tempColumns,1);
InforMedic ·

@scary_movie: mach mal aus exclude = 1 --> 0!!!

ÁndreMansfeld schrieb
t3lib_extMgm::addTCAcolumns('fe_users',$tempCols);
	$TCA['fe_users']['feInterface']['fe_admin_fieldList'].=',fe_user'; //<- anstatt 'module_sys_dmail_html'
	t3lib_extMgm::addToAllTCATypes('fe_users','--div--;Direct mail,module_sys_dmail_html;;;;1-1-1'); // aber hier hörts dann auf...

Welche Datei bzw. Zeile ist denn für die Ausgabe im BE verantwortlich?
Oder wo genau steht denn jetzt die Zeile die dafür verantwortlich ist, dass meine Felder unter dem DIRECT MAIL Reiter erscheint?

Lieben Gruss
Andreas

o.O da dieses Problem mich genauso betrifft, habe ich mich mal auf die recherche begeben.

Zuerst ein Blick in die t3_doc_core_api:
https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Index.html Abschnitt "Style pointers in the 'types' configuration" gab mir zumindest schonmal eine Erläuterung zur verwendeten Syntax.

Weiters in der T3 API (http://typo3.org/fileadmin/typo3api-4.0.0/db/d23/classt3lib__extMgm.html#65c4e9eb4a9bc69868f8a9449640bd10) konnte ich dann feststellen was es mit

t3lib_extMgm::addToAllTCATypes('fe_users','--div--;Direct mail,module_sys_dmail_html;;;;1-1-1');

auf sich hat.

Hier die deutsche Beschreibung dazu: http://typo3-blog.net/tutorials/news/addtoalltcatypes.html

Der erste Parameter ist die betroffene Tabelle:
'fe_useres'

Der zweite Parameter ist der String des neu hinzuzufügenden Felds, welches wiederrum verschiedene Eigenschaften haben kann.

Diese sind innerhalb der Hochkommas (') z.B. 'fe_users' oder bei dir
'--div--;Direct mail,module_sys_dmail_html;;;;1-1-1' mit Semikolon (😉 getrennt angeben.

Der dritte Parameter betrifft die Typen (Standard, Shortcut etc.) der Tabelle in welcher die Felder/Tabs auftauchen dürfen (leer = alle)

Der vierte Parameter gibt die Position an =) here we go

D.h.: als erstes sorgst du dafür das deine Felder der "fe_admin_fieldList" von FE_Users hinzugefügt wird (nicht mit $TCA['fe_users']['fe_Inter.. )

Das machst du mit dem dritten Parameter in addTCAcolums
t3lib_extMgm::addTCAcolumns('fe_users',$tempCols, 1);

Dann solltest Du das in DEINER Extension generierte "addToAllTCATypes()" verwenden und nicht das direct mail von sr_feuser_register

Hier die Erklärung zum 2. Parameter anhand von Direct Mail:

t3lib_extMgm::addToAllTCATypes('fe_users',[b]'--div--;Direct mail,module_sys_dmail_html;;;;1-1-1'[/b], '', 'after:usergroup');

--div--; = ist wohl der Wrap für den neuen Tab
Direct mail, = ist der Name für den neuen Tab
module_sys_dmail_html; = ist der Datenbankfeldname des neu hinzuzufügenden Feldes
;;;1-1-1' = TCA config optionen (border, color etc.)

Der vierte Parameter 'after:usergroup' sorgt
- bei einem neuen Tab
dafür das der Tab nach "General" angelegt wird
- ohne einem neuen Tab
dafür dass das Feld hinter "Groups" im General Tab angelegt wird

Ein weiters Beispiel habe ich im deutschen t3 MailArchiv entdeckt:
http://www.mail-archive.com/typo3-german@lists.netfielders.de/msg36823.html

Wird Zeit für ein HowTo!!! :p

Beste Grüße