SlideShare a Scribd company logo
1 of 25
Come modificare il core di TYPO3 senza toccarlo



                               Come modificare
                               il core di TYPO3
                                senza toccarlo



                                                             T3Camp Italia
Relatore: Gianluca Strafella                  Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Chi sono

Gianluca Strafella
• Sviluppatore TYPO3 nel team di Webformat
• Sviluppatore Java

Contatti
• gianluca.strafella@webformat.com
• www.webformat.com


                                                       T3Camp Italia
                                        Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Cosa vedremo …

•   Perchè estendere il Core di TYPO3 ?
•   Due approcci: Hook e XCLASS
•   Un esempio pratico: user_loggedcountry
•   Hook vs XCLASS




                                                            T3Camp Italia
                                             Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Perchè estendere il Core di TYPO3 ?
• Esigenze applicative
   • Inviare una mail di notifica dopo la modifica di un record
   • “Listening” eventi del Core (Cancellazione cache, login, ...)


• Modifica al comportamento standard di Typo3
   • Aggiungere un tema al back end
   • Nascondere un certo componente




                                                                     T3Camp Italia
                                                      Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

“Estendiamo” il core !

• Modifichiamo il core !?
• Aggiornamenti del core
   • perdita codice ...
   • Idea: non aggiorniamo più !




            XCLASS                 Hook

                                                         T3Camp Italia
                                          Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

User_loggedcountry


Finalità :

•   Memorizzare l'IP degli utenti che si loggano nel sistema;
•   Visualizzare agli amministratori di sistema quanti e quali utenti sono
    loggati in un certo istante e da dove si sono collegati


Cosa ci serve :

•   Typo3 4.7.4
•   Introduction Package
•   Estensione: ml_geoip


                                                                         T3Camp Italia
                                                          Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite Hook

