SlideShare una empresa de Scribd logo
Generador de páginas estáticas
●
●

Github: https://github.com/yosymfony/Spress
Twitter: @spress_cms

Sobre mí: Víctor Puertas
●
●

@yosymfony, @victorpuertas
http://yosymfony.com
¿Qué es?
Generador de páginas estáticas escrito en PHP.
Convierte ficheros Markdown, templates Twig y
HTML en un sitio estático.
Útil para crear blogs, landing pages, páginas de
eventos, “about me” etc...
¿Por qué?
Templates: Código reutilizable. Potencian del
motor de plantillas Twig.
Extensible: Cada sitio puede tener plugins que
extienden la funcionalidad de Spress.
Blogs: Crear post en Markdown.
Ventajas
100% escalable.
● Velocidad.
● Bajo coste mantenimiento.
● Mínimos requisitos para el hosting.
● Deploy sencillo.
● Temas totalmente personalizables.
● Plugins escritos en PHP.
●
Requisitos

Unix, Linux o Mac OS X
● PHP >= 5.4
● Composer
●
Estructura de un sitio

.
|- config.yml
|- composer.json
|- _includes/
|- _layouts/
| |- default.html
| |- post.html
|- _posts/
| |- 2013-12-23-example-post.md
|- _plugins/
|- _site/
|- index.html
Estructura de un sitio
Crear un sitio. Comando site:new
site:new [path[="./"]]
[template[="blank"]] [--force] [-all]
spress site:new /directorio
o
spress site:new /directorio spresso
Estructura de un sitio
Construir un sitio. Comando site:build
site:build [-s|--source[="./"]]
[--timezone[="..."]] [--drafts]
[--safe]
spress site:build
Resultados generados en _site/
config.yml

Fichero de configuración del sitio.
Formato YAML.
Cambiar el comportamiento por defecto Spress.
● Definir variables propias.
●
config.yml
author:
name: Your Name
twitter: spress_cms
# Page menus
menu:
- { name: Home, url: / }
Paginate: 5
permalink: pretty
config.yml
Desde una plantilla Twig:
<ul>
{% for link in site.menu %}
<li>
<a href="{{ link.url }}">
{{ link.name }}
</a>
</li>
{% endfor %}
</ul>
Posts
Se almacenan en _posts/
● Formato: Markdown (extensible a otros)
● El nombre de cada post tiene un formato:
●

year-month-day-title.md
Ej: 2014-01-21-mi-primer-post.md
Posts
--layout: default
Draft: true
--This is a post. You can mixing text
and HTML like this:
<a href="{{ site.url }}"/about/>About
me</a>.
Uses variables in Markdown link:
[Home](<{{ site.url }}>)
Posts: Front-matter
Configurar el post + variables propias.
–-layout: default
title: Curso de PHP
categories: [eventos]
tags: [noticias, novedades]
draft: false
date: 2014-01-01
miVariable: Hola
–--
Posts: categorías
Configurables en el Front-matter o deducibles de
la estructura de directorios:
_posts/
|-eventos/
| |- 2014-01-21-mi-primer-post.md
|-programacion/
| |-php/
| | |- 2014-01-21-hello-world.md
Paginación de posts
Es posible paginar los posts y accedera ellos con
URLs del tipo:
Página 1: http://misitio.com/blog/
Página 2: http://misitio.com/blog/pagina2/
Mostraría la lista de posts correspondientes a la
página.
Paginación de posts
Configuración: config.yml del sitio
paginate: 5
paginate_path: 'blog/page:num'
El fichero index.html del directorio /blog se
toma como template para montar cada página.
/blog/index.html
Paginación de post

Ficheros generados:
/blog/index.html
● /blog/pagina2/index.html
● /blog/pagina3/index.html
● ...
●
Posts: permalinks
Formato de los enlaces a cada post.
Configuración: config.yml
permalink: "/:year/:title"
Generaría enlaces del tipo:
http://miblog.com/blog/2014-mi-primer-post/
Posts: permalinks
year: Año del post
● month: Mes del post.
● i_month: Mes del post en número sin ceros
delante.
● day: Día del post.
● i_day: Día del post en número sin ceros delante.
● title: Título del post.
● categories: Categorías del post.
●
Posts: permalinks

