Hallo,
ich habe den Kalender um einige Felder erweitert. Unter anderem war die Anforderung ein "KurzTeaser". Das Feld dafür wird autoamtisch im Backend (per savecallback) bei Änderung des Teaser gefüllt. Ähnliches wäre auch bei Artikeln machbar (für Artikel habe ich die Möglichkeit eines Teaserbildes eingefügt).
hier die DCA-Konfiguration für den Kurzteaser als Readonly-Feld
Code:
'shortTeaser' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['shortTeaser'],
'exclude' => true,
'inputType' => 'text',
'eval' => array('maxlength'=>255, 'insertTag'=>true, 'tl_class'=>'w50', 'style'=> '" readonly="readonly'),
'save_callback' => array
(
array('tl_vdei_calendar', 'updateshortTeaser')
)
),
hier die Call-Back-Funktion, welche den Teaser nach 190 Zeichen (aber nicht innerhalb eines Wortes abschneidet.
Code:
/**
* Class tl_vdei_calendar
*
* Provide miscellaneous methods that are used by the data configuration array.
*/
class tl_vdei_calendar extends Backend
{
/**
* Gernerate or update a shortTeaser if it has not been set yet
* @param mixed
* @param object
* @return string
*/
public function updateshortTeaser($varValue, DataContainer $dc)
{
// Teaser lesen
$objTeaser = $this->Database->prepare("SELECT teaser FROM tl_calendar_events WHERE id=?")
->limit(1)
->execute($dc->id);
$varshortValue = substr(strip_tags($objTeaser->teaser), 0, strpos(wordwrap(strip_tags($objTeaser->teaser), 190, "*!U-M-B-R-U-C-H*"), "*!U-M-B-R-U-C-H*"));
$varshortValue .= '...';
return $varshortValue;
}
}
Gruß Frank
Lesezeichen