Encabezados de página
Page Frontmatter
Tabla de contenido
- Encabezados de página básicos
-
Encabezados avanzados
- Agregar extensión de URL
- Control de caché
- Formato de fecha
- Depurador
- Etiqueta ETag
- Caducidad de la página
- URL externa
- Código de respuesta HTTP
- Idioma
- Última modificación
- Lightbox
- Redirección de página al hacer login
- Markdown
- Nunca almacenar Twig en caché
- Procesar página
- Procesar Twig primero
- Fecha de publicación
- Redirigir
- Rutas
- Enrutable
- SSL
- Resumen
- Plantilla
- Formato de plantilla
- Fecha de despublicación
- Visible
- Encabezados de página personalizados
- Encabezados de metapágina
- Frontmatter.yaml
Los encabezados de página (también conocidos como frontmatter) en la parte superior de una página son completamente opcionales, no los necesita en absoluto para que una página se muestre dentro de Grav. Hay 3 tipos principales de páginas (Estándar, Listado y Modular) dentro de Grav, y cada una tiene encabezados relevantes.
Los encabezados también se conocen como Page Frontmatter y comúnmente se denominan así para no confundirse con los encabezados HTTP.
Encabezados de página básicos
Hay varias opciones de encabezado básicas disponibles.
Habilitar caché
cache_enable: false
De forma predeterminada, Grav almacenará en caché el contenido del archivo de la página para garantizar que todo se ejecute lo más rápido posible. Existen escenarios avanzados en los que no desee que la página se almacene en caché.
Un ejemplo de esto es cuando utiliza variables dinámicas de Twig en su contenido. La variable cache_enable
permite anular este comportamiento. Cubriremos las variables de contenido de Twig en un capítulo posterior. Los valores válidos son "true" o "false".
Fecha
date: 01/01/2020 15:14
La variable date
le permite establecer específicamente una fecha asociada con esta página. Esto se usa a menudo para indicar cuándo se creó una publicación y se puede usar con fines de visualización u ordenación. Si no se establece, el valor predeterminado será la última hora de modificación de la página.
Las fechas en los formatos m/d/y
o d-m-y
se eliminan al observar el separador entre los distintos componentes: si el separador es una barra diagonal (/
), entonces el americano m/d Se supone /y
; mientras que si el separador es un guión (-
) o un punto (.
), entonces se asume el formato europeo d.m.y
.
Menú
menu: Mi página
La variable menu
le permite configurar el texto que se utilizará en la navegación. Hay varias capas de opciones alternativas para el menú, por lo que si no se establece ninguna variable de menu
, Grav intentará usar la variable title
.
Publicado
published: verdadero
De forma predeterminada, una página se publica a menos que establezca explícitamente published: false
o mediante una publish_date
en el futuro, o una unpublish_date
en el pasado. Los valores válidos son true
o false
.
Slug
slug: mi-página-slug
La variable slug
le permite configurar específicamente la parte de la URL de la página. Por ejemplo: http://yoursite.com/my-page-slug
sería la URL si configura el slug
arriba. Si el slug
no está configurado en la página, Grav vuelve a usar el nombre de la carpeta (sin ningún prefijo numérico).
Las Slugs generalmente están completamente en minúsculas, con caracteres acentuados reemplazados por letras del alfabeto inglés y caracteres de espacio en blanco reemplazados por un guión o un guión bajo. Si bien las versiones futuras de Grav admitirán espacios en slugs, no se recomienda tener espacios en blanco o letras mayúsculas.
Por ejemplo: si el título de una publicación de blog es "Ejemplo de publicación de blog", el slug recomendado sería "ejemplo-de-publicación-de-blog".
Taxonomía
taxonomy:
category: blog
tag: [ejemplo, demo, grav]
Una variable de encabezado muy útil, taxonomy
, le permite asignar valores a taxonomía que definió como tipos válidos en el archivo Configuración del sitio.
Si la taxonomía no está definida en ese archivo, se ignorará. En este ejemplo, la página se define como perteneciente a la categoría "blog" y tiene las etiquetas: "ejemplo", "demo" y "grav". Estas taxonomías se pueden utilizar para encontrar estas páginas en otras páginas, complementos e incluso temas. El tutorial sobre Taxonomía se cubrirá este concepto con más detalle.
Título
Si no tiene ningún encabezado, no tendrá ningún control sobre el título de la página tal como se muestra en el navegador y en los motores de búsqueda. Por esta razón, se recomienda al menos poner la variable title
en el encabezado de la página:
title: Título de mi página
Si la variable title
no está configurada, Grav tiene una solución alternativa e intentará usar la variable slug
en mayúscula.
Encabezados avanzados
Estos siguen siendo importantes pero se utilizan con menos frecuencia. Se pueden utilizar para proporcionar funciones avanzadas dentro de su página.
Agregar extensión de URL
append_url_extension: '.json'
Permite que la página anule la extensión predeterminada y establezca una mediante programación. También establecerá los atributos de encabezado apropiados para la respuesta.
Control de caché
cache_control: max-age=604800
Puede estar en blanco sin configuración, o un valor de texto válido cache-control
.
Asegúrese de utilizar "sin caché" si la página contiene información que puede cambiar según el usuario. De lo contrario, el contenido puede filtrarse a otros usuarios. La configuración Caducidad de la página si se establece en expires: 0
tiene el mismo efecto.
Formato de fecha
dateformat: 'Y-m-d H:i:s'
Anula la configuración predeterminada de Grav para formatos de fecha y permite configurarla a nivel de página. Puede utilizar cualquiera de los formatos de fecha PHP disponibles.
Depurador
Cuando habilitas el depurador a través del archivo de configuración system.yaml
, el depurador se mostrará en cada página. Hay casos en los que esto puede no ser deseable o puede causar conflictos con el resultado. Un ejemplo de este tipo es cuando solicita una página destinada a devolver HTML renderizado a una llamada Ajax. Esto no debería tener el depurador inyectado en los datos resultantes. Para deshabilitar el depurador en esta página, puede usar el encabezado de la página debugger
:
debugger: false
Etiqueta ETag
etag: true
Habilite o deshabilite a nivel de página si se muestra o no una variable de encabezado ETag con un valor único. false
de forma predeterminada a menos que se anule en su system.yaml
.
Caducidad de la página
expires: 604800
La página caduca en segundos (604800 segundos = 7 días).
Asegúrese de utilizar expires: 0
si la página contiene información que puede cambiar según el usuario. De lo contrario, el contenido puede filtrarse a otros usuarios. Consulte también la configuración de Cache-Control.
URL externa
external_url: https://www.mysite.com/foo/bar
Le permite anular la URL generada dinámicamente por una que proporcione explícitamente.
Código de respuesta HTTP
http_response_code: 404
Permite la configuración dinámica de un Código de Respuesta HTTP.
Idioma
language: fr
Esto le permite anular el idioma de una página en particular.
Última modificación
last_modified: true
Habilite o deshabilite a nivel de página si se muestra o no una variable de encabezado de Última modificación con la fecha de modificación. false
de forma predeterminada a menos que se anule en su system.yaml
.
Lightbox
lightbox: true
Aunque estrictamente hablando, este no es un encabezado de página estándar, es una forma común de permitir la carga de un JavaScript y CSS estándar para una página. De forma predeterminada, el tema principal antimater
no carga los requisitos previos para habilitar las capacidades de lightbox de las imágenes; asegúrese de instalar un complemento de lightbox como Featherlight, que está disponible a través de GPM.
Redirección de página al hacer login
login_redirect_here: false
El encabezado login_redirect_here
le permite determinar si alguien permanece o no en esa página después de iniciar sesión a través del [Plugin Login de Grav] (https://github.com/getgrav/grav-plugin-login). Establecer este encabezado en false
reenviará a alguien a la página anterior después de iniciar sesión correctamente.
Una configuración true
aquí permitirá a la persona permanecer en la página actual después de iniciar sesión correctamente. Esta también es la configuración predeterminada, que se aplica si no hay un encabezado login_redirect_here
en el frontmatter.
Puede anular este comportamiento predeterminado forzando una ubicación estándar especificando una opción explícita en su configuración de inicio de sesión YAML:
redirect_after_login: '/profile'
Esto siempre lo llevará a la ruta /profile
después de iniciar sesión exitosamente.
Markdown
markdown:
extra: false
auto_line_breaks: false
auto_url_links: false
escape_markup: false
special_chars:
'>': 'gt'
'<': 'lt'
Property | Description |
---|---|
extra: | Habilitar la compatibilidad con Markdown Extra (GFM de forma predeterminada) |
auto_line_breaks: | Habilitar saltos de línea automáticos |
auto_url_links: | Habilitar enlaces HTML automáticos |
escape_markup: | Escape de etiquetas de marcado a entidades |
special_chars: | Lista de caracteres especiales para convertir automáticamente |
Puede habilitarlos globalmente a través de su archivo de configuración user/config/system.yaml
, o puede anular esta configuración global por página con esta opción de encabezado markdown
.
Nunca almacenar Twig en caché
never_cache_twig: true
Habilitar esto le permitirá agregar una lógica de procesamiento que puede cambiar dinámicamente en cada carga de página, en lugar de almacenar en caché los resultados y almacenarlos para cada carga de página. Esto se puede habilitar/deshabilitar en todo el sitio en system.yaml o en una página específica. Se puede establecer como true
o false
.
Este es un cambio sutil, pero que es especialmente útil en páginas modulares, ya que evita tener que desactivar constantemente el almacenamiento en caché cuando trabaja con él. La página todavía está almacenada en caché, pero Twig no. Twig se procesa después de recuperar el contenido almacenado en caché. Para formularios modulares, ahora funciona solo con esta configuración en lugar de tener que deshabilitar el caché de páginas modulares.
Esto no es compatible con twig_first: true
actualmente porque todo el procesamiento se realiza en una única llamada a Twig.
Procesar página
process:
markdown: false
twig: true
El procesamiento de la página es otra capacidad avanzada. De forma predeterminada, Grav procesará markdown
pero no procesará twig
en una página. Esta elección de no procesar Twig de forma predeterminada se debe únicamente a razones de rendimiento, ya que no es una característica comúnmente necesaria. La variable process
le permite anular este comportamiento.
Es posible que desee deshabilitar markdown
en una página en particular si desea utilizar 100% HTML en su página y no ejecutar el proceso de markdown en absoluto. También permite que un plugin procese el contenido de una manera completamente diferente. Los valores válidos son true
o false
.
Hay situaciones en las que desea utilizar la funcionalidad de plantillas de Twig en su contenido, y esto se logra estableciendo la variable twig
en verdadero.
Procesar Twig primero
twig_first: false
Si se establece en true
, el procesamiento de Twig se producirá antes de cualquier procesamiento de Markdown. Esto puede ser particularmente útil si su Twig genera un markdown que debe estar disponible para que el compilador de Markdown lo procese. Una cosa a tener en cuenta, si tiene cache_enable: false
y twig_first: true
, el almacenamiento en caché de la página está efectivamente deshabilitado.
Fecha de publicación
publish_date: 23/01/2020 13:00
Campo opcional, pero puede proporcionar una fecha para activar la publicación automáticamente. Los valores válidos son cualquier valor de fecha de cadena que admita strtotime().
Redirigir
redirect: '/some/custom/route'
o
redirect: 'http://someexternalsite.com'
Puede redirigir a otra página interna o externa directamente desde el encabezado de una página. Por supuesto, esto significa que esta página no se mostrará, pero la página aún puede estar en una colección, menú, etc., porque existirá como una página dentro de Grav.
También puedes agregar un código de redireccionamiento a una URL usando corchetes:
redirect: '/some/custom/route[303]'
Rutas
routes:
default: '/my/example/page'
canonical: '/canonical/url/alias'
aliases:
- '/some/other/route'
- '/can-be-any-valid-slug'
Ahora puede proporcionar una ruta predeterminada (default) que anule la estructura de ruta estándar definida por la estructura de carpetas.
También puede especificar una ruta canónica (canonical) específica que se puede usar en temas para generar un enlace canónico:
<link rel="canonical" href="https://yoursite/dresses/green-dresses-are-awesome" />
Por último, puede especificar una serie de alias de ruta (aliases) que se pueden utilizar como rutas alternativas para una página en particular.
Enrutable
routable: false
De forma predeterminada, todas las páginas son enrutables. Esto significa que se puede acceder a ellos apuntando su navegador a la URL de la página. Sin embargo, es posible que necesites crear una página creada para contener contenido específico, pero que debe ser llamada directamente por un complemento, otro contenido o incluso un tema directamente. Un buen ejemplo de esto es una página de "Error 404".
Grav busca automáticamente una página con la ruta /error
si no se puede encontrar otra página. Al ser una página real dentro de Grav, tendrías control total sobre cómo se ve esta página. Sin embargo, probablemente no desee que las personas accedan a esta página directamente en su navegador, por lo que esta página comúnmente tiene su variable routable
configurada en false. Los valores válidos son true
o false
.
SSL
ssl: true
Ahora puede habilitar una página específica para que se fuerce con SSL activado o desactivado. Esto solo funciona con la opción absolute_urls: true
configurada en la configuración system.yaml
. Esto se debe a que para poder alternar entre páginas SSL y no SSL, debe utilizar URL completas con el protocolo y el host incluidos.
Resumen
summary:
enabled: true
format: short | long
size: int
La opción summary configura lo que devuelve el método page.summary()
. Esto se usa con mayor frecuencia en un escenario de tipo lista de blogs, pero se puede usar en cualquier momento que necesite una sinopsis o un resumen del contenido de la página. Los escenarios son los siguientes:
Propiedad | Descripción |
---|---|
enabled: | Desactivar el resumen de la página (el resumen devuelve lo mismo que el contenido de la página) |
format: |
|
El atributo size
tiene diferentes significados cuando el formato se establece en short
y large
:
Tamaño corto | Descripción |
---|---|
size: 0 | Si no se encuentra ningún delimitador de resumen, el resumen es igual al contenido de la página; de lo contrario, el contenido se truncará hasta la posición del delimitador de resumen |
size: int |
Trunca siempre el contenido después de los caracteres int. Si se encontró un delimitador de resumen, trunque el contenido hasta la posición del delimitador de resumen |
Tamaño largo | Descripción |
---|---|
size: 0 | El resumen equivale al contenido completo de la página |
size: int |
El contenido se truncará después de caracteres int, independientemente de la posición del delimitador del resumen |
Plantilla
template: custom
La plantilla del tema que se utiliza para representar una página se basa en el nombre del archivo .md
.
Entonces, un archivo llamado default.md
usará la plantilla default
en el tema activo. Por supuesto, puedes anular este comportamiento simplemente configurando la variable template
en el encabezado y eligiendo una plantilla diferente.
En el ejemplo anterior, la página utilizará la plantilla custom
del tema. Esta variable existe porque es posible que necesite cambiar la plantilla de una página mediante programación desde un plugin.
Formato de plantilla
template_format: xml
Tradicionalmente, si deseaba que una página generara un formato específico (es decir, xml, json, etc.), debía agregar el formato a la URL. Por ejemplo, ingresar http://example.com/sitemap.xml
le indicaría al navegador que muestre el contenido usando la plantilla twig xml
que termina en .xml.twig
. Todo esto está muy bien, porque nos encanta hacer las cosas de forma sencilla en Grav.
Usando el encabezado de la página template_format
, podemos indicarle al navegador cómo representar la página sin necesidad de extensiones en la URL. Al ingresar template_format: xml
en nuestra página sitemap
, podemos hacer que http://example.com/sitemap
funcione para nosotros sin tener que agregar .xml
al final.
Grav usa este método con el Grav Sitemap Plugin.
Fecha de despublicación
unpublish_date: 17/05/2020 00:32
Campo opcional, pero puede proporcionar una fecha para activar automáticamente la anulación de la publicación. Los valores válidos son cualquier valor de fecha de cadena que admita strtotime().
Visible
visible: false
De forma predeterminada, una página es visible en la navegación si la carpeta circundante tiene un prefijo numérico, es decir, /01.home
es visible, mientras que /error
es no visible. Este comportamiento se puede sobrescribir configurando la variable "visible" en el encabezado. Los valores válidos son true
o false
.
Encabezados de página personalizados
Por supuesto, puede crear sus propios encabezados de página personalizados utilizando cualquier sintaxis YAML válida. Estos serían específicos de la página y estarían disponibles para que los utilice cualquier complemento o tema. Un buen ejemplo de esto sería establecer alguna variable específica para un complemento de mapa del sitio, como por ejemplo:
sitemap:
changefreq: monthly
priority: 1.03
La importancia de estos encabezados es que Grav no los usa de forma predeterminada. Solo los lee el plugin sitemap para determinar con qué frecuencia se modifica esta página en particular y cuál debe ser su prioridad.
Cualquier encabezado de página como este debe estar documentado y, en general, habrá algún valor predeterminado que se utilizará si la página no lo proporciona.
Otro ejemplo sería almacenar datos específicos de la página que luego Twig podría utilizar en el contenido de la página.
Por ejemplo, es posible que desee asociar alguna referencia de autor a la página. Si agregó estas configuraciones de YAML al encabezado de la página:
author:
name: Sandy Johnson
twitter: @sandyjohnson
bio: Sandy is a freelance journalist and author of several publications on open source CMS platforms.
Luego podrás acceder a ellos desde Twig:
<section id="author-details">
<h2></h2>
<p></p>
<span>Contact: <a href="https://twitter.com/"><i class="fa fa-twitter"></i></a></span>
</section>
Si el nombre de la variable contiene un carácter especial como un guión debes usar la función de atributo twigs:
attribute(page.header, 'plugin-name').active
Encabezados de metapágina
Los meta encabezados le permiten configurar el conjunto estándar de HTML etiquetas para cada página, así como OpenGraph, Facebook y Twitter .
Ejemplos de metaetiquetas estándar
metadata:
refresh: 30
generator: 'Grav'
description: 'Your page description goes here'
keywords: 'HTML, CSS, XML, JavaScript'
author: 'John Smith'
robots: 'noindex, nofollow'
my_key: 'my_value'
Esto producirá el HTML:
<meta name="generator" content="Grav" />
<meta name="description" content="Your page description goes here" />
<meta http-equiv="refresh" content="30" />
<meta name="keywords" content="HTML, CSS, XML, JavaScript" />
<meta name="author" content="John Smith" />
<meta name="robots" content="noindex, nofollow" />
<meta name="my_key" content="my_value" />
Se admiten todas las metaetiquetas HTML5.
Ejemplos de metaetiquetas OpenGraph
metadata:
'og:title': The Rock
'og:type': video.movie
'og:url': http://www.imdb.com/title/tt0117500/
'og:image': http://ia.media-imdb.com/images/rock.jpg
Esto producirá el HTML:
<meta name="og:title" property="og:title" content="The Rock" />
<meta name="og:type" property="og:type" content="video.movie" />
<meta name="og:url" property="og:url" content="http://www.imdb.com/title/tt0117500/" />
<meta name="og:image" property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
Para obtener un resumen completo de todas las metaetiquetas de OpenGraph que se pueden utilizar, consulte la [documentación oficial] (https://ogp.me/).
Ejemplos de metaetiquetas de Facebook
metadata:
'fb:app_id': your_facebook_app_id
Esto producirá el HTML:
<meta name="fb:app_id" property="fb:app_id" content="your_facebook_app_id" />
Facebook utiliza principalmente metaetiquetas OpenGraph, pero hay algunas etiquetas específicas de Facebook y Grav las admite automáticamente.
Ejemplos de metaetiquetas de Twitter
metadata:
'twitter:card' : summary
'twitter:site' : @flickr
'twitter:title' : Your Page Title
'twitter:description' : Your page description can contain summary information
'twitter:image' : https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg
Esto producirá el HTML:
<meta name="twitter:card" property="twitter:card" content="summary" />
<meta name="twitter:site" property="twitter:site" content="@flickr" />
<meta name="twitter:title" property="twitter:title" content="Your Page Title" />
<meta name="twitter:description" property="twitter:description" content="Your page description can contain summary information" />
<meta name="twitter:image" property="twitter:image" content="https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg" />
Para obtener un resumen completo de todas las metaetiquetas de Twitter que se pueden utilizar, consulte la documentación oficial.
Esto realmente proporciona mucha flexibilidad y potencia.
Frontmatter.yaml
Una característica avanzada que puede resultar útil para algunos usuarios avanzados es la capacidad de utilizar valores del frontmatter comunes a través de un archivo frontmatter.yaml
ubicado en la carpeta de la página. Esto es particularmente útil cuando se trabaja con sitios multilingües donde es posible que desee compartir una parte del contenido inicial entre todas las versiones lingüísticas de una página determinada.
Para aprovechar esto, simplemente cree un archivo frontmatter.yaml
junto con el archivo .md
de su página y agregue cualquier valor frontmatter válido. Por ejemplo:
metadata:
generator: 'Super Grav'
description: Give your page a powerup with Grav!
Si se define un encabezado tanto en frontmatter.yaml como en la página frontmatter, se utilizan los valores de la página y los valores de frontmatter.yaml se anulan.
El uso de frontmatter.yaml es una característica del lado del archivo y no es compatible con el plugin de administración.