Existen algunos templates predefinidos:
pretty: /:categories/:year/:month/:day/:title/
● ordinal: /:categories/:year/:i_day/:title.html
● date: /:year/:month/:day/:title.html
●
Posts: permalinks

http://misitio.com/blog/noticias/2014/01/21/php55/
http://misitio.com/blog/noticias/31/php-55.html
http://misitio.com/2013/12/31/php-55.html
Páginas

Formato: plantilla Twig, HTML, Markdown.
Layout: herencia de plantillas.
Includes: partes reutilizables.
Layout
Determinan la forma en la que se distribuye el
contenido.
Permite herencia en cascada.
Directorio: _layouts/
–-Layout: default
–-Busca default.html dentro de _layouts/
Layout: ejemplo
Usa la etiqueta block de Twig:
Includes
Permiten reutilizar partes del código.
Se encuentran en _includes/
Usa la etiqueta include de Twig:
Temas
Tema = sitio.
Puedes subir temas a Github a instalarlos con
Composer o descargarlos manualmente.
Instalar con Composer:
Directorio de instalación de Spress.
● Edita composer.json y añade el tema en los
requires.
●
Temas: instalación con
Composer

Con el comando spress site:new miSitio
spresso podemos crear sitios usando el tema.
Plugins
Extienden la funcionalidad de Spress.
Usa mecanismo de eventos.
Composer para actualizar los plugins de un tema.
Converters: permiten añadir nuevos tipos de
contenido: Textile (markup language).
Estructura de un plugin

MiPlugin/
|- composer.json
|- MiPlugin.php
Plugins: eventos

spress.start
● spress.before_convert
● spress.after_convert
● spress.after_convert_posts
● spress.before_render
● spress.after_render
● spress.finish
●
Gracias

Más contenido relacionado

PPTX
Blogs kab
PPTX
Blogs
PDF
Presentacion Taller Desarrollo de Blogs
PPTX
Blog (Blogger)
PDF
Lean publishing "Principles of Package Design"
PDF
PPTX
Php. sintaxis
PDF
Primera app
Blogs kab
Blogs
Presentacion Taller Desarrollo de Blogs
Blog (Blogger)
Lean publishing "Principles of Package Design"
Php. sintaxis
Primera app

Similar a Spress (20)

PDF
Introducción al framework Symfony
PDF
Gestores de contenido
PPT
CMS - Joomla
PDF
Clase 3 instalación y primeros pasos
PPTX
Symfony-Community: Introducción a Symfony Framework
PDF
Clase 4 routing
DOCX
Trabajo escrito de contra jornada
PDF
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
PPTX
Exposición teórica blog 1
PDF
Symfony2 Formacion y primeros pasos
PDF
Symfony
PPT
PPTX
PDF
Symfony 1 y 2
PDF
PLATAFORMAS LMS
PPTX
Web 2.0
PDF
Mis primeros pasos con Symfony 2
PPTX
Blogging for hackers (español)
Introducción al framework Symfony
Gestores de contenido
CMS - Joomla
Clase 3 instalación y primeros pasos
Symfony-Community: Introducción a Symfony Framework
Clase 4 routing
Trabajo escrito de contra jornada
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Exposición teórica blog 1
Symfony2 Formacion y primeros pasos
Symfony
Symfony 1 y 2
PLATAFORMAS LMS
Web 2.0
Mis primeros pasos con Symfony 2
Blogging for hackers (español)
Publicidad

Último (20)

PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PPTX
Curso de generación de energía mediante sistemas solares
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
DOCX
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
PPTX
Presentación de Redes de Datos modelo osi
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
modulo seguimiento 1 para iniciantes del
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
Mecanismos-de-Propagacion de ondas electromagneticas
Power Point Nicolás Carrasco (disertación Roblox).pptx
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
Propuesta BKP servidores con Acronis1.pptx
Presentacion de Alba Curso Auditores Internos ISO 19011
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
Curso de generación de energía mediante sistemas solares
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
Presentación de Redes de Datos modelo osi
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
modulo seguimiento 1 para iniciantes del
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
El-Gobierno-Electrónico-En-El-Estado-Bolivia
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
Documental Beyond the Code (Dossier Presentación - 2.0)
Publicidad

Spress