Cos'è ?
• Un metodo per estendere o sostituire una certa parte del
  codice di Typo3 (del core o di un'estensione).
Scope
• Pre-processing e post-processing




                                                          T3Camp Italia
                                           Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite Hook … dietro le quinte

1. Lookup degli Hook presenti a run-time




                                                            T3Camp Italia
                                             Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite Hook … dietro le quinte
2. Esecuzione funzione di callback
   • t3lib_div::callUserFunction($funcName, $_params, $this);




  • t3lib_div::getUserObj($classRef)




                                                                  T3Camp Italia
                                                   Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite Hook
user_loggedcountry


Finalità :
•   Memorizzare l'IP degli utenti che si loggano nel sistema
•   Ricavare la nazione di provenienza dell’utente




                                                                       T3Camp Italia
                                                        Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite Hook
1. Identificare il codice da estendere
   • Identificare la classe che contiene il codice da estendere
       • t3lib/class.t3lib_userauth.php
   • Identificare le funzioni che implementano la funzionalità da
     estendere
       • funzione start()
   • Identificare gli hook presenti
       • postUserLookUp




                                                                    T3Camp Italia
                                                     Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite hook
2. Registrare la funzione di callback (ext_localconf.php)
   • Includere la classe che contiene la funzione di callback
   • Registrare il proprio hook




3. Implementare la funzione di callback




                                                                   T3Camp Italia
                                                    Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite Hook

• Vantaggi
   • Non inficia il codice di altre estensioni che già utilizzano lo
     stesso hook
   • E' possibile estendere lo stesso hook più volte
• Svantaggi
   • L' hook deve già esistere




                                                                      T3Camp Italia
                                                       Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite XCLASS

• Presupposti
   • Il core di Typo3 è definito in classi PHP
   • La maggior parte del codice di BE/FE può essere esteso tramite
     XCLASS




                                                                 T3Camp Italia
                                                  Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite XCLASS
• Come funziona ?
  •   Inclusione del file che implementa l'XCLASS
  •   Istanziazione della classe tramite t3lib_div::makeInstance




                                                                   T3Camp Italia
                                                    Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite XCLASS
• Istanziazione di una classe tramite il core di TYPO3
   •   t3lib_div::makeInstance(“TYPO3backend”)
       •   GetClassName
       •   Prefisso “ux_” (user-extension)




                                                                T3Camp Italia
                                                 Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite XCLASS
user_loggedcountry
• Obiettivi
    • visualizzare agli amministratori di sistema quanti utenti sono
      loggati in un certo istante
    • visualizzare quali utenti sono loggati in un certo istante e la loro
      provenienza




                                                                      T3Camp Italia
                                                       Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite XCLASS
  1.   Identificare la classe PHP che contiene il codice che effettua il
       render del bottone di login
       •   typo3/backend.php




                                                                      T3Camp Italia
                                                       Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite XCLASS
  2.   Creare la classe “XClass” che estende backend.php




                                                                  T3Camp Italia
                                                   Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite XCLASS
  3.   Configurare Typo3 per includere la classe che estende
       backend.php
       –   user_loggedcountry/localconf.php




                                                                  T3Camp Italia
                                                   Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Estensione tramite XCLASS
• Vantaggi
   • Possibilità di estendere la maggior parte del core di TYPO3


• Svantaggi
   • Da usare solo per estensioni non pubbliche (possibilmente)
   • E se il core cambia ?




                                                                  T3Camp Italia
                                                   Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Hook Vs XCLASS
Hook                               XCLASS

Implementazioni legate a           Implementazioni locali su
estensioni locali e/o pubbliche    progetti specifici

Il core è esteso, non modificato   Si può modificare o sostituire
nella sua versione originale       effettivamente il codice standard
                                   di TYPO3


Pieno controllo del codice         XClass “a cascata”
originale


                                                                  T3Camp Italia
                                                   Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Best practices
Hook                               XCLASS

Spazio di definizione degli hook   Se possibile evitarne l’uso
identificabile univocamente
[“SC_CLASSES”] vs [“EXT_KEY”]

Controllo di flusso                Riscrivere solo quello che serve

Admin Tools, Configuration,        Lasciare tutto quello che non si
TYPO3_CONF_VARS['SC_OPTIONS']      ridefinisce nella classe padre

Prevedere hooks utili              Prima di fare un XClass verificare
                                   la presenza di altre XClass.


                                                                 T3Camp Italia
                                                  Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Conclusioni                      HOOK                           XCLASS
• Meglio Hook o Xclass ?
• Una preferenza …

Riferimenti

   • http://typo3.org/documentation/article/how-to-use-
     existing-hooks-in-your-own-extension/
   • http://typo3.org/documentation/document-library/core-
     documentation/doc_core_api/4.1.0/view/3/8




                                                               T3Camp Italia
                                                Bologna 16-17 novembre 2012
Come modificare il core di TYPO3 senza toccarlo

Grazie per l'attenzione !

         gianluca.strafella@webformat.com


         www.linkedin.com/in/gianlucastrafella




                                                                T3Camp Italia
                                                 Bologna 16-17 novembre 2012

More Related Content

Similar to T3 campitalia2012 Hook XClass

Extbase: il framework MVC per TYPO3
Extbase: il framework MVC per TYPO3Extbase: il framework MVC per TYPO3
Extbase: il framework MVC per TYPO3
federicobernardin
 
Thesis Murgida Panella Slide it
Thesis Murgida Panella Slide itThesis Murgida Panella Slide it
Thesis Murgida Panella Slide it
Marco Santambrogio
 

Similar to T3 campitalia2012 Hook XClass (20)

TYPO3 7.0 - Le novità
TYPO3 7.0 - Le novitàTYPO3 7.0 - Le novità
TYPO3 7.0 - Le novità
 
TYPO3 CMS 8.1 - Le novità
TYPO3 CMS 8.1 - Le novitàTYPO3 CMS 8.1 - Le novità
TYPO3 CMS 8.1 - Le novità
 
TYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le NovitàTYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le Novità
 
TYPO3 CMS 7.4 Le novita
TYPO3 CMS 7.4 Le novitaTYPO3 CMS 7.4 Le novita
TYPO3 CMS 7.4 Le novita
 
TYPO3 CMS 9.1 - Le novità
TYPO3 CMS 9.1 - Le novitàTYPO3 CMS 9.1 - Le novità
TYPO3 CMS 9.1 - Le novità
 
Il Turbo Debugger
Il Turbo DebuggerIl Turbo Debugger
Il Turbo Debugger
 
T3CampItalia 2014 - Novità di TYPO3 CMS 6.2 LTS
T3CampItalia 2014 - Novità di TYPO3 CMS 6.2 LTST3CampItalia 2014 - Novità di TYPO3 CMS 6.2 LTS
T3CampItalia 2014 - Novità di TYPO3 CMS 6.2 LTS
 
TYPO3 8.5 - Le novità
TYPO3 8.5 - Le novitàTYPO3 8.5 - Le novità
TYPO3 8.5 - Le novità
 
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novità
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novitàTYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novità
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novità
 
TYPO3 Versione 10.4 - Le novità
TYPO3 Versione 10.4 - Le novitàTYPO3 Versione 10.4 - Le novità
TYPO3 Versione 10.4 - Le novità
 
pugBO #10 PSR e Composer
pugBO #10 PSR e ComposerpugBO #10 PSR e Composer
pugBO #10 PSR e Composer
 
TYPO3 CMS 7.5: le novita
TYPO3 CMS 7.5: le novita TYPO3 CMS 7.5: le novita
TYPO3 CMS 7.5: le novita
 
Implementare il paradigma Software-Defined Networking utilizzando OpenFlow sw...
Implementare il paradigma Software-Defined Networking utilizzando OpenFlow sw...Implementare il paradigma Software-Defined Networking utilizzando OpenFlow sw...
Implementare il paradigma Software-Defined Networking utilizzando OpenFlow sw...
 
TYPO3 CMS 8.0 - Le novità
TYPO3 CMS 8.0 - Le novitàTYPO3 CMS 8.0 - Le novità
TYPO3 CMS 8.0 - Le novità
 
TYPO3 Versione 10.1 - Le novita
TYPO3 Versione 10.1 - Le novitaTYPO3 Versione 10.1 - Le novita
TYPO3 Versione 10.1 - Le novita
 
Extbase: il framework MVC per TYPO3
Extbase: il framework MVC per TYPO3Extbase: il framework MVC per TYPO3
Extbase: il framework MVC per TYPO3
 
Thesis Murgida Panella Slide it
Thesis Murgida Panella Slide itThesis Murgida Panella Slide it
Thesis Murgida Panella Slide it
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compatta
 
Novita TYPO3 CMS 7.2
Novita TYPO3 CMS 7.2Novita TYPO3 CMS 7.2
Novita TYPO3 CMS 7.2
 
Git best practices
Git best practicesGit best practices
Git best practices
 

T3 campitalia2012 Hook XClass

  • 1. Come modificare il core di TYPO3 senza toccarlo Come modificare il core di TYPO3 senza toccarlo T3Camp Italia Relatore: Gianluca Strafella Bologna 16-17 novembre 2012
  • 2. Come modificare il core di TYPO3 senza toccarlo Chi sono Gianluca Strafella • Sviluppatore TYPO3 nel team di Webformat • Sviluppatore Java Contatti • gianluca.strafella@webformat.com • www.webformat.com T3Camp Italia Bologna 16-17 novembre 2012
  • 3. Come modificare il core di TYPO3 senza toccarlo Cosa vedremo … • Perchè estendere il Core di TYPO3 ? • Due approcci: Hook e XCLASS • Un esempio pratico: user_loggedcountry • Hook vs XCLASS T3Camp Italia Bologna 16-17 novembre 2012
  • 4. Come modificare il core di TYPO3 senza toccarlo Perchè estendere il Core di TYPO3 ? • Esigenze applicative • Inviare una mail di notifica dopo la modifica di un record • “Listening” eventi del Core (Cancellazione cache, login, ...) • Modifica al comportamento standard di Typo3 • Aggiungere un tema al back end • Nascondere un certo componente T3Camp Italia Bologna 16-17 novembre 2012
  • 5. Come modificare il core di TYPO3 senza toccarlo “Estendiamo” il core ! • Modifichiamo il core !? • Aggiornamenti del core • perdita codice ... • Idea: non aggiorniamo più ! XCLASS Hook T3Camp Italia Bologna 16-17 novembre 2012
  • 6. Come modificare il core di TYPO3 senza toccarlo User_loggedcountry Finalità : • Memorizzare l'IP degli utenti che si loggano nel sistema; • Visualizzare agli amministratori di sistema quanti e quali utenti sono loggati in un certo istante e da dove si sono collegati Cosa ci serve : • Typo3 4.7.4 • Introduction Package • Estensione: ml_geoip T3Camp Italia Bologna 16-17 novembre 2012
  • 7. Come modificare il core di TYPO3 senza toccarlo Estensione tramite Hook Cos'è ? • Un metodo per estendere o sostituire una certa parte del codice di Typo3 (del core o di un'estensione). Scope • Pre-processing e post-processing T3Camp Italia Bologna 16-17 novembre 2012
  • 8. Come modificare il core di TYPO3 senza toccarlo Estensione tramite Hook … dietro le quinte 1. Lookup degli Hook presenti a run-time T3Camp Italia Bologna 16-17 novembre 2012
  • 9. Come modificare il core di TYPO3 senza toccarlo Estensione tramite Hook … dietro le quinte 2. Esecuzione funzione di callback • t3lib_div::callUserFunction($funcName, $_params, $this); • t3lib_div::getUserObj($classRef) T3Camp Italia Bologna 16-17 novembre 2012
  • 10. Come modificare il core di TYPO3 senza toccarlo Estensione tramite Hook user_loggedcountry Finalità : • Memorizzare l'IP degli utenti che si loggano nel sistema • Ricavare la nazione di provenienza dell’utente T3Camp Italia Bologna 16-17 novembre 2012
  • 11. Come modificare il core di TYPO3 senza toccarlo Estensione tramite Hook 1. Identificare il codice da estendere • Identificare la classe che contiene il codice da estendere • t3lib/class.t3lib_userauth.php • Identificare le funzioni che implementano la funzionalità da estendere • funzione start() • Identificare gli hook presenti • postUserLookUp T3Camp Italia Bologna 16-17 novembre 2012
  • 12. Come modificare il core di TYPO3 senza toccarlo Estensione tramite hook 2. Registrare la funzione di callback (ext_localconf.php) • Includere la classe che contiene la funzione di callback • Registrare il proprio hook 3. Implementare la funzione di callback T3Camp Italia Bologna 16-17 novembre 2012
  • 13. Come modificare il core di TYPO3 senza toccarlo Estensione tramite Hook • Vantaggi • Non inficia il codice di altre estensioni che già utilizzano lo stesso hook • E' possibile estendere lo stesso hook più volte • Svantaggi • L' hook deve già esistere T3Camp Italia Bologna 16-17 novembre 2012
  • 14. Come modificare il core di TYPO3 senza toccarlo Estensione tramite XCLASS • Presupposti • Il core di Typo3 è definito in classi PHP • La maggior parte del codice di BE/FE può essere esteso tramite XCLASS T3Camp Italia Bologna 16-17 novembre 2012
  • 15. Come modificare il core di TYPO3 senza toccarlo Estensione tramite XCLASS • Come funziona ? • Inclusione del file che implementa l'XCLASS • Istanziazione della classe tramite t3lib_div::makeInstance T3Camp Italia Bologna 16-17 novembre 2012
  • 16. Come modificare il core di TYPO3 senza toccarlo Estensione tramite XCLASS • Istanziazione di una classe tramite il core di TYPO3 • t3lib_div::makeInstance(“TYPO3backend”) • GetClassName • Prefisso “ux_” (user-extension) T3Camp Italia Bologna 16-17 novembre 2012
  • 17. Come modificare il core di TYPO3 senza toccarlo Estensione tramite XCLASS user_loggedcountry • Obiettivi • visualizzare agli amministratori di sistema quanti utenti sono loggati in un certo istante • visualizzare quali utenti sono loggati in un certo istante e la loro provenienza T3Camp Italia Bologna 16-17 novembre 2012
  • 18. Come modificare il core di TYPO3 senza toccarlo Estensione tramite XCLASS 1. Identificare la classe PHP che contiene il codice che effettua il render del bottone di login • typo3/backend.php T3Camp Italia Bologna 16-17 novembre 2012
  • 19. Come modificare il core di TYPO3 senza toccarlo Estensione tramite XCLASS 2. Creare la classe “XClass” che estende backend.php T3Camp Italia Bologna 16-17 novembre 2012
  • 20. Come modificare il core di TYPO3 senza toccarlo Estensione tramite XCLASS 3. Configurare Typo3 per includere la classe che estende backend.php – user_loggedcountry/localconf.php T3Camp Italia Bologna 16-17 novembre 2012
  • 21. Come modificare il core di TYPO3 senza toccarlo Estensione tramite XCLASS • Vantaggi • Possibilità di estendere la maggior parte del core di TYPO3 • Svantaggi • Da usare solo per estensioni non pubbliche (possibilmente) • E se il core cambia ? T3Camp Italia Bologna 16-17 novembre 2012
  • 22. Come modificare il core di TYPO3 senza toccarlo Hook Vs XCLASS Hook XCLASS Implementazioni legate a Implementazioni locali su estensioni locali e/o pubbliche progetti specifici Il core è esteso, non modificato Si può modificare o sostituire nella sua versione originale effettivamente il codice standard di TYPO3 Pieno controllo del codice XClass “a cascata” originale T3Camp Italia Bologna 16-17 novembre 2012
  • 23. Come modificare il core di TYPO3 senza toccarlo Best practices Hook XCLASS Spazio di definizione degli hook Se possibile evitarne l’uso identificabile univocamente [“SC_CLASSES”] vs [“EXT_KEY”] Controllo di flusso Riscrivere solo quello che serve Admin Tools, Configuration, Lasciare tutto quello che non si TYPO3_CONF_VARS['SC_OPTIONS'] ridefinisce nella classe padre Prevedere hooks utili Prima di fare un XClass verificare la presenza di altre XClass. T3Camp Italia Bologna 16-17 novembre 2012
  • 24. Come modificare il core di TYPO3 senza toccarlo Conclusioni HOOK XCLASS • Meglio Hook o Xclass ? • Una preferenza … Riferimenti • http://typo3.org/documentation/article/how-to-use- existing-hooks-in-your-own-extension/ • http://typo3.org/documentation/document-library/core- documentation/doc_core_api/4.1.0/view/3/8 T3Camp Italia Bologna 16-17 novembre 2012
  • 25. Come modificare il core di TYPO3 senza toccarlo Grazie per l'attenzione ! gianluca.strafella@webformat.com www.linkedin.com/in/gianlucastrafella T3Camp Italia Bologna 16-17 novembre 2012