SlideShare a Scribd company logo
1 of 26
Introduzione di base all’estensibilità del sistema a cura di  Francesco Trucchia  < [email_address] > un  phpBreakfast  offerto dal  GrUSP eZ publish, un CMS Open Source di  classe Enterprise
<?php=php_info() ?> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cos’è eZ Publish ,[object Object],[object Object]
eZ CMF - Content Management Framework ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Architettura strutturata su pattern MVC Un framework strutturato su un pattern M.V.C. è un framework che separa completamente la logica di business dalla vista, il tutto gestito da un controller centrale. Model  = dominio informativo View  = template/pagine web Controller  =  dispatcher d’azioni Database + eZPersistentObject() Template Engine + eZTemplate() Index.php + Kernel Function
Architettura d’eZ publish
eZ publish Extension System ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Attivare un’estensione ,[object Object],[object Object],[ExtensionSettings] ActiveExtensions[]=<myExtension> ActiveExtensions[]=<anotherExtension> ,[object Object],[ExtensionSettings] ActiveAcccessExtensions[]=<myExtension> ActiveAccessExtensions[]=<anotherExtension>
Template Operator Extension (1/7) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[TemplateSettings] ExtensionAutoloadPath[]=myextension
Template Operator Extension (2/7) ,[object Object],<?php // Operator autoloading $eZTemplateOperatorArray =  array (); $eZTemplateOperatorArray[] =  array (  'script’  =>  'extension/<myextension>/autoloads/mystringoperators.php' , 'class'  =>  'MyStringOperators' , 'operator_names'  => array(  'addstrings' ,  'helloworld'  ) ); ?>
Template Operator Extension (3/7) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Template Operator Extension (4/7) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Template Operator Extension (5/7) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Template Operator Extension (6/7) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Template Operator Extension (7/7) ,[object Object],<p>{addstrings( 'Forty', 'two' )}</p> <p>{helloworld()}</p>
Module Extension (1/6) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[ExtensionSettings] ActiveExtensions[]=<myextension> [ModuleSettings] ExtensionRepositories[]=<myextension>
Module Extension (2/6) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Module Extension (3/6) ,[object Object],<?php // Module return value, // normally fetched from template $text  =  'Benvenuti al Linux Day' ; // Build module result array $Result  =  array (); $Result [ 'content' ] =  $text ; $Result [ 'path' ] =  array (  array (  'url'  =>  '/mymodule/hello' , 'text'  =>  &quot;Hello&quot; ) ); ?>
Module Extension (4/6) ,[object Object],<?php $text  =  ’Hello World!!' ; //Include template engine library & set template variable include_once (  'kernel/common/template.php'  ); $tpl  =& templateInit(); $tpl ->setVariable(  ’text' ,  $text  ); // Build module result array $Result  =  array (); $Result [ 'content' ] =  $tpl ->fetch( &quot;design:mymodule/list.tpl&quot; ); $Result [ 'path' ] =  array (  array (  'url'  =>  '/mymodule/world' , 'text'  =>  ”World&quot; ) ); ?>
Module Extension (5/6) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Module Extension (6/6) ,[object Object],[object Object],[object Object]
Design Extensio (1/3) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[ExtensionSettings] ActiveExtensions[]=<myextension> [ExtensionSettings] DesignExtensions[]=<myextension>
Design Extensio (2/3) ,[object Object],[Tool] AvailableToolArray[]=correlati [Tool_correlati] correlati_classidentifiers= section= title= [Tool_correlati_description] correlati_classidentifiers=Filtro delle classi section=Sezione title=Titolo
Design Extensio (3/3) ,[object Object],{let node=fetch('content','node',hash( 'node_id' , $module_result.node_id)) related=$:node.object.related_contentobject_array} {set-block name=correlati variable=text} {section name=Related loop=$related} {section show=and($section|eq($:item.section_id), $correlati_classidentifiers|explode( ',' )|contains($:item.class_identifier))} <li>{node_view_gui view=listitem content_node=$:item.main_node}</li> {/section} {/section} {/set-block} {section show=and($related,$allegati:text|eq('')|not)} <div class=”correlati”> <h2>{$title}</h2> <ul >{$correlati:text}</ul> </div> {/section} {/let}
Riferimenti ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Contatti Francesco Trucchia [email_address] trucchia http://www.cphp.it http://wiki.grusp.it

