[TYPO3-german] tt_news eigen php-code im template

Manfred Mirsch manfred.mirsch at hs-esslingen.de
Mon Nov 24 09:38:53 CET 2008


Hier noch ein Nachtrag, da ich gerade ein ähnliches Problem hatte.

Ich bin den Weg über eine eigene Extension gegangen, um Felder 
hinzuzufügen. Der Vorteil ist, dass ich über den Hook von tt_news 
beliebige Aktionen ausführen kann.
In meinem Fall habe ich ein Feld für einen Einleitungstext angelegt, das 
in der Listenansicht angezeigt werden soll. Der Grund ist, dass in der 
Listenansicht immer wieder Probleme auftraten, wenn ein Redakteur 
Formatierungen eigefügt hatte und diese z.B. nach 300 Zeichen 
abgeschnitten wurden. Einmal hatte wir die Situation, dass der gesamte 
Seiteninhalt unterhalb des entsprechenden News-Eintrags in bold 
dargestellt war, weil das Schliesstag </b> abgeschnitten wurde.

Dazu habe ich mit dem Kickstarter eine Extension angelegt, die das 
entsprechenden Feld zur Tabelle tt_news hinzufügt.

In der Datei 'ext_tables.php' habe ich dann die folgenden zwei Zeilen 
hinzugefügt, damit das Feld "tx_tvfk_einleitung" im Backend angezeigt wird:
t3lib_extMgm::addToAllTCAtypes("tt_news","tx_tvfk_einleitung;;;richtext[link];1-1-1");
$TCA['tt_news']['types']['0']['showitem'] = 
'title;;1;;,type,editlock,datetime;;2;;1-1-1,author;;3;;,short,tx_tvfk_einleitung;;;richtext[link];1-1-1",bodytext;;4;richtext:rte_transform[flag=rte_enabled|mode=ts];4-4-4,no_auto_pb,--div--;Relations,category,image;;;;1-1-1,imagecaption;;5;;,links;;;;2-2-2,related;;;;3-3-3,news_files;;;;4-4-4';

Die Datei 'ext_localconf.php' habe ich folgendermassen erstellt damit 
meine PHP-Methode zur Behandlung des Markers "###EINLEITUNG###" 
aufgerufen wird:
<?php
if (!defined ('TYPO3_MODE'))     die ('Access denied.');
if (TYPO3_MODE == 'FE')    {
     require_once(t3lib_extMgm::extPath('tvfk').'user_ttnewsfield.php');
}
//registering for hook
$TYPO3_CONF_VARS['EXTCONF']['tt_news']['extraItemMarkerHook'][] = 
'user_ttnewsfield';
?>

Hier nun schließlich die Datei 'user_ttnewsfield.php', welche für die 
Behandlung des Feldes 'tx_tvfk_einleitung' im Frontend sorgt:
<?php
class user_ttnewsfield {
     function extraItemMarkerProcessor($markerArray, $row, $lConf, &$pObj) {
       if (strlen($row['tx_tvfk_einleitung'])>0) {
         $val = $row['tx_tvfk_einleitung'];
         if($pObj->config['code'] == 'LIST' || $pObj->config['code'] == 
'LATEST'){
           $val = strip_tags($val,'<a>');
          	$val = eregi_replace("\n","<br/>",$val);
          	$crop = wordwrap($val, 300,"\n");
          	$crop = substr($crop,0,strpos($crop, "\n"));
          	if (strlen($crop)<strlen($val) && strlen($crop)>0) {
             $val = $crop." ...";
           }
           $markerArray['###EINLEITUNG###'] = '<div 
class="news_einleitung">'.$val.'</div>';
         } else {
           $markerArray['###EINLEITUNG###'] = '<div 
class="news_einleitung_single">'.$val.'</div>';
         }
       } else {
         $markerArray['###EINLEITUNG###'] = '';
       }
       return $markerArray;
     }
}
?>



> Hallo Peter,
> 
> es funktioniert einwandfrei. Auch mit losen php-dateien, ich muss nur bei includelibs den pfad angeben und das wars. Vielen Dank. Du hast mir ein paar deprimierenden Stunden erspart :-)
> 
>> -----Ursprüngliche Nachricht-----
>> Von: typo3-german-bounces at lists.netfielders.de [mailto:typo3-german-
>> bounces at lists.netfielders.de] Im Auftrag von Rene? Kockisch
>> Gesendet: Mittwoch, 19. November 2008 12:26
>> An: typo3-german at lists.netfielders.de
>> Betreff: Re: [TYPO3-german] tt_news eigen php-code im template
>>
>> BigSebek schrieb:
>>> Hi,
>>>
>>> noch ein Problemchen.
>>>
>>> Ich habe im Template einen Marker namens ###My_Suche### eingebaut. An
>> diesen möchte ich nun meinen php-code anhängen. Ich schaff es einfach
>> nicht diesen Marker anzusprechen. Meine Versuche waren wie
>>> plugin.tt_news.altMainMarkers.My_Suche
>>>
>> includeLibs.displayMySuche = EXT:rk_mediathek/displayMySuche.php
>> plugin.tt_news.itemMarkerArrayFunc = user_displayMySuche
>>
>> im Temp einfügen. Dann ne Ext bauen und darin die entsprechende php
>> Datei erzeugen.
>>
>> In diese Datei kommt dann folgendes rein:
>>
>> function user_displayMySuche($markerArray, $conf){
>>    $pageID = $GLOBALS['TSFE']->id; //bsp für Zugriff auf Array
>>
>>    $markerArray['###My_Suche###']   = 'Hallo Welt :-) ';
>>    return $markerArray;
>> }
>>
>> So und das war es dann auch schon.
>>
>> Gruß
>> René
>>
>>
>>>> ----------------------------------
>>>> Kosys - Kockisch ITK Systems and Services
>>>> Inh. Kockisch René
>>>>
>>>> Görlitzer Str. 22
>>>> 03046 Cottbus
>>>>
>>>> Tel.: 0355/ 430 903 81
>>>> Fax.: 0355/ 430 903 84
>>>>
>>>> Internet: www.kosys-cottbus.de
>>>> E-Mail: rene-kocki... at kosys-cottbus.de
>>>> _______________________________________________
>>>> TYPO3-german mailing list
>>>> TYPO3-german at lists.netfielders.de
>>>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.netfielders.de
>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
> 


More information about the TYPO3-german mailing list