50
www.t3campitalia.it 2014 [email protected] T3Camp Italia Milano, 14 e 15 Marzo 2014 Fluid Powered TYPO3 Maurizio Morini Gamm System Srl

Fluid Powered TYPO3

Embed Size (px)

DESCRIPTION

Questo intervento si rivolge ai web designer senza particolari conoscenze di sviluppo TYPO3 e tratta della creazione di templates di pagine e contenuti attraverso il 
framework Fluid Powered TYPO3

Citation preview

Page 1: Fluid Powered TYPO3

www.t3campitalia.it 2014 [email protected]

T3Camp Italia Milano, 14 e 15 Marzo 2014

Fluid Powered TYPO3

Maurizio MoriniGamm System Srl

Page 2: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Sono Maurizio Morini socio fondatore di Gamm System

mi occupo della progettazione di siti internet basati su TYPO3

2

Questo intervento si rivolge ai web designer senza particolari conoscenze di sviluppo TYPO3

e tratta di templating attraverso il framework Fluid Powered TYPO3

Page 3: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Contesto

3

Page 4: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Evoluzione TYPO3 4

Page 5: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Framework di sviluppo 5

Page 6: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Pattern MVC

6

Model ControllerView

Page 7: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

7

Fluid

Pattern MVC

Page 8: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Fluid

Fluid è un linguaggio di templating che oltre a formattare i contenuti permette di processare l’output attraverso i suoi helper tag, meglio conosciuti come ViewHelper

8

Page 9: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

www.fedext.net

9

Page 10: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

FedExtUtilizza Fluid per ogni singolo aspetto di design e layout dell’output TYPO3

quindi

mi posso concentrare sulla costruzione dei templates utilizzando solamente Fluid assieme ai soliti strumenti (html, css e javascript)

10

Page 11: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Flux• Flux è il cuore di ogni extension FedExt

ed il suo scopo è di integrare un Flex Form dinamico direttamente all’interno del template Fluid

• Flux permette di creare form fields di configurazione all’interno degli header di pagina e nei contenuti.

11

Page 12: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

VHS

• VHS è una libreria di ViewHelpers che permettono funzioni avanzate di formattazione, interazione e manipolazione dei dati all’interno di un template Fluid

12

Page 13: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Fluid Pages

• Fluid Pages è una extension con l’unico compito di interagire con il backend TYPO3 per il rendering dei template di pagina Fluid

13

Page 14: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Fluid Content

• Fluid Content, come Fluid Pages, ha il compito di interagire con il backend TYPO3 e permette ad un singolo template Fluid di essere usato come content element.

14

Page 15: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

FedExt Core

15

Fluid Content

Fluid Pages

Flux

VHS

Page 16: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Implementazione

16

Page 17: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Creazione extension• Creo con Extension Builder

una ext vuota: fluidcontent_t3campitalia

• Creo un file di configurazione typoscript

• Modifico ext_table.php per includere il setup typoscript e registrare la extension come provider di page template e content template

17

Page 18: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Configuration/Typoscript/setup.txt

plugin.tx_fluidcontentt3campitalia.view {!!! templateRootPath = !EXT:fluidcontent_t3campitalia/Resources/Private/Templates/!!! partialRootPath = !EXT:fluidcontent_t3campitalia/Resources/Private/Partials/ !!! layoutRootPath = !EXT:fluidcontent_t3campitalia/Resources/Private/Layouts/!!} !

18

Page 19: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

