2012-05-20 16 views
5

Me gustaría utilizar variables dinámicas para mi instalación de jekyll + liquid. Quiero acceder dinámicamente al archivo _config.yml utilizando los nombres de la variable dinámica .Variables dinámicas Jekyll Liquid

Se explica mejor con un ejemplo:

Página:

--- 
layout: default 
title: title_homepage 
--- 

Diseño predeterminado:

{{ site.locales[site.default_locale].page.title }} 

_config.yml:

default_locale: "en" 

locales: 
    en: 
    title_homepage: "This is my homepage title!" 
    pirate: 
    title_homepage: "Yaaawwwr. Homepage title." 

Entonces, ¿cómo puedo acceder al _config.yml con un nombre de variable dinámico?

+0

Para asegurarse de que estoy despejado. Tu archivo '_config.yml' siempre se llamará exactamente eso. Para realizar el cambio, actualizará la variable 'default_locale' dentro de '_config.yml' de 'en' a 'pirate'. En ese momento, cuando ejecutas jekyll, quieres que el resultado en tu diseño predeterminado muestre "Título de la página de Yaaawwwr." en lugar de "¡Este es el título de mi página de inicio!". Es eso exacto? –

+0

Hola Alan, sí. eso es correcto.Luego generaré un _site para en, otro para _pirate – Hendrik

Respuesta

3

El título que desea extraer es de la configuración del sitio. No la página en sí. Todo lo que necesita hacer es cambiar la llamada en su diseño por defecto a esta lista:

{{ site.locales[site.default_locale].title_homepage }} 

Al configurar default_locale: "en" será la salida "Este es mi título página web!". Cuando actualice el archivo _config.yml a default_locale: "pirate", la salida será "Título de la página de inicio de Yaaawwwr". He probado esto en Jekyll 0.11.2 y funciona como se esperaba.

+0

gracias por la idea. pero esto me dejaría con el problema de tener que definir múltiples diseños para varias páginas. Me gustaría definir el título de la página dentro de la página. Opción 1: Traduzca el título de la página dentro de la página principal de YAML o la opción 2: tradúzcalo de forma dinámica en el diseño predeterminado. – Hendrik

+0

Ah. Pensé que estabas buscando un título global que se haya definido en el archivo _config.yml. Creo que esta pregunta aún es útil. Mi sugerencia es que dejemos esta como está y creemos una nueva pregunta que se centre en usar una configuración en _config.yml para cambiar los títulos que se definen individualmente en cada página/publicación. –

+0

Consulte aquí: http://stackoverflow.com/questions/10750755/jekyll-liquid-accessing-config-yml-dynamically – Hendrik

0

Jekyll es un generador de sitios web estáticos, no puede usar una variable. Pero supongo que para la configuración regional en sí misma, hay una solución simple.

Siga esta estructura de archivos (o algo así):

root 
    - _include 
    home.html 
    - _layout 
    default.html 
    - en 
    index.html 
    - pirate 
    index.html 
    index.html 

Ese simple, ahora utilizar para incluir el contenido {{}} y crear archivos simples con variables y una sola línea {% include index.html %}

_Incluir/index.html:

<h1>{{page.title}}</h1> 

en/index.html:

--- 
layout: default 
title: "This is my homepage title!" 
--- 
{% include home.html %} 

pirata/index.html:

--- 
layout: default 
title: "Yaaawwwr. Homepage title." 
--- 
{% include home.html %} 

Así que ... eso es todo.

A continuación, cree una variable página para manipular las URLs de localización para cada página ....

espero que esto ayuda.

Cuestiones relacionadas