---
title: "Verständnisprobleme tt_news Hook um eigene Extension"
url: "https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Extbase","Frage","tt_news"]
created: "2011-02-06"
last_reply: "2013-04-25"
replies: 6
solved: false
page: 1
pages: 1
lang: "de"
---

# Verständnisprobleme tt_news Hook um eigene Extension

Extensions › Entwicklung · 6 Antworten · gestartet 2011-02-06

## Eröffnungsbeitrag

**EnzephaloN** · 2011-02-06 · [Beitrag #1](https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension/1)

Hallo

Ich stehe gerade ein wenig im Wald und brauche ein wenig Hilfe.
Ich habe eine eigene Extension in extbase geschrieben. Diese hat zur Aufgabe Listenansicht und Detailansicht zu liefern.

Nun möchte ich, daß in tt_news ausgewählte Detailansichten eingebunden werden können.

Ich schrieb eine klassische Extension, welche mir nun im tt_news backend das passende zusätzliche Feld anzeigt, mit dem ich Datensätze meiner Extension zuordnen kann.

Nun muß ich noch das neue markerArray mit den Daten füllen. Dazu habe ich folgendes getan:

ext_localconf.php:

```php
if (!defined ('TYPO3_MODE')) {
	die ('Access denied.');
}
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['extraItemMarkerHook'][] = 'EXT:tt_news_psoabilling/tt_news_psoabilling.php:tt_news_psoabilling';
```

ext_tables.php:

```php
<?php
if (!defined ('TYPO3_MODE')) {
	die ('Access denied.');
}
$tempColumns = array (
	'tx_ttnewspsoabilling_psoabilling_band' => array (		
		'exclude' => 0,		
		'label' => 'LLL:EXT:tt_news_psoabilling/locallang_db.xml:tt_news.tx_ttnewspsoabilling_psoabilling_band',		
		'config' => array (
			'type' => 'group',	
			'internal_type' => 'db',	
			'allowed' => 'tx_psoabilling_domain_model_band',
			'size' => 5,	
			'minitems' => 0,
			'maxitems' => 5,
		)
	),
);
t3lib_div::loadTCA('tt_news');
t3lib_extMgm::addTCAcolumns('tt_news',$tempColumns,1);
t3lib_extMgm::addToAllTCAtypes('tt_news','tx_ttnewspsoabilling_psoabilling_band;;;;1-1-1','0','after:bodytext');
require_once(t3lib_extMgm::extPath('tt_news_psoabilling') . 'tt_news_psoabilling.php');
?>
```

tt_news_psoabilling.php:

```php
<?
class tt_news_psoabilling{

  function extraItemMarkerProcessor($markerArray,$row,$lConf,$obj){
    
    $thisbands=$row['tx_ttnewspsoabilling_psoabilling_band'];
    
    $content="";
	$selectConf = array();
	$selectConf['selectFields'] = '*';
	$selectConf['fromTable'] = 'tx_psoabilling_domain_model_band';
              $selectConf['where']  = 'tx_psoabilling_domain_model_band.deleted=0 AND tx_psoabilling_domain_model_band.t3ver_state<=0 AND tx_psoabilling_domain_model_band.hidden=0';
	$selectConf['where'] .= 'tx_psoabilling_domain_model_band.uid IN $thisbands';
	$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($selectConf['selectFields'], $selectConf['fromTable'], $selectConf['where']);
	$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
	$GLOBALS['TYPO3_DB']->sql_free_result($res);
    
    foreach($row as $band=>$value){
        $content.="HIER WIRD DAS TEMPLATE ZUSAMMENGESTRICKT";
    }
    $markerArray['###BANDS###'] = $this->$obj->stdWrap($content);
    return $markerArray;
  }
}
?>
```

Nun was soll ich sagen: Es wird derzeit noch nichts angezeigt.

1.) stimmt es, daß in der localconf "extraItemMarkerHook" eingetragen, in der Klasse aber "extraItemMarkerProcessor" etabliert wird?
2.) kann ich eigentlich aus dieser klassischen Extension auch die Controller aus meiner Extbase-Extension aufrufen (indem ich die Klasse als Instanz meines Repositories deklariere?)?
3.) oder gehe ich das alles völlig falsch an?

optional:
4.) könnte ich nicht auch meiner ExtbaseExtension noch hinzufügen, daß sie zusätzlich auch noch ein Hook für tt_news bereitstellt? Da hier aber TCA und exttables.php völlig anders aufgebaut sind wie bei klassischen Extensions, ist mir unklar wie&wo ich das definieren soll.

Wäre toll, wenn mir jemand hier weiterhelfen könnte!

Grüße
EnzephaloN

## Antworten

### [#2](https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension/2) · EnzephaloN · 2011-02-06

