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