SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
l’Arte del Templating:
TypoScript, Fluid e
Grid Elements
di Elena Bartolotti
Elena è...
Web engineer dal 2004
Collaboratrice di Intera dal 2004
Tecnologo della Comunicazione dal 2005
Certified TYPO3 Integrator dal 2010
Relatrice al T3Camp per la seconda volta
… NERD da sempre ...
Elena Bartolotti... chi?
Cosa voglio ottenere da
TYPO3?
gli Obiettivi
Un ambiente facile e intuitivo per ogni content editor
gli Obiettivi
Un sistema che permetta al content editor
di disporre liberamente i contenuti nelle pagine
gli Obiettivi
Un modo per impedire che il content editor faccia
DISASTRI
gli Obiettivi
Come posso ottenere tutto questo con
TYPO3?
gli Strumenti
gli Strumenti
Creo un ambiente facile e intuitivo con i
BackEnd Layout
gli Strumenti
Metto a disposizione del content editor
diversi modi per impaginare i contenuti con i
GridElements
gli Strumenti
Limito i disastri con una progettazione mirata,
associando i BackEnd Layout alle pagine con
Fluid
<f:abracadabra> --- </f:abracadabra>
Partiamo da un mockup
in Pratica
in Pratica
in Pratica
Intestazione
Parte centrale
Piede
Intestazione
Parte centrale
Piede
Intestazione
Parte centrale
Piede
In ogni “template” posso individuare
facilmente 3 blocchi di elementi:
Intestazione
Parte Centrale (contenuti principali)
Piede
analizzare la Grafica
Esempio su sito reale
analizzare la Grafica
analizzare la Grafica
Esempio su sito reale
analizzare la Grafica
Esempio su sito reale
Template HTML : t3camp.html
<div id=”intestazione”> </div>
<div id=”centrale”> </div>
<div id=”piede”> </div>
il Template
Per ogni “blocco” di elementi
può esserci più di una tipologia
il Template
2 tipologie per l'intestazione:
Intestazione alta con slide di immagini per Home Page (HeaderHome)
Intestazione più bassa a immagine fissa per Pagine Interne (HeaderInterne)
il Template
3 tipologie per la parte centrale:
Spazio full-size per Home Page (MainHome)
Spazio full-size per Pagine Interne (MainInterne)
Spazio con Navigazione laterale sinistra (MainNav)
il Template
<div id=”intestazione”> </div>
<div id=”centrale”> </div>
<div id=”piede”> </div>
Realizziamo ogni tipologia
aggiungendo Fluid al tremplate HTML
Fluid <f:section>
<div id=”intestazione”> </div>
Fluid <f:section>
<f:section name="HeaderHome">
<div id="header" class="home">
<f:cObject typoscriptObjectPath="lib.Slider" />
<f:cObject typoscriptObjectPath="lib.TopNav"/>
</div>
</f:section>
<f:section name="HeaderInterne">
<div id="header">
<f:cObject typoscriptObjectPath="lib.header" />
<f:cObject typoscriptObjectPath="lib.TopNav"/>
</div>
</f:section>
<div id=”centrale”> </div>
<f:section name=”MainHome”>
<div id=”content” class=”home”>
<f:cObject typoscriptObjectPath=”lib.pagetitle" />
<f:cObject typoscriptObjectPath=”lib.content” />
</div>
</f:section>
<f:section name=”MainInterne”>
<div id=”content”>
<f:cObject typoscriptObjectPath=”lib.pagetitle” />
<f:cObject typoscriptObjectPath=”lib.content” />
</div>
</f:section>
<f:section name=”MainNav”>
<div id=”sidebar”>
<f:cObject typoscriptObjectPath=”lib.LeftNav” />
</div>
<div id=”content”>
<f:cObject typoscriptObjectPath=”lib.pagetitle” />
<f:cObject typoscriptObjectPath=”lib.content” />
</div>
</f:section>
Fluid <f:section>
Come applico questo codice
alle pagine del mio sito?
BackEnd Layout
BackEnd Layout
BackEnd Layout
1 - Home
Intestazione grande e animata
+ spazio full-size per i contenuti
+ footer automatico
BackEnd Layout
lib.Slider
lib.content
2 - Pagine Interne
Intestazione bassa per immagine fissa
+ spazio full-size per i contenuti
+ footer automatico
BackEnd Layout
lib.header
lib.content
3 – Pagine con Navigazione Laterale
Intestazione bassa per immagine fissa
+ colonna laterale per la navigazione
+ colonna per i contenuti
+ footer automatico
BackEnd Layout
Assegnazione del BackEnd Layout
nelle proprietà delle pagine
BackEnd Layout
L'ambiente di lavoro del Content Editor
deve rispecchiare il layout del sito
BackEnd Layout
TypoScript
TypoScript
page.10 = FLUIDTEMPLATE
page.10.file = fileadmin/templates/t3camp.html
TypoScript
Come comunicano
BackEnd Layout dentro TYPO3
con
le <f:section> nel template HTML?
TypoScript
t3camp.htm
l
<f:section
>
BeLayou
t
3
BeLayou
t
2
TYPO3
BeLayou
t
1
Variabile per selezionare la “section” in base al BElayout della pagina:
lib.BElayoutUID = TEXT
lib.BElayoutUID {
data = field:backend_layout
ifEmpty.cObject = TEXT
ifEmpty.cObject {
data = levelfield:-1, backend_layout_next_level, slide
override.data = page:backend_layout
}
}
TypoScript
<div id=”intestazione”>
<f:if condition=”{f:cObject(typoscriptObjectPath:'lib.BElayoutUID')} == 1”>
<f:then>
<f:render section="HeaderHome" />
</f:then>
<f:else>
<f:render section="Header" />
</f:else>
</f:if>
</div>
<f:section name="HeaderHome">
<div id="header" class="home">
<f:cObject typoscriptObjectPath="lib.Slider" />
<f:cObject typoscriptObjectPath="lib.TopNav" />
</div>
</f:section>
<f:section name="Header">
<div id="header">
<f:cObject typoscriptObjectPath="lib.header" />
<f:cObject typoscriptObjectPath="lib.TopNav" />
</div>
</f:section>
Fluid <f:if condition>
<div id="centrale">
<f:if condition="{f:cObject(typoscriptObjectPath:'lib.BElayoutUID')} == 1">
<f:then>
<f:render section="MainHome" />
</f:then>
</f:if>
<f:if condition="{f:cObject(typoscriptObjectPath:'lib.BElayoutUID')} == 2">
<f:then>
<f:render section="MainInterne" />
</f:then>
</f:if>
<f:if condition="{f:cObject(typoscriptObjectPath:'lib.BElayoutUID')} == 3">
<f:then>
<f:render section="MainNav" />
</f:then>
</f:if>
</div>
Fluid <f:if condition>
Fluid <f:if condition>
Vista Backend e Frontend
di una pagina con layout per pagine interne con navigazione
Ora è il momento dei contenuti!
i Contenuti
i Contenuti
4 colonne con bordi
1 colonna
2 colonne
3 colonne
Creare i record GridElements
GridElements
Il content editor può scegliere
come disporre i contenuti
GridElements
tt_content.gridelements_pi1.10=<lib.stdheader
tt_content.gridelements_pi1.20.10.setup {
# ID 1 – Grid a 1 colonna
1 < lib.gridelements.defaultGridSetup
1.columns {
0 < .default
0.wrap = <div class="large-12 columns">|</div>
}
1.wrap = <div class="row nospace">|</div>
# ID 2 - Grid a 2 colonne 50 50
2 < lib.gridelements.defaultGridSetup
2.columns {
0 < .default
0.wrap = <div class="large-6 columns">|</div>
1 < .default
1.wrap = <div class="large-6 columns">|</div>
}
2.wrap = <div class="row nospace">|</div>
…
}
GridElements
il Risultato
il Risultato
il Risultato
Non solo BackEnd Layout e GridElements
MultiColumn
Multiple Content
TemplaVoila
Fluid Content Engine
Flux
le Alternative
Progettare pensando anche al Content Editor
le Conclusioni
le Conclusioni
La Forza è nulla senza il controllo
le Conclusioni
the End
Grazie per l’attenzione

