Zum Inhalt springen

tt_news mittels hook erweitern

Erstellt am 7. April 2008 · 5 Antworten · letzte Antwort am 8. April 2008

Tags: tt_news, PHP, Frage

greenbanana ·

Hallo zusammen

Ich wollte die News so erweitern, dass man jeder News-Kategorei eine CSS-Klasse mitgeben kann, die dann eine individulle Darstellung der einzelnen Beiträge in der List- und Latest-Ansicht ermöglicht.

Ausgabe in der Art (Pseudo-HTML):

<div class="cat1">Newstext</div>
<div class="cat2">Newstext</div>
<div class="cat1">Newstext</div>

Das ganze wollt ich sauber mittels Hooks machen, damit ein Update der News möglich ist.

Nach dem erstellen der Extension erhalte ich aber die Fehlermeldung:"
Warning: Cannot modify header information - headers already sent by (output started at ...typo3conf/ext/dgc_newsext/pi1/class.tx_dgc_newsext.php:15) in ...typo3/sysext/cms/tslib/class.tslib_fe.php on line 2952"

Was ich bis jetz gemacht habe:
- Extension angelegt (dgc_newsext)
- class.tx_newsext.php angeleft
- ext_localconf.php angelegt

class.tx_newsext.php

<?php
class tx_dgc_newsext{
	function extraItemMarkerProcessor($markerArray, $row, $lConf, $obj) {
		$this->pObj=&$pObj;
		$markerArray['###NEWS_CSS###'] = 'xx';
    	return $markerArray;
	} 	
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dgc_newsext/pi1/class.tx_dgc_newsext.php']){
    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dgc_newsext/pi1/class.tx_dgc_newsext.php']);
}
?>

ext_localconf.php

<?php
$TYPO3_CONF_VARS['EXTCONF']['tt_news']['extraItemMarkerHook'][] = 'EXT:dgc_newsext/pi1/class.tx_dgc_newsext.php:tx_dgc_newsext'; 
?>

Kann mir jemand sagen was ich falsch gemacht habe?

Besten Dank
GreenBanana

jenses ·
greenbanana schrieb

class.tx_newsext.php

<?php
class tx_dgc_newsext{
	function extraItemMarkerProcessor($markerArray, $row, $lConf, $obj) {
		$this->pObj=&$pObj;

Zeile 4 ist Quatsch (wo bitteschön wird &$pObj definiert ?) und führt zu einer Fehlermeldung.
Diese wiederum führt zur altbekannten Warning: Cannot modify header information - headers already sent by -Warnung.

Tip: benutze öfter mal ein debug(), z.B. debug($this->pObj,'$this->pObj');
😉

greenbanana ·

Halllo Jenses

Vielen Dank für deine Antwort. Am Aufruf "$this->pObj=&$pObj;" kann es leider nicht liegen. Die Fehlermeldung erscheint trotz dem Entfernen dieser Zeile:

<?php
class tx_dgc_newsext{
	function extraItemMarkerProcessor($markerArray, $row, $lConf, $obj) {
		$markerArray['###NEWS_CSS###'] = 'xx';
    	return $markerArray;
	} 	
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dgc_newsext/pi1/class.tx_dgc_newsext.php'])    {
    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dgc_newsext/pi1/class.tx_dgc_newsext.php']);
}
?>

Was ich nicht verstehe ist, dass im Grunde ja alles funktioniert. Der Marker ###NEWS_CSS### wird mit "xx" gefüllt und ausgegeben.

Es ist ja nicht zwingend, dass eine bestehende Funktion erweitert wird, oder?

jenses ·
greenbanana schrieb

Warning: Cannot modify header information - headers already sent by (output started at ...typo3conf/ext/dgc_newsext/pi1/class.tx_dgc_newsext.php:15) ...

Wo und was steht denn eigentlich in Zeile 15 ???

greenbanana ·

Ja, dass ist ja eben das "gespenstische"... das File (class.tx_newsext.php) hat nur 11 Zeilen (im Moment). Wollte zum testen ja nur mal die "xx" einem Marker in tt_news übergeben.

Und es ist also auch nicht so, dass nach dem ?> noch irgendwelche leeren Zeilen drin sind.

greenbanana ·

...und es hatte trotzdem noch eine Leerzeile. #angry#

Damit hätte sich mein Problem gelöst. Ich danke Dir viel mal für Deine Hilfe.
Gruss