ext_table.php

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'fluidcontent_t3campitalia');!!Tx_Flux_Core::registerProviderExtensionKey('fluidcontent_t3campitalia', ‘Page');!!Tx_Flux_Core::registerProviderExtensionKey('fluidcontent_t3campitalia', 'Content');!

19

Page 20: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Templates Fluid• Layouts: creano la struttura generale della

pagina e sono utilizzati da più templates

• Templates: sono il vero e proprio template referenziato dal Controller per il rendering dell’output della ext.

• Partials: sono templates di parti di codice utilizzate in più Layouts/Templates

20

Page 21: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

fluidcontent_t3campitalia

21

Page 22: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resource/Private

22

Page 23: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Public

23

Page 24: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Fluidpages

24

Page 25: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Frontend

25

Page 26: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Layouts/Page.html

{namespace v=Tx_Vhs_ViewHelpers}!<f:layout name="Page" />!!<v:asset.style name=“bootstrap-css" !path="EXT:fluidcontent_t3campitalia/Resources/Public/bootstrap.min.css"/>!<v:asset.style name="main-css" dependencies=“bootstrap-css" !path="EXT:fluidcontent_t3campitalia/Resources/Public/main.css"/>!!<v:asset.script name="jquery" allowMoveToFooter="false"!path="EXT:fluidcontent_t3campitalia/Resources/Public/jquery-1.9.0.min.js"/>!<v:asset.script name="bootstrap-core" dependencies="jquery"!path="EXT:fluidcontent_t3campitalia/Resources/Public/bootstrap.min.js"/>!!<div class=“container {settings.pageClass}"> !! <f:render section="Header" partial=“Header" arguments="{_all}"/>!! <f:render section="Content"></f:render> !</div>

26

Page 27: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

https://fedext.net/viewhelpers

27

Page 28: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Templates/Page/FontPage.html

{namespace v=Tx_Vhs_ViewHelpers}!{namespace flux=Tx_Flux_ViewHelpers}!!<f:layout name="Page" />!!<f:section name="Configuration">!! <flux:flexform !! ! id="front" !! ! label="Front Page" !! ! icon="{f:uri.resource(path: ‘Icons/t3camp_2014_mid.png')}">!! <!-- Input field variabile 'pageClass' -->! <flux:flexform.field.input !! ! ! label="classe pagina" !! ! ! name="settings.pageClass" !! ! ! default="Frontpage-css-class"/>!!

Continua»

28

Page 29: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Templates/Page/FontPage.html

<!-- Backend layout grid -->!! ! <flux:flexform.grid> !! ! ! <flux:flexform.grid.row> !! ! ! ! <flux:flexform.grid.column !! ! ! ! ! colPos="0" !! ! ! ! ! label="Sidebar" !! ! ! ! ! name=“Sidebar">!! ! ! ! </flux:flexform.grid.column> !!! ! ! ! <flux:flexform.grid.column !! ! ! ! ! colPos="1" label="Content" name=“Content">!! ! ! ! </flux:flexform.grid.column> !!! ! ! </flux:flexform.grid.row> !! ! </flux:flexform.grid> !! </flux:flexform>!</f:section>!

Continua»

29

Page 30: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Templates/Page/FontPage.html

!<f:section name="Content">!! <div class=“row">!!! ! <div class="col-md-4" id="sidebar-col"> !! ! ! <v:page.content.render column="0"></v:page.content.render> !! ! </div> !!! ! <div class="col-md-8" id="content-col"> !! ! ! <v:page.content.render column="1"></v:page.content.render> !! ! </div> !! !!! </div>!</f:section>!!</div>

30

Page 31: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Backend: header di pagina

31

Page 32: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Backend: header di pagina

32

Page 33: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Partials/Header.html

{namespace v=Tx_Vhs_ViewHelpers}!<f:layout name="Page"/>!!! <f:section name="Header">!!! ! <v:switch value="{page.uid}">!! ! ! <v:case case="113" break="true">!!! ! ! ! <header class="jumbotron" role="banner">!! ! ! ! ! <f:image !src="EXT:fluidcontent_t3campitalia/Resources/Public/Icons/logo.png" !! ! ! ! ! alt="Logo" !! ! ! ! ! class=“pull-left"/>!!! ! ! ! ! <h1>Pagina T3CampItalia</h1>!! ! ! ! </header>!!! ! ! </v:case>!

Continua»

33

Page 34: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Partials/Header.html

!! ! ! <v:case case="default">!!! ! ! ! <header class="jumbotron" role="banner">!!! ! ! ! ! <h1>Page</h1>!!! ! ! ! </header>!!! ! ! </v:case>!! ! </v:switch>!! </f:section>!!</div>!

34

Page 35: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Frontend

35

Page 36: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Fluidcontent

36

Page 37: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Backend: header di pagina

37

Page 38: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Layouts/Content.html

<f:layout name="Content"/>!!<f:render section="Main"/>

38

Page 39: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Templates/Content/Alert.html

{namespace flux=Tx_Flux_ViewHelpers}!{namespace v=Tx_Vhs_ViewHelpers}!<f:layout name="Content" />!!<f:section name="Configuration">!! <flux:flexform wizardTab="Media" !! ! label="Alert box" !! ! description="Esempio di Fluidcontent per T3CampItalia 2014" id="alert" !! ! icon="{v:extension.path.resources(path: ‘Icons/t3camp_2014_mid.png')}">!!! ! <flux:flexform.field.input name="header" label="Header" />!! ! <flux:flexform.field.input name="closeLinkText" label="Close Link"/>!! ! <flux:flexform.field.select name="class" items="warning,info,success,danger" default="warning" label="Type" />!! ! <flux:flexform.field.checkbox label="Is Block?" name="isBlock" />!! ! !

Continua»

39

Page 40: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Templates/Content/Alert.html

! ! <flux:flexform.grid>!! ! ! <flux:flexform.grid.row>!! ! ! ! <flux:flexform.grid.column>!!! ! ! ! ! <flux:flexform.content name="content" />!!! ! ! ! </flux:flexform.grid.column>!! ! ! </flux:flexform.grid.row>!! ! </flux:flexform.grid>!! </flux:flexform>! !</f:section>!!!!!

Continua»

40

Page 41: Fluid Powered TYPO3

Pagina www.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Resources/Private/Templates/Content/Alert.html

!!<f:section name="Main">!! <div class="alert alert-{class} {f:if(condition: isBlock, then: ‘alert-block')}">!!! ! <f:if condition="{closeLinkText}">!! ! ! <a class="close" data-dismiss=“alert">!! ! ! ! <f:format.raw>{closeLinkText}</f:format.raw>!! ! ! </a>!! ! </f:if>!!! ! <f:if condition="{header}">!! ! ! <h1 class="alert-heading">{header}</h1>!! ! </f:if>!!! ! <flux:flexform.renderContent area="content" />!! </div>!</f:section>!

41

Page 42: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Backend: Fluidcontent disponibile in add content

42

Page 43: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Backend: Edito il Fluidconten

43

Page 44: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Backend: Edito il Fluidconten

44

Page 45: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Backend: Edito il Fluidconten

45

Page 46: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Backend: header di pagina

46

Page 47: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Conclusioni

47

Page 48: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Confronto con TV • Nessuna informazioni di templates è memorizzata nel

database • Quando si cambia il template non bisogna rimappare i

contenuti • Typoscript viene utilizzato solo per configurazioni: con

FedExt i menu vengono creati nel template Fluid • Fluid è utilizzato per tutti gli aspetti di definizione dei

templates e per processare i dati da visualizzare. • Attraverso Flux posso parametrizzare e configurare i

template di pagina e di contenuti, fornendo tantissime opzioni agli editori.

48

Page 49: Fluid Powered TYPO3

Paginawww.t3campitalia.it 2014

[email protected]

Fluid Powered TYPO3

Riferimenti

49

Fluid Power TYPO3: https://fedext.net/https://github.com/FluidTYPO3

Documentazione Fluid Power TYPO3: https://github.com/FluidTYPO3/documentation

Documentazione ViewHelpers: https://fedext.net/viewhelpers

!

!

Page 50: Fluid Powered TYPO3

www.t3campitalia.it 2014 [email protected]

T3Camp Italia Milano, 14 e 15 Marzo 2014

Fluid Powered TYPO3

Maurizio MoriniGamm System Srl