Weitere ähnliche Inhalte

Ähnlich wie L'Arte del Templating: Typoscript, Fluid e Grid Elements

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
 
DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)Alessandro Giorgetti
 
CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)Matteo Ziviani
 
Bootstrap 3.0 - Introduzione
Bootstrap 3.0 - IntroduzioneBootstrap 3.0 - Introduzione
Bootstrap 3.0 - IntroduzioneMatteo Madeddu
 
Html e Css - 2 | WebMaster & WebDesigner
 Html e Css - 2 | WebMaster & WebDesigner Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerMatteo Magni
 
Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerHtml e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerMatteo Magni
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Codemotion
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 
Best practices per lo sviluppo Frontend
Best practices per lo sviluppo FrontendBest practices per lo sviluppo Frontend
Best practices per lo sviluppo FrontendCristiano Rastelli
 
Primo approccio al design adattivo
Primo approccio al design adattivoPrimo approccio al design adattivo
Primo approccio al design adattivoSalvatore Paone
 
04 Tapestry5 In Action Pratica
04   Tapestry5 In Action   Pratica04   Tapestry5 In Action   Pratica
04 Tapestry5 In Action Praticabobpuley
 
Html5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webHtml5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webMassimo Bonanni
 

Ähnlich wie L'Arte del Templating: Typoscript, Fluid e Grid Elements (20)

Dojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web DominoDojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web Domino
 
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
 
DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)
 
CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)
 
Bootstrap 3.0 - Introduzione
Bootstrap 3.0 - IntroduzioneBootstrap 3.0 - Introduzione
Bootstrap 3.0 - Introduzione
 
Presentazione wicket
Presentazione wicketPresentazione wicket
Presentazione wicket
 
HTML e CSS
HTML e CSSHTML e CSS
HTML e CSS
 
Html e Css - 2 | WebMaster & WebDesigner
 Html e Css - 2 | WebMaster & WebDesigner Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
 
Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerHtml e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
Gestire i pdf con iOS
Gestire i pdf con iOSGestire i pdf con iOS
Gestire i pdf con iOS
 
Best practices per lo sviluppo Frontend
Best practices per lo sviluppo FrontendBest practices per lo sviluppo Frontend
Best practices per lo sviluppo Frontend
 
Html5 - Un anno dopo
Html5 - Un anno dopoHtml5 - Un anno dopo
Html5 - Un anno dopo
 
Laravel Framework PHP
Laravel Framework PHPLaravel Framework PHP
Laravel Framework PHP
 
Perl Template Toolkit
Perl Template ToolkitPerl Template Toolkit
Perl Template Toolkit
 
Primo approccio al design adattivo
Primo approccio al design adattivoPrimo approccio al design adattivo
Primo approccio al design adattivo
 
TYPO3 CMS 7.5: le novita
TYPO3 CMS 7.5: le novita TYPO3 CMS 7.5: le novita
TYPO3 CMS 7.5: le novita
 
04 Tapestry5 In Action Pratica
04   Tapestry5 In Action   Pratica04   Tapestry5 In Action   Pratica
04 Tapestry5 In Action Pratica
 
Html5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webHtml5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo web
 