Okay, ich bin ein Stück weiter gekommen:
Frage 1 hat sich erübrigt ;-)

Dann habe ich meine Class neu geschrieben:

```php
<?php
class class_newspsoabilling{

  function extraItemMarkerProcessor($markerArray,$row,$lConf,$obj){
    $band = explode(",",$row['tx_ttnewspsoabilling_psoabilling_band']);
    if(t3lib_div::GPvar('L') || (strpos(t3lib_div::getThisUrl(),'/en/')!=FALSE) ) $lang = "en";
      $where = "tx_psoabilling_domain_model_band.hidden = 0";
    foreach($band as $key => $value) { 
        $res=$GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tx_psoabilling_domain_model_band','uid="'. $value . '"',$where); 
        if ($res) {
            $band=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
        }
      $markerArray['###BANDS###'] .= $obj -> $band;
    }
    
    return $markerArray;
  }
}
?>
```

Nun bekomme ich aber den Fehler:

**Fatal error: Call to a member function extraItemMarkerProcessor() on a non-object in /is/htdocs/wp1106888_H2WDP83R7T/www/psoa_cms/typo3conf/ext/tt_news/pi/class.tx_ttnews.php on line 1747**
engezeigt.

Außerdem muß ich ja noch aus den Datensätzen die ich auslese, über die referenzierte Tabellenzeile die Daten abrufen und zusammenstückeln...

Kann mir jemand weiterhelfen?

Grüße
EnzephaloN

### [#3](https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension/3) · EnzephaloN · 2011-02-10

Okay - obige Probleme sind behoben und dieser Teil der Extension läuft! Es lag grob gesagt an den CACHE-files, welche die Änderungen in der Entwicklung nicht übernommen haben und außerdem daran, daß ich den Marker im falschen Template eingesetzt hatte.

Nun aber ein neues Problem!
Ich möchte nun durch diese Extension noch über den extraCodeProcessor eine weitere Ansicht einfügen.
Aufgabe: Singleansicht des letzten Artikels in der richtigen Sprache.
Um es gleich vorweg zu nehmen: Den Weg über LATEST habe ich schon ausprobiert und abgewählt!

```php
<?php
class tx_newsextend{
  function extraCodesProcessor($cObj) {
     $content = '';
     if($cObj->config['code'] == 'FRONTNEWS'){
       $displayedNews = $GLOBALS['TSFE']->displayedNews;
       $GLOBALS['TSFE']->displayedNews = array();
       $content = $cObj->displaySingle();
       $GLOBALS['TSFE']->displayedNews = $displayedNews;

       $selectConf = array();
	   $selectConf['selectFields'] = '*';
	   $selectConf['fromTable'] = 'tt_news';
	   $selectConf['where'] = ' AND tt_news.type NOT IN(1,2)' . $cObj->enableFields; // only real news -> type=0
	   $selectConf['where'] .= ' AND tt_news.pid IN(9)';
	   $selectConf['where'] .= ' AND sys_language_uid = '.$GLOBALS['TSFE']->sys_language_content;
	   $selectConf['orderBy'] = 'tt_news.datetime DESC';
	   $selectConf['limit'] = 1;
	   $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($selectConf['selectFields'], $selectConf['fromTable'], $selectConf['where'], $selectConf['groupBy'], $selectConf['orderBy'], $selectConf['limit']);
	   $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
	   $GLOBALS['TYPO3_DB']->sql_free_result($res);
        $cObj->theCode = 'SINGLE';
        $cObj->tt_news_uid = $row['uid'];
        $content = $cObj->displaySingle();
     }
	 return $content;
  }
}
?>
```

Eigentlich läuft die Klasse ohne Fehler - aber auch ohne Ausgabe! $row ist EMPTY! Warum? Die Abfrage ist doch sauber, oder?

Bitte hier um Hilfe!

Danke
EnzephaloN

### [#4](https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension/4) · EnzephaloN · 2011-02-10

Okay, habs gefunden. Das erste $selectConf[where] darf natürlich nicht mit einem AND anfangen...

EnzephaloN

### [#5](https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension/5) · r0n · 2011-02-22

Hey,

ich habe zur Zeit ein ähnliches Problem.
Wie kann ich den extraItemMarkerProcessor mit meiner in extbase geschriebenen Extension befüllen?
Hab es bis jetzt nicht hinbekommen.

Wenn ich es richtig sehe, muss ich doch in der Funktion extraItemMarkerProcessor eine Übergabe zu meinem Controller schaffen oder nicht?

Bis jetzt habe ich noch keine Lösung gefunden.

Gruß

### [#6](https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension/6) · xyx · 2011-11-11

