Ich würde dir erstmal raten, zum Erweiterungsgenerator [develop] zu greifen und dann die Anfangsdaten zu generieren.
----
Ich habe mal die Mitgliedertabelle (tl_member) um ein Feld erweitert. Dann sollte das Feld automatisch generiert werden (aus Vor- und Nachname), wenn keine Eingabe erfolgte:
Datei dca/tl_member.php
PHP-Code:
<?php
/**
* Contao Open Source CMS
*
* Copyright (C) 2005-2012 Leo Feyer
*
* … copyright etc.
*/
$GLOBALS['TL_DCA']['tl_member']['fields']['participant'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['participant'],
'exclude' => true,
'search' => true,
'inputType' => 'text',
'eval' => array('feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'tl_class'=>'long'),
'save_callback' => array(array('tl_member_participant', 'saveParticipant'))
);
/**
* Class tl_member_participant
*
* Provide miscellaneous methods that are used by the data configuration array.
* …
*/
class tl_member_participant extends tl_member
{
/**
* Initialize the system
*/
public function __construct()
{
parent::__construct();
}
/**
* Generate participant field if there is no input
*/
public function saveParticipant($varValue, DataContainer $dc)
{
// Get the member fields
$objMember = $this->Database->prepare("SELECT * FROM tl_member WHERE id=?")
->limit(1)
->execute($dc->id);
// Set variables
$firstname = $objMember->firstname;
$lastname = $objMember->lastname;
if(!$varValue && $firstname && $lastname)
{
// Generate 'participant' from given name
return $lastname . ', ' . $firstname;
}
else
{
return $varValue;
}
}
}
Ich habe das mal gekürzt (hoffentlich nicht zu viel )
Wichtig ist das save_callback. Die Funktion wird aufgerufen, bevor das Feld gespeichert wird.
Du brauchst das Feld "Seitentitel" nicht mehr zu erstellen. Deswegen fällt bei dir das
"$GLOBALS['TL_DCA']['tl_member']['fields']['participant'] = array( ... )"
weg. Du solltest eher schreiben: $GLOBALS['TL_DCA']['tl_page']['fields']['pageTitle']['save_callback'] = 'DIE FUNKTION NUN AUFRUFEN, SIEHE OBEN';
Nicht getestet!
(Und ich glaube, dann brauchst du deinen eigenen InsertTag nicht mehr.)
Lesezeichen