SlideShare uma empresa Scribd logo
1 de 12
Projekt
TYPO3
Thema
Rund um Hooks
Stand
09.08.2011
Von
Nicole Cordes
Rund um Hooks

» Begriffsdefinition

» Hooks erkennen

» Hooks nutzen

» XClasses
www.cps-it.de




      BEGRIFFSDEFINITION
      • Hook sind dazu da, dass TYPO3-System zu erweitern und flexibel auf Ein- und Ausgabe reagieren
        zu können

      • Es können Funktionen und / oder Variablen abgeändert werden

      • Hooks für Inhaltsveränderungen, Verhalten im Backend und Frontend

      • Bekannte Beispiele: RealURL / CoolURI, DAM, News




CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                                       Seite   3
www.cps-it.de




      HOOKS ERKENNEN
      • In den meisten Extensions sind Hooks im Manual definiert

      • Für das Frontend online (http://buzz.typo3.org/people/stucki/article/typo3-frontend-rendering-
        explained/)

      • Für das Backend im TYPO3 Core nur über eine Suche im PHP-Code zu finden, aber dort sehr gut
        kommentiert

      • Extension „Useful informations in reports module” (additional_reports) listet vorhandene Hooks im
        TYPO3-Backend auf

      • Drei Arten von Hooks-Definitionen: „method_exists“-Variante, „Hook-Object“-Variante (empfohlen,
        wenn in einer Funktion mehrere Hooks integriert werden sollen), „callUserFunction“-Variante




CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                                           Seite   4
www.cps-it.de




      HOOKS ERKENNEN
      1. „method_exists“-Variante

      if (is_array
      ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['fetchGro
      upQuery'])) {
        foreach
      ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['fetchGro
      upQuery'] as $classRef) {
          $hookObj = t3lib_div::getUserObj($classRef);
          if(method_exists($hookObj,'fetchGroupQuery_processQuery')){
            $whereSQL = $hookObj->fetchGroupQuery_processQuery($this, $grList, $idList, $whereSQL);
          }
        }
      }




CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                                     Seite   5
www.cps-it.de




      HOOKS ERKENNEN
      2. „Hook-Object“-Variante

      $hookObjectsArr = array();
      if (is_array
      ($TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'])) {
        foreach
      ($TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'] as
      $classRef) {
          $hookObjectsArr[] = t3lib_div::getUserObj($classRef);
        }
      }

      foreach($hookObjectsArr as $hookObj) {
        if (method_exists($hookObj, 'processDatamap_preProcessFieldArray')) {
          $hookObj->processDatamap_preProcessFieldArray($incomingFieldArray, $table, $id, $this);
        }
      }




CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                                   Seite   6
www.cps-it.de




      HOOKS ERKENNEN
      3. „callUserFunction“-Variante

      if (is_array($this-
      >TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-
      PostProc'])) {
        $_params = array('pObj' => &$this);
        foreach($this-
      >TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-
      PostProc'] as $_funcRef) {
          t3lib_div::callUserFunction($_funcRef,$_params,$this);
        }
      }




CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                              Seite   7
www.cps-it.de




      HOOKS NUTZEN
      • Grundlegend wird die „Aktivierung“ in der ext_localconf.php vorgenommen

      • Immer abhängig vom verwendeten Hook

      • Für Core-Hooks wird $GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']
        [[dir]/class.[classname].php][hookname] verwendet

      • Bei Extensions über $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][extkey][hookname]

      • Immer ein Array, dass im besten Fall assoziativ (mit Extension-Key) verwendet wird

      Varianten 1 und 2 erwartet eine Datei- / Klassenkombination (Funktion durch Hook vorgegeben)

      $GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']
      ['processDatamapClass'] ['tt_news'] =
      'EXT:tt_news/lib/class.tx_ttnews_tcemain.php:tx_ttnews_tcemain';

      Variante 3 erwartet eine Datei- / Klassen- / Funktionskombination

      $TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-
      PostProc'] ['tx_realurl'] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL';



CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                                    Seite   8
www.cps-it.de




      HOOKS NUTZEN
      Aufgerufene Hook-Funktion:
      foreach($hookObjectsArr as $hookObj) {
        if (method_exists($hookObj, 'processDatamap_preProcessFieldArray')) {
          $hookObj->processDatamap_preProcessFieldArray($incomingFieldArray, $table, $id, $this);
        }
      }


      Klassendefinition (nach „method_exists“ und „hook-objects“ Varianten)

      <?php
       class tx_ttnews_tcemain {
         function processDatamap_preProcessFieldArray(&$fieldArray, $table, $id, &$pObj) {
           […]
         }
       }
      ?>




CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                                   Seite   9
www.cps-it.de




      HOOKS NUTZEN
      Aufgerufene Hook-Funktion:
      if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-
      PostProc'])) {
        $_params = array('pObj' => &$this);
        foreach($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-PostProc'] as
      $_funcRef) {
          t3lib_div::callUserFunction($_funcRef,$_params,$this);
        }
      }


      Klassendefinition (nach „callUserFunction“-Variante)

      <?php
       class tx_realurl_tcemain {
         public function decodeSpURL($params) {
           […]
         }
       }
      ?>




CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                                                           Seite   10
www.cps-it.de




      XCLASSES
      • Am Ende (fast) jeder Klassen-Datei

      • Hiermit werden Klassen überschrieben (überlagert)

      • Funktionen können somit hinzugefügt / erweitert werden




      Nachteile:

      • Es kann jeweils nur eine Erweiterung pro Klasse eingesetzt werden

      • Zwingender Einsatz von t3lib_div::makeInstance bei Aufruf der Klasse

      • Sehr wartungsanfällig, da XCLASS meist an die jeweilige TYPO3-Version angepasst werden muss




CPS-IT mehr wert im netz   TYPO3 // Rund um Hooks                                                     Seite   11
Vielen Dank!
CPS-IT

Büro Berlin
Neue Promenade 5
Hackescher Markt
10178 Berlin

030.2759537.1
cordes@cps-it.de

Mais conteúdo relacionado

Mais procurados

TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkdie.agilen GmbH
 
Die WordPress Transients API
Die WordPress Transients APIDie WordPress Transients API
Die WordPress Transients APIfrankstaude
 
Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike MüllerAberla
 
Objektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidObjektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidOliver Klee
 
Modern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_scriptModern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_scriptManfred Steyer
 

Mais procurados (6)

Modulsystem in Drupal
Modulsystem in DrupalModulsystem in Drupal
Modulsystem in Drupal
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
 
Die WordPress Transients API
Die WordPress Transients APIDie WordPress Transients API
Die WordPress Transients API
 
Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike Müller
 
Objektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidObjektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluid
 
Modern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_scriptModern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_script
 

Destaque

Functional tests for dummies
Functional tests for dummiesFunctional tests for dummies
Functional tests for dummiescpsitgmbh
 
TYPO3 Caching
TYPO3 CachingTYPO3 Caching
TYPO3 Cachingcpsitgmbh
 
Functional tests with TYPO3
Functional tests with TYPO3Functional tests with TYPO3
Functional tests with TYPO3cpsitgmbh
 
TYPO3 Contribution Bootup Day
TYPO3 Contribution Bootup DayTYPO3 Contribution Bootup Day
TYPO3 Contribution Bootup Daycpsitgmbh
 
SymfonyCon Berlin 2016 Jenkins Deployment Pipelines
SymfonyCon Berlin 2016 Jenkins Deployment PipelinesSymfonyCon Berlin 2016 Jenkins Deployment Pipelines
SymfonyCon Berlin 2016 Jenkins Deployment Pipelinescpsitgmbh
 
Unit tests for dummies
Unit tests for dummiesUnit tests for dummies
Unit tests for dummiescpsitgmbh
 
Fluid Security
Fluid SecurityFluid Security
Fluid Securitycpsitgmbh
 

Destaque (7)

Functional tests for dummies
Functional tests for dummiesFunctional tests for dummies
Functional tests for dummies
 
TYPO3 Caching
TYPO3 CachingTYPO3 Caching
TYPO3 Caching
 
Functional tests with TYPO3
Functional tests with TYPO3Functional tests with TYPO3
Functional tests with TYPO3
 
TYPO3 Contribution Bootup Day
TYPO3 Contribution Bootup DayTYPO3 Contribution Bootup Day
TYPO3 Contribution Bootup Day
 
SymfonyCon Berlin 2016 Jenkins Deployment Pipelines
SymfonyCon Berlin 2016 Jenkins Deployment PipelinesSymfonyCon Berlin 2016 Jenkins Deployment Pipelines
SymfonyCon Berlin 2016 Jenkins Deployment Pipelines
 
Unit tests for dummies
Unit tests for dummiesUnit tests for dummies
Unit tests for dummies
 
Fluid Security
Fluid SecurityFluid Security
Fluid Security
 

Semelhante a Hooks

TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkTYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 CMS 7.6 - Die Neuerungen - pluswerk
TYPO3 CMS 7.6 - Die Neuerungen - pluswerkTYPO3 CMS 7.6 - Die Neuerungen - pluswerk
TYPO3 CMS 7.6 - Die Neuerungen - pluswerkdie.agilen GmbH
 
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...NETWAYS
 
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Michael Hofmann
 
TYPO3 CMS 7.5 - Die Neuerungen - pluswerk
TYPO3 CMS 7.5 - Die Neuerungen - pluswerkTYPO3 CMS 7.5 - Die Neuerungen - pluswerk
TYPO3 CMS 7.5 - Die Neuerungen - pluswerkdie.agilen GmbH
 
X$Tabellen und SgaScanner, DOAG 2009
X$Tabellen und SgaScanner, DOAG 2009X$Tabellen und SgaScanner, DOAG 2009
X$Tabellen und SgaScanner, DOAG 2009Frank
 
Sh optifind praesentation_20130311
Sh optifind praesentation_20130311Sh optifind praesentation_20130311
Sh optifind praesentation_20130311Stefan Moises
 
Prototype 1.7
Prototype 1.7Prototype 1.7
Prototype 1.7msebel
 
TYPO3 coding guidelines
TYPO3 coding guidelinesTYPO3 coding guidelines
TYPO3 coding guidelinesAlex Kellner
 
TYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der ZukunftTYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der ZukunftJochen Rau
 
TYPO3 CMS 8.0 - Die Neuerungen - pluswerk
TYPO3 CMS 8.0 - Die Neuerungen - pluswerkTYPO3 CMS 8.0 - Die Neuerungen - pluswerk
TYPO3 CMS 8.0 - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerkTYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerkdie.agilen GmbH
 
Einstieg in Xpath für SEO (Campixx2021)
Einstieg in Xpath für SEO (Campixx2021)Einstieg in Xpath für SEO (Campixx2021)
Einstieg in Xpath für SEO (Campixx2021)Sebastian Adler
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ulrike Schwinn
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPAmh0708
 

Semelhante a Hooks (20)

TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkTYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
 
T3ak12 extbase
T3ak12 extbaseT3ak12 extbase
T3ak12 extbase
 
TYPO3 CMS 7.6 - Die Neuerungen - pluswerk
TYPO3 CMS 7.6 - Die Neuerungen - pluswerkTYPO3 CMS 7.6 - Die Neuerungen - pluswerk
TYPO3 CMS 7.6 - Die Neuerungen - pluswerk
 
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
 
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
 
TYPO3 CMS 7.5 - Die Neuerungen - pluswerk
TYPO3 CMS 7.5 - Die Neuerungen - pluswerkTYPO3 CMS 7.5 - Die Neuerungen - pluswerk
TYPO3 CMS 7.5 - Die Neuerungen - pluswerk
 
X$Tabellen und SgaScanner, DOAG 2009
X$Tabellen und SgaScanner, DOAG 2009X$Tabellen und SgaScanner, DOAG 2009
X$Tabellen und SgaScanner, DOAG 2009
 
Sh optifind praesentation_20130311
Sh optifind praesentation_20130311Sh optifind praesentation_20130311
Sh optifind praesentation_20130311
 
Web Entwicklung mit PHP - Teil 2
Web Entwicklung mit PHP - Teil 2Web Entwicklung mit PHP - Teil 2
Web Entwicklung mit PHP - Teil 2
 
Prototype 1.7
Prototype 1.7Prototype 1.7
Prototype 1.7
 
TYPO3 coding guidelines
TYPO3 coding guidelinesTYPO3 coding guidelines
TYPO3 coding guidelines
 
TYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der ZukunftTYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der Zukunft
 
Node.js
Node.jsNode.js
Node.js
 
Neuerungen in TYPO3 6.0
Neuerungen in TYPO3 6.0Neuerungen in TYPO3 6.0
Neuerungen in TYPO3 6.0
 
TYPO3 CMS 8.0 - Die Neuerungen - pluswerk
TYPO3 CMS 8.0 - Die Neuerungen - pluswerkTYPO3 CMS 8.0 - Die Neuerungen - pluswerk
TYPO3 CMS 8.0 - Die Neuerungen - pluswerk
 
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerkTYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
 
Einstieg in Xpath für SEO (Campixx2021)
Einstieg in Xpath für SEO (Campixx2021)Einstieg in Xpath für SEO (Campixx2021)
Einstieg in Xpath für SEO (Campixx2021)
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
 

Hooks

  • 2. Rund um Hooks » Begriffsdefinition » Hooks erkennen » Hooks nutzen » XClasses
  • 3. www.cps-it.de BEGRIFFSDEFINITION • Hook sind dazu da, dass TYPO3-System zu erweitern und flexibel auf Ein- und Ausgabe reagieren zu können • Es können Funktionen und / oder Variablen abgeändert werden • Hooks für Inhaltsveränderungen, Verhalten im Backend und Frontend • Bekannte Beispiele: RealURL / CoolURI, DAM, News CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 3
  • 4. www.cps-it.de HOOKS ERKENNEN • In den meisten Extensions sind Hooks im Manual definiert • Für das Frontend online (http://buzz.typo3.org/people/stucki/article/typo3-frontend-rendering- explained/) • Für das Backend im TYPO3 Core nur über eine Suche im PHP-Code zu finden, aber dort sehr gut kommentiert • Extension „Useful informations in reports module” (additional_reports) listet vorhandene Hooks im TYPO3-Backend auf • Drei Arten von Hooks-Definitionen: „method_exists“-Variante, „Hook-Object“-Variante (empfohlen, wenn in einer Funktion mehrere Hooks integriert werden sollen), „callUserFunction“-Variante CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 4
  • 5. www.cps-it.de HOOKS ERKENNEN 1. „method_exists“-Variante if (is_array ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['fetchGro upQuery'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['fetchGro upQuery'] as $classRef) { $hookObj = t3lib_div::getUserObj($classRef); if(method_exists($hookObj,'fetchGroupQuery_processQuery')){ $whereSQL = $hookObj->fetchGroupQuery_processQuery($this, $grList, $idList, $whereSQL); } } } CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 5
  • 6. www.cps-it.de HOOKS ERKENNEN 2. „Hook-Object“-Variante $hookObjectsArr = array(); if (is_array ($TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'])) { foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'] as $classRef) { $hookObjectsArr[] = t3lib_div::getUserObj($classRef); } } foreach($hookObjectsArr as $hookObj) { if (method_exists($hookObj, 'processDatamap_preProcessFieldArray')) { $hookObj->processDatamap_preProcessFieldArray($incomingFieldArray, $table, $id, $this); } } CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 6
  • 7. www.cps-it.de HOOKS ERKENNEN 3. „callUserFunction“-Variante if (is_array($this- >TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods- PostProc'])) { $_params = array('pObj' => &$this); foreach($this- >TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods- PostProc'] as $_funcRef) { t3lib_div::callUserFunction($_funcRef,$_params,$this); } } CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 7
  • 8. www.cps-it.de HOOKS NUTZEN • Grundlegend wird die „Aktivierung“ in der ext_localconf.php vorgenommen • Immer abhängig vom verwendeten Hook • Für Core-Hooks wird $GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS'] [[dir]/class.[classname].php][hookname] verwendet • Bei Extensions über $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][extkey][hookname] • Immer ein Array, dass im besten Fall assoziativ (mit Extension-Key) verwendet wird Varianten 1 und 2 erwartet eine Datei- / Klassenkombination (Funktion durch Hook vorgegeben) $GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php'] ['processDatamapClass'] ['tt_news'] = 'EXT:tt_news/lib/class.tx_ttnews_tcemain.php:tx_ttnews_tcemain'; Variante 3 erwartet eine Datei- / Klassen- / Funktionskombination $TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods- PostProc'] ['tx_realurl'] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL'; CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 8
  • 9. www.cps-it.de HOOKS NUTZEN Aufgerufene Hook-Funktion: foreach($hookObjectsArr as $hookObj) { if (method_exists($hookObj, 'processDatamap_preProcessFieldArray')) { $hookObj->processDatamap_preProcessFieldArray($incomingFieldArray, $table, $id, $this); } } Klassendefinition (nach „method_exists“ und „hook-objects“ Varianten) <?php class tx_ttnews_tcemain { function processDatamap_preProcessFieldArray(&$fieldArray, $table, $id, &$pObj) { […] } } ?> CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 9
  • 10. www.cps-it.de HOOKS NUTZEN Aufgerufene Hook-Funktion: if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods- PostProc'])) { $_params = array('pObj' => &$this); foreach($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-PostProc'] as $_funcRef) { t3lib_div::callUserFunction($_funcRef,$_params,$this); } } Klassendefinition (nach „callUserFunction“-Variante) <?php class tx_realurl_tcemain { public function decodeSpURL($params) { […] } } ?> CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 10
  • 11. www.cps-it.de XCLASSES • Am Ende (fast) jeder Klassen-Datei • Hiermit werden Klassen überschrieben (überlagert) • Funktionen können somit hinzugefügt / erweitert werden Nachteile: • Es kann jeweils nur eine Erweiterung pro Klasse eingesetzt werden • Zwingender Einsatz von t3lib_div::makeInstance bei Aufruf der Klasse • Sehr wartungsanfällig, da XCLASS meist an die jeweilige TYPO3-Version angepasst werden muss CPS-IT mehr wert im netz TYPO3 // Rund um Hooks Seite 11
  • 12. Vielen Dank! CPS-IT Büro Berlin Neue Promenade 5 Hackescher Markt 10178 Berlin 030.2759537.1 cordes@cps-it.de