Upload
symfony-zaragoza
View
293
Download
0
Embed Size (px)
DESCRIPTION
Presentación del grupo local de Zaragoza sobre generación de sitios web estáticos con Sculpin.
Citation preview
Symfony ZgzGeneración de sitios estáticos con Sculpin
@symfony_zgz
Web dinámica● Servidores● Bases de datos● Instalaciones● Tiempo● …● $$$$$$$!!!!!!!!!!!!
PerfilesAdemás…
¿Cuántos perfiles hacen falta?
Sysadmins
Backends
Frontends
Diseñadores
SEO/SEM/Marketing
Otros roles
Sinergia!!!
Valor añadido Forlayos derivables
Kill them all!!! (o casi)● Sysadmin → Github pages● Backend developers → Sculpin● Frontend developers → Bootstrap● Diseñadores → Themeforest● SEO → Nibbler/Woorank● Otros roles → Sentido común!!!
Github pages● Por usuario/organización
○ Creando repositorio {{usuario}}.github.io○ http://ericduran.github.io
● Por proyecto○ Creando rama gh-pages○ http://ericduran.github.io/drupalcores/
Github pages● Permite dominio propio
○ Apuntando a 204.232.175.78
● Github lo verifica○ Archivo “CNAME” en la raíz
del repositorio
Sculpin● Generador de sitios estáticos● https://sculpin.io/● Utiliza:
○ YAML○ Twig○ Markdown○ Archivos estáticos!!○ Consola
YAMLArchivos de configuraciónsculpin_content_types: posts: type: path path: _posts permalink: blog/:year/:month/:day/:filename/ taxonomies: - tags - categories
YAMLMetadatos en el propio archivo del post---title: Happy Birthday Sculpin!tags: - sculpin - markdowncategories: - personal---
Twig{% set year = '0' %}<h2>Posts Archive</h2>{% for post in page.pagination.items %} {% set this_year %}{{ post.date | date("Y") }}{% endset %} {% if year != this_year %} {% set month = '0' %} {% set year = this_year %} {% endif %} {% set this_month %}{{ post.date | date("F") }}{% endset %} {% if month != this_month %} {% set month = this_month %} ...
Markdown
Heading
=======
Sub-heading
-----------------
Paragraphs are separated
by a blank line.
Text attributes *italic*,
**bold**, `monospace`.
A [link](http://example.com).
<<< No space between ] and ( >>>
Shopping list:
* apples
* oranges
* pears
Numbered list:
1. apples
2. oranges
3. pears
The rain---not the reign---in Spain.
Reemplazo ASCII de código HTML
Archivos estáticos● Todo archivo en la carpeta correspondiente es el
equivalente a una entrada en base de datos (entidad).
● Generators: Páginas “plantilla” para mostrar estas entidades o listados de ellas.○ { use: [posts_categories] }
■ { % for category,posts in data.posts_categories %}○ { generator: pagination} ... { use: [posts] }
■ {% for post in page.pagination.items %}
Archivos estáticos● Mejor rendimiento no se puede!!● Sistema de layouts jerárquico gracias a Twig
---
layout: default
---
● Árbol de directorios sencillo○ app/config → YAML’s de configuraciones○ source → Código fuente○ source/_posts → Entidades “dinámicas” (en el ejemplo: posts)○ output_prod → Salida HTML para subir
Archivos estáticos
● Gran control del HTML generado
● SEO guy loves you!
Dear frontend......dedica tu tiempo a cosas más divertidas!!!
¿Todo bien hasta aquí?
Consola!!!!
Consola
Composer● Sculpin incluye embebido composer
○ Archivo sculpin.json para gestión de dependencias
● No son necesarios muchos comandos
Comandos● Instalar/actualizar dependencias
○ sculpin install● Montar servidor de desarrollo
○ sculpin generate --watch --server● Deploy
○ sculpin generate --env=prod
Facilísimo!!!
Pero...
Externaliza!● Comentarios
○ https://developers.facebook.com/docs/plugins/comments
● Formularios○ http://webform.com○ https://www.surveymonkey.com/
● Estadísticas○ http://analytics.google.com
Backend guy is unhappy
También backend!!● Sculpin utiliza el HTTP Kernel de Symfony.● Sistema de eventos.● Se pueden utilizar bundles de Symfony para
extender Sculpin con funcionalidades más avanzadas!!!
Eventos● Sculpin\Core\Sculpin::EVENT_BEFORE_RUN● Sculpin\Core\Sculpin::EVENT_BEFORE_CONVERT● Sculpin\Core\Sculpin::EVENT_AFTER_CONVERT● Sculpin\Core\Sculpin::EVENT_BEFORE_FORMAT● Sculpin\Core\Sculpin::EVENT_AFTER_FORMAT● Sculpin\Core\Sculpin::EVENT_AFTER_RUN
Bundles de terceros● Composer + Kernel… como en Symfony!!!<?php
class SculpinKernel extends \Sculpin\Bundle\SculpinBundle\HttpKernel\AbstractKernel
{
protected function getAdditionalSculpinBundles()
{
return array(
'Mavimo\Sculpin\Bundle\RedirectBundle\SculpinRedirectBundle'
);
}
}
Que empiece la fiesta!!!