SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
¡TWIG DESDE 0!
APRENDAMOS QUÉ ES Y CÓMO UTILIZARLO
LOS QUE OS VAN A DAR LA CHAPA
JORGE DÍAZ AMIGO
DESARROLLADOR FRONTEND ASPGEMS
Twitter: @YnarBurmecia
LOS QUE OS VAN A DAR LA CHAPA
MIGUEL ÁNGEL CARO GARCÍA
DESARROLLADOR FRONT-END Y OCASIONALMENTE BACK-END (le doy a todo lo
que pueda XD)
DESARROLLADOR EN ASPgems
Twitter: @miguelAngCaro
ÍNDICE
1. TWIG ¿Qué es?
2. ¿Cómo funciona TWIG?
3. Nomenclatura básica (variables, comentarios, etc..)
4. “Herramientas de TWIG” (Filtros, funciones, etc...)
5. Depuración en TWIG.
6. Sistema de herencia de plantillas.
7. Twig Tweak.
8. Parte práctica.
¿Empezamos?
¿Qué es TWIG?
- Es un motor y lenguaje de plantillas usado por Drupal 8.
- Sistema encapsulado de trabajo.
- Flexible y rápido.
- Herencia de plantillas y extensiones -> (¡¡Por fin tenemos la casa limpia!!)
- Adios PHP
¿Qué es TWIG?
- Amigable, tanto para el diseñador como para el desarrollador.
- Separa y queda bien definida la separación entre lógica funcional y capa de
presentación.
- Seguro → Tiene un modo recinto de seguridad.
ANTES DE NADA … VISTAZO ATRÁS
Drupal 7
HTML generado en módulos
Preprocess y process
PHP en plantillas
Ocasionalmente puede complicarse cambiar cosas muy concretas
Theming disperso
¿Cómo funciona TWIG?
Se resume en 4 pasos:
- Cargar la plantilla: Si la plantilla está cargada, se va al último paso
“Evaluación de la plantilla”, sino:
- Analizador léxico: reduce la plantilla (código fuente) a pequeñas piezas(secuencia de
símbolos) para poder compilarlas fácilmente.
- Analizador sintáctico: convierte esa secuencia de símbolos en “el árbol de sintáxis abstracta”.
¿Cómo funciona TWIG?
- El compilador → coge ese árbol de nodos y lo transforma a código PHP.
- Evaluación de plantilla → llama al método display() de la plantilla compilada
adjuntando el contexto.
Nomenclatura TWIG
Sintaxis básica:
{{ informacion }} → Mostramos información.
{# comentarios #} → Comentarios en la plantilla.
{% Código %} → Ejecutar lógica.
Nomenclatura TWIG
- Crear variables:
{%set nombre = ‘Pepito’ %}
Mi nombre el {{ nombre }}
Nomenclatura TWIG
Variables simples:
{{ variable_simple }}
Nomenclatura TWIG
Variables complejas:
{{ variable.title }}
Nomenclatura TWIG
Busca:
$variable[‘title’] → Array con clave asociativa.
$variable -> title → Objeto y atributo.
$variable-> title() → Método
$variable -> getTitle() → Get
$variable -> isTitle() → Is
Nomenclatura TWIG
Sentencias:
IF:
{% if variable == false %}
<p>Hello</p>
{% endif %}
------------------------------------------------------------------------------------------
{% if variable > 10 and variable < 27 %}
<p>Hello</p>
{% endif %}
Nomenclatura TWIG
FOR:
{% for variable in variables %}
<li>{{ variable|upper }}</li>
{% endfor %}
Macros
Nos permiten crear elementos genéricos y reutilizarlos después.
Declaración en cualquier plantilla:
{% macro input(name, value, type, size) %}
<input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
{% endmacro %}
Importación:
{% import "forms.html" as forms %}
Macros
Invocación:
El número de atributos puede variar, valor default en los que no se introduzcan
<p>{{ forms.input('username') }}</p>
<p>{{ forms.input('password', null, 'password') }}</p>
Uso en el mismo documento donde están definidos “_self”
{% import _self as forms %}
<p>{{ forms.input('username') }}</p>
Herramientas TWIG
FILTROS:
{{‘Users’|upper}}
abs batch capitalize convert_encoding date date_modify default escape first
format join json_encode keys last length lower merge nl2br number_format raw
replace reverse round slice sort split
http://twig.sensiolabs.org/doc/filters/index.html
Herramientas TWIG
Traducción:
{{‘Users’|t}} → Cadena para traducir
Herramientas TWIG
Funciones:
attribute block constant cycle date dump include max min
parent random range
http://twig.sensiolabs.org/doc/functions/index.html
Depuración de TWIG
- Inspección de plantillas. Nos permite “depurar” las plantillas.
- ¿Cómo? → en services.yml habilitando:
$settings[‘twig_debug’] = TRUE;
Depuración de TWIG
Obtenemos esta información:
Depuración de TWIG
Otro modo de depuración (utilizando la función dump):
Depuración de TWIG
Utilización de Kint.
Con drupal console.
- drupal module:install devel
- drupal module:install kint
En template:
- {{ kint(page.content) }}
Twig auto reload
Detección automática de cambios en las plantillas
Desactivado por defecto, se activa al activar la depuración
Mola!
Configurable en el services.yml
Habilitar sólo en desarrollo
Twig caché
Activada automáticamente en entornos de desarrollo.
Las plantilla se cachean al crearse para mayor velocidad
NO afecta ni al debug ni al reload -> no hace falta limpiarla al añadir cosas nuevas
Configurable en el services.yml
Desactivar en producción
Herencia de plantillas
- Permite crear una plantilla a base (definiendo bloques genéricos), a
continuación definir plantillas hijas que modifiquen esos bloques.
Herencia de plantillas
- base.html.twig
Herencia de plantillas
- blog.html.twig
Herencia de plantillas
Resultado Final
Herencia de plantillas
Consejos:
- Si utilizas la etiqueta {% extend %}, debe ser la primera de la plantilla.
- Si copias y pegas varias veces el contenido, mejor meterlo en una plantilla a
parte y añadirla donde queramos con un “include”.
Herencia de plantillas
- Obtener contenido de la plantilla padre {{parent()}}
Twig Tweak
Es un módulo de drupal que permite insertar en las plantillas de forma sencilla:
- Bloques.
- Entidades.
- Vistas.
- Tokens.
- Configuración.
- etc...
Twig Tweak
- Vistas:
- {{ drupal_view('view_name', 'page_1') }}
- Bloques:
- {{ drupal_block('bartik_powered') }}
- Entidades:
- {{ drupal_entity('node', 1, 'teaser') }}
- Tokens:
- {{ drupal_token('site:name') }}
- Configuración:
- {{ drupal_config('system.site', 'name') }}
Parte práctica
Configuración TWIG:
https://www.drupal.org/node/1903374
Parte práctica
1. Configuración de depuración.
2. Depuración con kint.
3. Cómo inicializar variables.
4. Utilización de filtros (capitalize, upper, number format filter).
FIN
Gracias por vuestra atención

Más contenido relacionado

Destacado

Come stanno cambiando i Motori di Ricerca
Come stanno cambiando i Motori di RicercaCome stanno cambiando i Motori di Ricerca
Come stanno cambiando i Motori di RicercaFrancesco Piersimoni
 
What a wonderful Japanese food is! Japan gourmetpedia
What a wonderful Japanese food is! Japan gourmetpediaWhat a wonderful Japanese food is! Japan gourmetpedia
What a wonderful Japanese food is! Japan gourmetpediaNoriaki Takamizawa
 
Web Marketing per il Turismo
Web Marketing per il TurismoWeb Marketing per il Turismo
Web Marketing per il TurismoData For Business
 
Comunicare in modo semplice per arrivare al cuore dei clienti” #ISBF16
Comunicare in modo semplice per arrivare al cuore dei clienti” #ISBF16Comunicare in modo semplice per arrivare al cuore dei clienti” #ISBF16
Comunicare in modo semplice per arrivare al cuore dei clienti” #ISBF16Social Minds
 
Tanques septicos
Tanques septicosTanques septicos
Tanques septicosumbriakeily
 
Facturación en salud milena
Facturación en salud milenaFacturación en salud milena
Facturación en salud milenamilegranados
 
International Social Media Contest Ferrari – by Webing
International Social Media Contest Ferrari – by WebingInternational Social Media Contest Ferrari – by Webing
International Social Media Contest Ferrari – by WebingAndrea D'Ottavio
 
Anomaly Detection @Twitter
Anomaly Detection @TwitterAnomaly Detection @Twitter
Anomaly Detection @TwitterZhan Zhang
 
Internet delle Relazioni. Dal prodotto percepito al prodotto condiviso: verso...
Internet delle Relazioni. Dal prodotto percepito al prodotto condiviso: verso...Internet delle Relazioni. Dal prodotto percepito al prodotto condiviso: verso...
Internet delle Relazioni. Dal prodotto percepito al prodotto condiviso: verso...Social Minds
 
La collaborazione tra imprese conviene? La Partnership come soluzione vincente
La collaborazione tra imprese conviene? La Partnership come soluzione vincenteLa collaborazione tra imprese conviene? La Partnership come soluzione vincente
La collaborazione tra imprese conviene? La Partnership come soluzione vincenteData For Business
 
Compensation given in clinical trial
Compensation given in clinical trialCompensation given in clinical trial
Compensation given in clinical trialNeha Singh
 
FSE 2016 Panel: The State of Software Engineering Research
FSE 2016 Panel: The State of Software Engineering ResearchFSE 2016 Panel: The State of Software Engineering Research
FSE 2016 Panel: The State of Software Engineering ResearchMargaret-Anne Storey
 
Restart wine - La comunicazione nel mondo del vino. Dall'etichetta all'esperi...
Restart wine - La comunicazione nel mondo del vino. Dall'etichetta all'esperi...Restart wine - La comunicazione nel mondo del vino. Dall'etichetta all'esperi...
Restart wine - La comunicazione nel mondo del vino. Dall'etichetta all'esperi...Redfish - Strategie di Comunicazione
 
Law case study by neetu
Law case study by neetuLaw case study by neetu
Law case study by neetuNeetu Marwah
 
The Law on Extradition
The Law on ExtraditionThe Law on Extradition
The Law on ExtraditionQuincy Kiptoo
 

Destacado (17)

Come stanno cambiando i Motori di Ricerca
Come stanno cambiando i Motori di RicercaCome stanno cambiando i Motori di Ricerca
Come stanno cambiando i Motori di Ricerca
 
What a wonderful Japanese food is! Japan gourmetpedia
What a wonderful Japanese food is! Japan gourmetpediaWhat a wonderful Japanese food is! Japan gourmetpedia
What a wonderful Japanese food is! Japan gourmetpedia
 
Web Marketing per il Turismo
Web Marketing per il TurismoWeb Marketing per il Turismo
Web Marketing per il Turismo
 
Comunicare in modo semplice per arrivare al cuore dei clienti” #ISBF16
Comunicare in modo semplice per arrivare al cuore dei clienti” #ISBF16Comunicare in modo semplice per arrivare al cuore dei clienti” #ISBF16
Comunicare in modo semplice per arrivare al cuore dei clienti” #ISBF16
 
Tanques septicos
Tanques septicosTanques septicos
Tanques septicos
 
Facturación en salud milena
Facturación en salud milenaFacturación en salud milena
Facturación en salud milena
 
International Social Media Contest Ferrari – by Webing
International Social Media Contest Ferrari – by WebingInternational Social Media Contest Ferrari – by Webing
International Social Media Contest Ferrari – by Webing
 
Anomaly Detection @Twitter
Anomaly Detection @TwitterAnomaly Detection @Twitter
Anomaly Detection @Twitter
 
Internet delle Relazioni. Dal prodotto percepito al prodotto condiviso: verso...
Internet delle Relazioni. Dal prodotto percepito al prodotto condiviso: verso...Internet delle Relazioni. Dal prodotto percepito al prodotto condiviso: verso...
Internet delle Relazioni. Dal prodotto percepito al prodotto condiviso: verso...
 
La collaborazione tra imprese conviene? La Partnership come soluzione vincente
La collaborazione tra imprese conviene? La Partnership come soluzione vincenteLa collaborazione tra imprese conviene? La Partnership come soluzione vincente
La collaborazione tra imprese conviene? La Partnership come soluzione vincente
 
Compensation given in clinical trial
Compensation given in clinical trialCompensation given in clinical trial
Compensation given in clinical trial
 
FSE 2016 Panel: The State of Software Engineering Research
FSE 2016 Panel: The State of Software Engineering ResearchFSE 2016 Panel: The State of Software Engineering Research
FSE 2016 Panel: The State of Software Engineering Research
 
Taipei 101
Taipei 101Taipei 101
Taipei 101
 
Restart wine - La comunicazione nel mondo del vino. Dall'etichetta all'esperi...
Restart wine - La comunicazione nel mondo del vino. Dall'etichetta all'esperi...Restart wine - La comunicazione nel mondo del vino. Dall'etichetta all'esperi...
Restart wine - La comunicazione nel mondo del vino. Dall'etichetta all'esperi...
 
Law case study by neetu
Law case study by neetuLaw case study by neetu
Law case study by neetu
 
Hilversummediacampus mediawijsheid - saxion - john leek-081116
Hilversummediacampus   mediawijsheid - saxion - john leek-081116Hilversummediacampus   mediawijsheid - saxion - john leek-081116
Hilversummediacampus mediawijsheid - saxion - john leek-081116
 
The Law on Extradition
The Law on ExtraditionThe Law on Extradition
The Law on Extradition
 

Similar a ¡Twig desde 0!

Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Javier Eguiluz
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
Taller de Drupal - Sesión 4
Taller de Drupal - Sesión 4Taller de Drupal - Sesión 4
Taller de Drupal - Sesión 4SEAT, S.A.
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...Pedro Manuel Baeza Romero
 
Views 3: Qué hay de nuevo
Views 3: Qué hay de nuevoViews 3: Qué hay de nuevo
Views 3: Qué hay de nuevoYmbra
 
Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Sara Lissette L. Ibáñez
 
Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014
Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014
Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014Laura Melo
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesdeivit86
 
Plantillas en Drupal 6
Plantillas en Drupal 6Plantillas en Drupal 6
Plantillas en Drupal 6Manuel Garcia
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosJosé Antonio Sandoval Acosta
 
gestion de datos de informacion
gestion de datos de informaciongestion de datos de informacion
gestion de datos de informacionPedro Kent
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
 

Similar a ¡Twig desde 0! (20)

Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Taller de Drupal - Sesión 4
Taller de Drupal - Sesión 4Taller de Drupal - Sesión 4
Taller de Drupal - Sesión 4
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
 
Views 3: Qué hay de nuevo
Views 3: Qué hay de nuevoViews 3: Qué hay de nuevo
Views 3: Qué hay de nuevo
 
Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!
 
Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014
Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014
Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014
 
1 -programacion_oo
1  -programacion_oo1  -programacion_oo
1 -programacion_oo
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensiones
 
Plantillas en Drupal 6
Plantillas en Drupal 6Plantillas en Drupal 6
Plantillas en Drupal 6
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
gestion de datos de informacion
gestion de datos de informaciongestion de datos de informacion
gestion de datos de informacion
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
 

Último

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 

Último (19)

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 

¡Twig desde 0!

  • 1. ¡TWIG DESDE 0! APRENDAMOS QUÉ ES Y CÓMO UTILIZARLO
  • 2. LOS QUE OS VAN A DAR LA CHAPA JORGE DÍAZ AMIGO DESARROLLADOR FRONTEND ASPGEMS Twitter: @YnarBurmecia
  • 3. LOS QUE OS VAN A DAR LA CHAPA MIGUEL ÁNGEL CARO GARCÍA DESARROLLADOR FRONT-END Y OCASIONALMENTE BACK-END (le doy a todo lo que pueda XD) DESARROLLADOR EN ASPgems Twitter: @miguelAngCaro
  • 4. ÍNDICE 1. TWIG ¿Qué es? 2. ¿Cómo funciona TWIG? 3. Nomenclatura básica (variables, comentarios, etc..) 4. “Herramientas de TWIG” (Filtros, funciones, etc...) 5. Depuración en TWIG. 6. Sistema de herencia de plantillas. 7. Twig Tweak. 8. Parte práctica.
  • 6. ¿Qué es TWIG? - Es un motor y lenguaje de plantillas usado por Drupal 8. - Sistema encapsulado de trabajo. - Flexible y rápido. - Herencia de plantillas y extensiones -> (¡¡Por fin tenemos la casa limpia!!) - Adios PHP
  • 7. ¿Qué es TWIG? - Amigable, tanto para el diseñador como para el desarrollador. - Separa y queda bien definida la separación entre lógica funcional y capa de presentación. - Seguro → Tiene un modo recinto de seguridad.
  • 8. ANTES DE NADA … VISTAZO ATRÁS
  • 9. Drupal 7 HTML generado en módulos Preprocess y process PHP en plantillas Ocasionalmente puede complicarse cambiar cosas muy concretas Theming disperso
  • 10. ¿Cómo funciona TWIG? Se resume en 4 pasos: - Cargar la plantilla: Si la plantilla está cargada, se va al último paso “Evaluación de la plantilla”, sino: - Analizador léxico: reduce la plantilla (código fuente) a pequeñas piezas(secuencia de símbolos) para poder compilarlas fácilmente. - Analizador sintáctico: convierte esa secuencia de símbolos en “el árbol de sintáxis abstracta”.
  • 11. ¿Cómo funciona TWIG? - El compilador → coge ese árbol de nodos y lo transforma a código PHP. - Evaluación de plantilla → llama al método display() de la plantilla compilada adjuntando el contexto.
  • 12. Nomenclatura TWIG Sintaxis básica: {{ informacion }} → Mostramos información. {# comentarios #} → Comentarios en la plantilla. {% Código %} → Ejecutar lógica.
  • 13. Nomenclatura TWIG - Crear variables: {%set nombre = ‘Pepito’ %} Mi nombre el {{ nombre }}
  • 16. Nomenclatura TWIG Busca: $variable[‘title’] → Array con clave asociativa. $variable -> title → Objeto y atributo. $variable-> title() → Método $variable -> getTitle() → Get $variable -> isTitle() → Is
  • 17. Nomenclatura TWIG Sentencias: IF: {% if variable == false %} <p>Hello</p> {% endif %} ------------------------------------------------------------------------------------------ {% if variable > 10 and variable < 27 %} <p>Hello</p> {% endif %}
  • 18. Nomenclatura TWIG FOR: {% for variable in variables %} <li>{{ variable|upper }}</li> {% endfor %}
  • 19. Macros Nos permiten crear elementos genéricos y reutilizarlos después. Declaración en cualquier plantilla: {% macro input(name, value, type, size) %} <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" /> {% endmacro %} Importación: {% import "forms.html" as forms %}
  • 20. Macros Invocación: El número de atributos puede variar, valor default en los que no se introduzcan <p>{{ forms.input('username') }}</p> <p>{{ forms.input('password', null, 'password') }}</p> Uso en el mismo documento donde están definidos “_self” {% import _self as forms %} <p>{{ forms.input('username') }}</p>
  • 21. Herramientas TWIG FILTROS: {{‘Users’|upper}} abs batch capitalize convert_encoding date date_modify default escape first format join json_encode keys last length lower merge nl2br number_format raw replace reverse round slice sort split http://twig.sensiolabs.org/doc/filters/index.html
  • 23. Herramientas TWIG Funciones: attribute block constant cycle date dump include max min parent random range http://twig.sensiolabs.org/doc/functions/index.html
  • 24. Depuración de TWIG - Inspección de plantillas. Nos permite “depurar” las plantillas. - ¿Cómo? → en services.yml habilitando: $settings[‘twig_debug’] = TRUE;
  • 25. Depuración de TWIG Obtenemos esta información:
  • 26. Depuración de TWIG Otro modo de depuración (utilizando la función dump):
  • 27. Depuración de TWIG Utilización de Kint. Con drupal console. - drupal module:install devel - drupal module:install kint En template: - {{ kint(page.content) }}
  • 28. Twig auto reload Detección automática de cambios en las plantillas Desactivado por defecto, se activa al activar la depuración Mola! Configurable en el services.yml Habilitar sólo en desarrollo
  • 29. Twig caché Activada automáticamente en entornos de desarrollo. Las plantilla se cachean al crearse para mayor velocidad NO afecta ni al debug ni al reload -> no hace falta limpiarla al añadir cosas nuevas Configurable en el services.yml Desactivar en producción
  • 30. Herencia de plantillas - Permite crear una plantilla a base (definiendo bloques genéricos), a continuación definir plantillas hijas que modifiquen esos bloques.
  • 31. Herencia de plantillas - base.html.twig
  • 32. Herencia de plantillas - blog.html.twig
  • 34. Herencia de plantillas Consejos: - Si utilizas la etiqueta {% extend %}, debe ser la primera de la plantilla. - Si copias y pegas varias veces el contenido, mejor meterlo en una plantilla a parte y añadirla donde queramos con un “include”.
  • 35. Herencia de plantillas - Obtener contenido de la plantilla padre {{parent()}}
  • 36. Twig Tweak Es un módulo de drupal que permite insertar en las plantillas de forma sencilla: - Bloques. - Entidades. - Vistas. - Tokens. - Configuración. - etc...
  • 37. Twig Tweak - Vistas: - {{ drupal_view('view_name', 'page_1') }} - Bloques: - {{ drupal_block('bartik_powered') }} - Entidades: - {{ drupal_entity('node', 1, 'teaser') }} - Tokens: - {{ drupal_token('site:name') }} - Configuración: - {{ drupal_config('system.site', 'name') }}
  • 39. Parte práctica 1. Configuración de depuración. 2. Depuración con kint. 3. Cómo inicializar variables. 4. Utilización de filtros (capitalize, upper, number format filter).