Zum Inhalt springen

Eigene CEs basteln mit HOOK

Erstellt am 12. August 2009 · 3 Antworten · letzte Antwort am 12. August 2009

Tags: Frage

froemken ·

Hallo zusammen,

hab noch nie einen Hook verwendet und dachte ein neues CE zu basteln wär mal ein guter Start. Naja...schein ja doch was komplexer zu sein.

Meinen Hook habe ich hier gefunden:
class.tslib_content.php

Dort gibt es unter den ganzen CEs folgenden Code:

if($name && is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClassDefault']))    {
	foreach($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClassDefault'] as $classData)    {
		$hookObject = &t3lib_div::getUserObj($classData);

		if(!($hookObject instanceof tslib_content_cObjGetSingleHook)) {
			throw new UnexpectedValueException('$hookObject must implement interface tslib_content_cObjGetSingleHook', 1195043731);
		}
		/* @var $hookObject tslib_content_cObjGetSingleHook */
		$content .= $hookObject->getSingleContentObject($name, (array) $conf, $TSkey, $this);
	}
}

Demnach muss in der ext_localconf.php folgendes stehen:

$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClassDefault'][] = 'EXT:sftest/class.tx_sftest_myfunc.php:tx_sftest_myfunc';

In meiner class.tx_sftest_myfunc.php steht:

require_once(PATH_tslib . 'interfaces/interface.tslib_content_cobjgetsinglehook.php');

class tx_sftest_myfunc implements tslib_content_cObjGetSingleHook {
	function getSingleContentObject($name, array $conf, $TSkey, $this) {
		return 'Hallo';
	}
}

Eigentlich dachte ich, ich wär damit fertig. Wenn ich meinen Code richtig interpretiere müsste auch ein:

lib.sftest = cObject
lib.sftest.10 = TEXT
lib.sftest.10.value = Hallo
lib.sftest.20 = TRALLALA

TRALLALA kann in diesem Falle durch alles ersetzt werden, da ich das in meiner Funktion nicht abfange.

Ich hab sogar an das interface gedacht...was fehlt ihm?!

Stefan

Diesen Code binde ich mit der Extension tscobj auf meine Page ein.

just2b ·

willst du dir ein eigenes content element oder ein eigenes cObject bauen?

weil ersteres geht auch bequem übern kickstarter ...

froemken ·

Hauptaugenmerkmal ist hier nur der Lerneffekt für die Nutzung eines Hooks. In meinem Fall will ich ein cObject bauen. Diese TEXT, IMAGE, HTML, COA-Teile halt.
In meiner Übungsumgebung möchte ich im Endeffekt ein cObject mit dem Namen FROEMMI haben. Was es macht? Keine Ahnung...völlig egal. Text ausgeben, Text fett ausgeben. Wie schon gesagt...es geht um den Lerneffekt. Hauptsache irgendwas aus meiner Funktion wird ausgegeben. In meinem Script steht derzeit "return 'Hallo';"

Danke für den Tipp bzgl. CE. Du hast natürlich Recht: CE und cObject ist was anderes. Hab auch grad mal ein CE erstellt und funktioniert auf Anhieb. Aber das nur nebenbei...hier geht es um ein neues cObject per Hook einzubinden.

Stefan