sculpin

35
Symfony Zgz Generación de sitios estáticos con Sculpin @symfony_zgz

Upload: symfony-zaragoza

Post on 20-Jun-2015

293 views

Category:

Internet


0 download

DESCRIPTION

Presentación del grupo local de Zaragoza sobre generación de sitios web estáticos con Sculpin.

TRANSCRIPT

Page 1: Sculpin

Symfony ZgzGeneración de sitios estáticos con Sculpin

@symfony_zgz

Page 2: Sculpin

Web dinámica● Servidores● Bases de datos● Instalaciones● Tiempo● …● $$$$$$$!!!!!!!!!!!!

Page 3: Sculpin

PerfilesAdemás…

¿Cuántos perfiles hacen falta?

Page 4: Sculpin

Sysadmins

Page 5: Sculpin

Backends

Page 6: Sculpin

Frontends

Page 7: Sculpin

Diseñadores

Page 8: Sculpin

SEO/SEM/Marketing

Page 9: Sculpin

Otros roles

Sinergia!!!

Valor añadido Forlayos derivables

Page 10: Sculpin

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!!!

Page 11: Sculpin

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/

Page 12: Sculpin

Github pages● Permite dominio propio

○ Apuntando a 204.232.175.78

● Github lo verifica○ Archivo “CNAME” en la raíz

del repositorio

Page 13: Sculpin

Sculpin● Generador de sitios estáticos● https://sculpin.io/● Utiliza:

○ YAML○ Twig○ Markdown○ Archivos estáticos!!○ Consola

Page 14: Sculpin

YAMLArchivos de configuraciónsculpin_content_types: posts: type: path path: _posts permalink: blog/:year/:month/:day/:filename/ taxonomies: - tags - categories

Page 15: Sculpin

YAMLMetadatos en el propio archivo del post---title: Happy Birthday Sculpin!tags: - sculpin - markdowncategories: - personal---

Page 16: Sculpin

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 %} ...

Page 17: Sculpin

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

Page 18: Sculpin

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 %}

Page 19: Sculpin

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

Page 20: Sculpin

Archivos estáticos

● Gran control del HTML generado

● SEO guy loves you!

Page 21: Sculpin

Dear frontend......dedica tu tiempo a cosas más divertidas!!!

Page 22: Sculpin

¿Todo bien hasta aquí?

Page 23: Sculpin

Consola!!!!

Page 24: Sculpin

Consola

Page 25: Sculpin

Composer● Sculpin incluye embebido composer

○ Archivo sculpin.json para gestión de dependencias

● No son necesarios muchos comandos

Page 26: Sculpin

Comandos● Instalar/actualizar dependencias

○ sculpin install● Montar servidor de desarrollo

○ sculpin generate --watch --server● Deploy

○ sculpin generate --env=prod

Page 27: Sculpin

Facilísimo!!!

Page 28: Sculpin

Pero...

Page 29: Sculpin

Externaliza!● Comentarios

○ https://developers.facebook.com/docs/plugins/comments

● Formularios○ http://webform.com○ https://www.surveymonkey.com/

● Estadísticas○ http://analytics.google.com

Page 30: Sculpin

Backend guy is unhappy

Page 31: Sculpin

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!!!

Page 32: Sculpin

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

Page 33: Sculpin

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'

);

}

}

Page 34: Sculpin

Que empiece la fiesta!!!

Page 35: Sculpin