grav

Encabezados de página

Page Frontmatter

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.

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 capítulo [Taxonomía]() 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: 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:
  • long = Se ignorará cualquier delimitador de resumen del contenido
  • short = Detecta y trunca contenido hasta la posición del delimitador de resumen

El atributo size tiene diferentes significados cuando el formato se establece en shorty 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](https://github.com/getgra v/gravedad -plugin-mapa del sitio).

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](https://twig.symfony .com/doc/1.x/functions/attribute.html):

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](http: //ogp.me/), 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] (http://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.