> **r0n schrieb:**
>
> Hey,
>
> ich habe zur Zeit ein ähnliches Problem.
> Wie kann ich den extraItemMarkerProcessor mit meiner in extbase geschriebenen Extension befüllen?
> Hab es bis jetzt nicht hinbekommen.
>
> Wenn ich es richtig sehe, muss ich doch in der Funktion extraItemMarkerProcessor eine Übergabe zu meinem Controller schaffen oder nicht?
>
> Bis jetzt habe ich noch keine Lösung gefunden.
>
> Gruß

Bin auf der Suche nach einem ähnlichen Problem hier gelandet.
Eine Lösung wäre über eine User Function. (Kennt jemand noch einen eleganteren Weg?)

**ext_localconf.php**

```php
...
$TYPO3_CONF_VARS['EXTCONF']['tt_news']['extraItemMarkerHook'][] = 'EXT:EXTNAME/class.tx_FILENAME.php:tx_CLASSNAME'; 
---
```

**class.tx_FUNCTIONNAME.php**

```php
<?php
class tx_CLASSNAME{
		
	function extraItemMarkerProcessor($markerArray, $row, $lConf, $obj) {

		$configuration = array(
	          'extensionName' => 'EXTENSIONNAME',
	          'pluginName' => 'Pi1',
     		  'controller' => 'CONTROLERNAME',
     		  'action' => 'ACTIONNAME',
        		'switchableControllerActions' => array('CONTROLERNAME' => array('actions' =>'ACTIONNAME')),
     			'settings' => array()
		  ); 

		$bootstrap = new Tx_Extbase_Core_Bootstrap();	
		$result = $bootstrap->run('', $configuration);
		
		$markerArray['###MARKERNAME###'] = $result;
		
    	        return $markerArray;
	} 	
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/EXTNAME/class.tx_FILENAME.php']){
    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/EXTNAME/class.tx_FILENAME.php']);
}
?>
```

Die GROSSBUCHSTABIGEN BEZEICHNER nicht vergessen auszutauschen. ;-)

Viele Grüße.

### [#7](https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension/7) · jeipack · 2013-04-25

@xyx:
Ich versuche seit 2Std deine Lösung zum laufen zu bekommen:

```php
class tx_MYBACKENDTEST{
 
/**
	 * Main function. Hook from t3lib/class.t3lib_tcemain.php
	 *
	 * @param    string        $status: Status of the current operation, 'new' or 'update
	 * @param    string        $table: The table currently processing data for
	 * @param    string        $id: The record uid currently processing data for, [integer] or [string] (like 'NEW...')
	 * @param    array        $fieldArray: The field array of a record
	 * @param    object        $reference: reference to parent object
	 * @return    void
	 */
	function processDatamap_afterDatabaseOperations($status, $table, $id, &$fieldArray, &$reference) {

		
		
		t3lib_div::devLog('FieldArray '.print_r($fieldArray,1),'MYBACKENDTEST');  //Das hier funktioniert noch

		
		$configuration = array(
	          'extensionName' => 'irgendwas',
	          'pluginName' => 'Irgendfront',
     		  'controller' => 'Irgendwas',
     		  'action' => 'list',
        		'switchableControllerActions' => array('Irgendwas' => array('actions' =>'list')),
     			'settings' => array()
		  ); 
 
		$bootstrap = new Tx_Extbase_Core_Bootstrap();	
		$result = $bootstrap->run('', $configuration);
		
		
	}
}
```

Habe extra eine neue Extention "Irgendwas" gemacht mit einem FrontendPlugin, in der Hoffnung dass es nicht klappte, weil bei der anderen nur ein Backendmodul definiert war. Leider war es das nicht.

ext_localconf.php:

```php
Tx_Extbase_Utility_Extension::configurePlugin(
	$_EXTKEY,
	'Irgendfront',
	array(
		'Irgendwas' => 'list, show, new, create, doStuff',
		
	),
	// non-cacheable actions
	array(
		'Irgendwas' => 'create, ',
		
	)
);

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:mybackendtest/class.tx_MYBACKENDTEST.php:&tx_MYBACKENDTEST';
```

Man sieht, dass ich die Klasse aus einer anderen Extension (mybackendtest) nehme. Das macht aber kein Beinbruch, der t3lib_div::devLog Aufruf alleine klappt ja.

Fehlermeldung:
*Oops, an error occured!

The default controller can not be determined.<br />Please check for Tx_Extbase_Utility_Extension::configurePlugin() in your ext_localconf.php.*

Dabei macht mich "The default controller can not be determined" stutzig. Habe ich eventuell was vergessen?
Ausserdem ist die ControllerAction "list" nicht switchable.

Hast du echt eine Idee?

Gruss

---

Quelle: „Verständnisprobleme tt_news Hook um eigene Extension“, typo3.net, https://www.typo3.net/d/103690-verstaendnisprobleme-tt-news-hook-um-eigene-extension
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