More Related Content

What's hot

Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e GestioneLezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e Gestionealessandro gasparotto
 
Introduzione a Wordpress
Introduzione a WordpressIntroduzione a Wordpress
Introduzione a WordpressSQcuola di Blog
 
WordPress - corso base
WordPress - corso baseWordPress - corso base
WordPress - corso baseTeo Jurina
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerMatteo Magni
 
Wordpress - Primi passi | Mafaldida
Wordpress  - Primi passi | MafaldidaWordpress  - Primi passi | Mafaldida
Wordpress - Primi passi | MafaldidaGiulia Costa
 
Usiamo bene WordPress
Usiamo bene WordPressUsiamo bene WordPress
Usiamo bene WordPressPaolo Valenti
 
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANODrupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANODrupalDay
 

What's hot (9)

Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e GestioneLezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
 
Introduzione a Wordpress
Introduzione a WordpressIntroduzione a Wordpress
Introduzione a Wordpress
 
WordPress - corso base
WordPress - corso baseWordPress - corso base
WordPress - corso base
 
Il mio primo sito con NEOS
Il mio primo sito con NEOSIl mio primo sito con NEOS
Il mio primo sito con NEOS
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner
 
Wordpress - Primi passi | Mafaldida
Wordpress  - Primi passi | MafaldidaWordpress  - Primi passi | Mafaldida
Wordpress - Primi passi | Mafaldida
 
Introduzione a WordPress
Introduzione a WordPressIntroduzione a WordPress
Introduzione a WordPress
 
Usiamo bene WordPress
Usiamo bene WordPressUsiamo bene WordPress
Usiamo bene WordPress
 
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANODrupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
 

Viewers also liked

Экосистема Common Lisp
Экосистема Common LispЭкосистема Common Lisp
Экосистема Common LispVsevolod Dyomkin
 
An introduction to php shells
An introduction to php shellsAn introduction to php shells
An introduction to php shellsRichieSM
 
Hybrid kernel
Hybrid kernelHybrid kernel
Hybrid kernelAbu Azzam
 
大众点评网 Web开发之路
大众点评网 Web开发之路大众点评网 Web开发之路
大众点评网 Web开发之路alcoholwang
 
Melbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDBMelbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDBYuval Ararat
 
Attacking Web Applications
Attacking Web ApplicationsAttacking Web Applications
Attacking Web ApplicationsSasha Goldshtein
 
U10 sss swenv-pm
U10 sss swenv-pmU10 sss swenv-pm
U10 sss swenv-pmLe Thi
 
Open erp technical_memento_v0.6.3_a4
Open erp technical_memento_v0.6.3_a4Open erp technical_memento_v0.6.3_a4
Open erp technical_memento_v0.6.3_a4openerpwiki
 
Usabilidade em RSS (por Bruno Maranhão)
Usabilidade em RSS (por Bruno Maranhão)Usabilidade em RSS (por Bruno Maranhão)
Usabilidade em RSS (por Bruno Maranhão)Bruno Maranhão
 
NPR Simile Timeline
NPR Simile TimelineNPR Simile Timeline
NPR Simile Timelinejohntynan
 
Eclipse Memory Analyzer MAJUG November 2008
Eclipse Memory Analyzer MAJUG November 2008Eclipse Memory Analyzer MAJUG November 2008
Eclipse Memory Analyzer MAJUG November 2008Markus Kohler
 
Linux kernel module programming guide
Linux kernel module programming guideLinux kernel module programming guide
Linux kernel module programming guideDũng Nguyễn
 
42 q92hx power supply 2
42 q92hx power supply 242 q92hx power supply 2
42 q92hx power supply 2René Jordaan
 
The Implausibility of Secrecy - Mark Fenster - Author - University of Florid...
The Implausibility of Secrecy -  Mark Fenster - Author - University of Florid...The Implausibility of Secrecy -  Mark Fenster - Author - University of Florid...
The Implausibility of Secrecy - Mark Fenster - Author - University of Florid...Linda Cadigan
 