L'Arte del Templating: Typoscript, Fluid e Grid Elements

  • 1. l’Arte del Templating: TypoScript, Fluid e Grid Elements di Elena Bartolotti
  • 2. Elena è... Web engineer dal 2004 Collaboratrice di Intera dal 2004 Tecnologo della Comunicazione dal 2005 Certified TYPO3 Integrator dal 2010 Relatrice al T3Camp per la seconda volta … NERD da sempre ... Elena Bartolotti... chi?
  • 3. Cosa voglio ottenere da TYPO3? gli Obiettivi
  • 4. Un ambiente facile e intuitivo per ogni content editor gli Obiettivi
  • 5. Un sistema che permetta al content editor di disporre liberamente i contenuti nelle pagine gli Obiettivi
  • 6. Un modo per impedire che il content editor faccia DISASTRI gli Obiettivi
  • 7. Come posso ottenere tutto questo con TYPO3? gli Strumenti
  • 8. gli Strumenti Creo un ambiente facile e intuitivo con i BackEnd Layout
  • 9. gli Strumenti Metto a disposizione del content editor diversi modi per impaginare i contenuti con i GridElements
  • 10. gli Strumenti Limito i disastri con una progettazione mirata, associando i BackEnd Layout alle pagine con Fluid <f:abracadabra> --- </f:abracadabra>
  • 11. Partiamo da un mockup in Pratica
  • 14. Intestazione Parte centrale Piede Intestazione Parte centrale Piede Intestazione Parte centrale Piede In ogni “template” posso individuare facilmente 3 blocchi di elementi: Intestazione Parte Centrale (contenuti principali) Piede analizzare la Grafica
  • 15. Esempio su sito reale analizzare la Grafica
  • 18. Template HTML : t3camp.html <div id=”intestazione”> </div> <div id=”centrale”> </div> <div id=”piede”> </div> il Template
  • 19. Per ogni “blocco” di elementi può esserci più di una tipologia il Template
  • 20. 2 tipologie per l'intestazione: Intestazione alta con slide di immagini per Home Page (HeaderHome) Intestazione più bassa a immagine fissa per Pagine Interne (HeaderInterne) il Template
  • 21. 3 tipologie per la parte centrale: Spazio full-size per Home Page (MainHome) Spazio full-size per Pagine Interne (MainInterne) Spazio con Navigazione laterale sinistra (MainNav) il Template
  • 22. <div id=”intestazione”> </div> <div id=”centrale”> </div> <div id=”piede”> </div> Realizziamo ogni tipologia aggiungendo Fluid al tremplate HTML Fluid <f:section>
  • 23. <div id=”intestazione”> </div> Fluid <f:section> <f:section name="HeaderHome"> <div id="header" class="home"> <f:cObject typoscriptObjectPath="lib.Slider" /> <f:cObject typoscriptObjectPath="lib.TopNav"/> </div> </f:section> <f:section name="HeaderInterne"> <div id="header"> <f:cObject typoscriptObjectPath="lib.header" /> <f:cObject typoscriptObjectPath="lib.TopNav"/> </div> </f:section>
  • 24. <div id=”centrale”> </div> <f:section name=”MainHome”> <div id=”content” class=”home”> <f:cObject typoscriptObjectPath=”lib.pagetitle" /> <f:cObject typoscriptObjectPath=”lib.content” /> </div> </f:section> <f:section name=”MainInterne”> <div id=”content”> <f:cObject typoscriptObjectPath=”lib.pagetitle” /> <f:cObject typoscriptObjectPath=”lib.content” /> </div> </f:section> <f:section name=”MainNav”> <div id=”sidebar”> <f:cObject typoscriptObjectPath=”lib.LeftNav” /> </div> <div id=”content”> <f:cObject typoscriptObjectPath=”lib.pagetitle” /> <f:cObject typoscriptObjectPath=”lib.content” /> </div> </f:section> Fluid <f:section>
  • 25. Come applico questo codice alle pagine del mio sito? BackEnd Layout
  • 27. 1 - Home Intestazione grande e animata + spazio full-size per i contenuti + footer automatico BackEnd Layout lib.Slider lib.content
  • 28. 2 - Pagine Interne Intestazione bassa per immagine fissa + spazio full-size per i contenuti + footer automatico BackEnd Layout lib.header lib.content
  • 29. 3 – Pagine con Navigazione Laterale Intestazione bassa per immagine fissa + colonna laterale per la navigazione + colonna per i contenuti + footer automatico BackEnd Layout
  • 30. Assegnazione del BackEnd Layout nelle proprietà delle pagine BackEnd Layout
  • 31. L'ambiente di lavoro del Content Editor deve rispecchiare il layout del sito BackEnd Layout
  • 33. page.10 = FLUIDTEMPLATE page.10.file = fileadmin/templates/t3camp.html TypoScript
  • 34. Come comunicano BackEnd Layout dentro TYPO3 con le <f:section> nel template HTML? TypoScript t3camp.htm l <f:section > BeLayou t 3 BeLayou t 2 TYPO3 BeLayou t 1
  • 35. Variabile per selezionare la “section” in base al BElayout della pagina: lib.BElayoutUID = TEXT lib.BElayoutUID { data = field:backend_layout ifEmpty.cObject = TEXT ifEmpty.cObject { data = levelfield:-1, backend_layout_next_level, slide override.data = page:backend_layout } } TypoScript
  • 36. <div id=”intestazione”> <f:if condition=”{f:cObject(typoscriptObjectPath:'lib.BElayoutUID')} == 1”> <f:then> <f:render section="HeaderHome" /> </f:then> <f:else> <f:render section="Header" /> </f:else> </f:if> </div> <f:section name="HeaderHome"> <div id="header" class="home"> <f:cObject typoscriptObjectPath="lib.Slider" /> <f:cObject typoscriptObjectPath="lib.TopNav" /> </div> </f:section> <f:section name="Header"> <div id="header"> <f:cObject typoscriptObjectPath="lib.header" /> <f:cObject typoscriptObjectPath="lib.TopNav" /> </div> </f:section> Fluid <f:if condition>
  • 37. <div id="centrale"> <f:if condition="{f:cObject(typoscriptObjectPath:'lib.BElayoutUID')} == 1"> <f:then> <f:render section="MainHome" /> </f:then> </f:if> <f:if condition="{f:cObject(typoscriptObjectPath:'lib.BElayoutUID')} == 2"> <f:then> <f:render section="MainInterne" /> </f:then> </f:if> <f:if condition="{f:cObject(typoscriptObjectPath:'lib.BElayoutUID')} == 3"> <f:then> <f:render section="MainNav" /> </f:then> </f:if> </div> Fluid <f:if condition>
  • 38. Fluid <f:if condition> Vista Backend e Frontend di una pagina con layout per pagine interne con navigazione
  • 39. Ora è il momento dei contenuti! i Contenuti
  • 40. i Contenuti 4 colonne con bordi 1 colonna 2 colonne 3 colonne
  • 41. Creare i record GridElements GridElements
  • 42. Il content editor può scegliere come disporre i contenuti GridElements
  • 43. tt_content.gridelements_pi1.10=<lib.stdheader tt_content.gridelements_pi1.20.10.setup { # ID 1 – Grid a 1 colonna 1 < lib.gridelements.defaultGridSetup 1.columns { 0 < .default 0.wrap = <div class="large-12 columns">|</div> } 1.wrap = <div class="row nospace">|</div> # ID 2 - Grid a 2 colonne 50 50 2 < lib.gridelements.defaultGridSetup 2.columns { 0 < .default 0.wrap = <div class="large-6 columns">|</div> 1 < .default 1.wrap = <div class="large-6 columns">|</div> } 2.wrap = <div class="row nospace">|</div> … } GridElements
  • 47. Non solo BackEnd Layout e GridElements MultiColumn Multiple Content TemplaVoila Fluid Content Engine Flux le Alternative
  • 48. Progettare pensando anche al Content Editor le Conclusioni
  • 50. La Forza è nulla senza il controllo le Conclusioni
  • 51. the End Grazie per l’attenzione