CFCouchbase 2.0 and N1QL
CFCouchbase 2.0 and N1QLCFCouchbase 2.0 and N1QL
CFCouchbase 2.0 and N1QLAaron Benton
 

Viewers also liked (20)

Экосистема Common Lisp
Экосистема Common LispЭкосистема Common Lisp
Экосистема Common Lisp
 
Peggy - XPath
Peggy - XPathPeggy - XPath
Peggy - XPath
 
An introduction to php shells
An introduction to php shellsAn introduction to php shells
An introduction to php shells
 
Hybrid kernel
Hybrid kernelHybrid kernel
Hybrid kernel
 
大众点评网 Web开发之路
大众点评网 Web开发之路大众点评网 Web开发之路
大众点评网 Web开发之路
 
Melbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDBMelbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDB
 
Attacking Web Applications
Attacking Web ApplicationsAttacking Web Applications
Attacking Web Applications
 
U10 sss swenv-pm
U10 sss swenv-pmU10 sss swenv-pm
U10 sss swenv-pm
 
Open erp technical_memento_v0.6.3_a4
Open erp technical_memento_v0.6.3_a4Open erp technical_memento_v0.6.3_a4
Open erp technical_memento_v0.6.3_a4
 
Biocombustibles word
Biocombustibles wordBiocombustibles word
Biocombustibles word
 
ned TELE-audiovision-1309
ned TELE-audiovision-1309ned TELE-audiovision-1309
ned TELE-audiovision-1309
 
Usabilidade em RSS (por Bruno Maranhão)
Usabilidade em RSS (por Bruno Maranhão)Usabilidade em RSS (por Bruno Maranhão)
Usabilidade em RSS (por Bruno Maranhão)
 
AIX Guide
AIX GuideAIX Guide
AIX Guide
 
NPR Simile Timeline
NPR Simile TimelineNPR Simile Timeline
NPR Simile Timeline
 
Eclipse Memory Analyzer MAJUG November 2008
Eclipse Memory Analyzer MAJUG November 2008Eclipse Memory Analyzer MAJUG November 2008
Eclipse Memory Analyzer MAJUG November 2008
 
Linux kernel module programming guide
Linux kernel module programming guideLinux kernel module programming guide
Linux kernel module programming guide
 
42 q92hx power supply 2
42 q92hx power supply 242 q92hx power supply 2
42 q92hx power supply 2
 
The Implausibility of Secrecy - Mark Fenster - Author - University of Florid...
The Implausibility of Secrecy -  Mark Fenster - Author - University of Florid...The Implausibility of Secrecy -  Mark Fenster - Author - University of Florid...
The Implausibility of Secrecy - Mark Fenster - Author - University of Florid...
 
CFCouchbase 2.0 and N1QL
CFCouchbase 2.0 and N1QLCFCouchbase 2.0 and N1QL
CFCouchbase 2.0 and N1QL
 
Filelist
FilelistFilelist
Filelist
 

Similar to eZ publish - Extension

Django: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàDjango: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàskam
 
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Marco Chiesi
 
Drupal 7 : theming avanzato
Drupal 7 : theming avanzatoDrupal 7 : theming avanzato
Drupal 7 : theming avanzatoTwinbit
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance OptimizationAlessandro Martin
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Luca Lusso
 
jQuery e i suoi plugin
jQuery e i suoi pluginjQuery e i suoi plugin
jQuery e i suoi pluginPasquale Puzio
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQueryXeDotNet
 
Sviluppare estensioni per google chrome
Sviluppare estensioni per google chromeSviluppare estensioni per google chrome
Sviluppare estensioni per google chromeMarco Vito Moscaritolo
 
KDE Plasma widgets
KDE Plasma widgetsKDE Plasma widgets
KDE Plasma widgetsPietro Lerro
 
Rich Ajax Web Interfaces in Jquery
Rich Ajax Web Interfaces in JqueryRich Ajax Web Interfaces in Jquery
Rich Ajax Web Interfaces in JqueryAlberto Buschettu
 

Similar to eZ publish - Extension (20)

Django: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàDjango: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalità
 
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
 
Drupal 7 : theming avanzato
Drupal 7 : theming avanzatoDrupal 7 : theming avanzato
Drupal 7 : theming avanzato
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance Optimization
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immagini
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8
 
jQuery e i suoi plugin
jQuery e i suoi pluginjQuery e i suoi plugin
jQuery e i suoi plugin
 
Pycon Jungle
Pycon JunglePycon Jungle
Pycon Jungle
 
Introduzione a Struts
Introduzione a StrutsIntroduzione a Struts
Introduzione a Struts
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
 
Js intro
Js introJs intro
Js intro
 
Corso di php01
Corso di php01Corso di php01
Corso di php01
 
Sviluppare estensioni per google chrome
Sviluppare estensioni per google chromeSviluppare estensioni per google chrome
Sviluppare estensioni per google chrome
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
TYPO3 CMS 7.6 - Le novita
TYPO3 CMS 7.6 - Le novitaTYPO3 CMS 7.6 - Le novita
TYPO3 CMS 7.6 - Le novita
 
Programmazione Internet
Programmazione InternetProgrammazione Internet
Programmazione Internet
 
TYPO3 CMS 8.1 - Le novità
TYPO3 CMS 8.1 - Le novitàTYPO3 CMS 8.1 - Le novità
TYPO3 CMS 8.1 - Le novità
 
KDE Plasma widgets
KDE Plasma widgetsKDE Plasma widgets
KDE Plasma widgets
 
Rich Ajax Web Interfaces in Jquery
Rich Ajax Web Interfaces in JqueryRich Ajax Web Interfaces in Jquery
Rich Ajax Web Interfaces in Jquery
 

More from Francesco Trucchia

Raccolta requisiti, stima e pianificazione in progetti agili - Università di ...
Raccolta requisiti, stima e pianificazione in progetti agili - Università di ...Raccolta requisiti, stima e pianificazione in progetti agili - Università di ...
Raccolta requisiti, stima e pianificazione in progetti agili - Università di ...Francesco Trucchia
 
Oltre Tata: lean startup all'italiana
Oltre Tata: lean startup all'italianaOltre Tata: lean startup all'italiana
Oltre Tata: lean startup all'italianaFrancesco Trucchia
 

More from Francesco Trucchia (8)

Pro php refactoring
Pro php refactoringPro php refactoring
Pro php refactoring
 
Raccolta requisiti, stima e pianificazione in progetti agili - Università di ...
Raccolta requisiti, stima e pianificazione in progetti agili - Università di ...Raccolta requisiti, stima e pianificazione in progetti agili - Università di ...
Raccolta requisiti, stima e pianificazione in progetti agili - Università di ...
 
Business model canvas
Business model canvasBusiness model canvas
Business model canvas
 
Cowo42 - Coworking Osimo
Cowo42 - Coworking OsimoCowo42 - Coworking Osimo
Cowo42 - Coworking Osimo
 
Oltre Tata: lean startup all'italiana
Oltre Tata: lean startup all'italianaOltre Tata: lean startup all'italiana
Oltre Tata: lean startup all'italiana
 
Agile software lifecycle
Agile software lifecycleAgile software lifecycle
Agile software lifecycle
 
Spaghetti code refactoring
Spaghetti code refactoringSpaghetti code refactoring
Spaghetti code refactoring
 
Extreme Programming e PHP
Extreme Programming e PHPExtreme Programming e PHP
Extreme Programming e PHP
 

eZ publish - Extension

  • 1. Introduzione di base all’estensibilità del sistema a cura di Francesco Trucchia < [email_address] > un phpBreakfast offerto dal GrUSP eZ publish, un CMS Open Source di classe Enterprise
  • 2.
  • 3.
  • 4.
  • 5. Architettura strutturata su pattern MVC Un framework strutturato su un pattern M.V.C. è un framework che separa completamente la logica di business dalla vista, il tutto gestito da un controller centrale. Model = dominio informativo View = template/pagine web Controller = dispatcher d’azioni Database + eZPersistentObject() Template Engine + eZTemplate() Index.php + Kernel Function
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. Contatti Francesco Trucchia [email_address] trucchia http://www.cphp.it http://wiki.grusp.it