tutorial template lenguaje jekyll liquid liquid-layout jekyll-extensions

jekyll - template - shopify liquid comments



¿Cómo pasar la variable{% capture%} de una vista al diseño en Jekyll/Liquid? (2)

No puede hacer esto con una captura, pero puede usar una inclusión. Cada nivel de la jerarquía de páginas puede anular la tecla de head para apuntar a un archivo de inclusión diferente según sea necesario

default.html

{% include {{ page.head }} %} {{ content }}

frontpage.html

--- layout: default head: header1.html --- {{ content }}

_includes / header1.html

(Frontpage header content)

Estoy tratando de reconstruir un blog en Jekyll y me he topado con una tarea simple.

Siempre que tenga el siguiente conjunto de plantillas:

default.html:

{{ head }} {{ content }}

frontpage.html:

--- layout: default --- {% capture head %} Frontpage {% end %} {{ content }}

index.html:

--- layout: frontpage --- Other stuff

Esperaba que {% capture head %} pasara una variable al diseño. Pero parece que solo las variables de Front Matter se pasan realmente como page.variable_name .

¿Hay alguna forma de pasar capture -d var al diseño en Jekyll?

Supongo que podría hacer 2 diseños diferentes para la frontpage y la frontpage normal_page que reemplazarían todo el bloque {{head}}{{content}} en el diseño. Pero eso es como el doble del html, así que prefiero resolverlo con capture si es posible.


Si su caso de uso es como el mío y desea incluir contenido adicional dentro de su plantilla, puede incluir contenido multilínea de su materia delantera en la plantilla usando la función escalar de bloques de YAML. Un | mantiene saltos de línea mientras que a > elimina ("pliega") saltos de línea. (Tenga en cuenta que el indicador de bloque debe ir seguido de una línea en blanco).

index.html

--- layout: default head: | <link href="//cdn-images.mailchimp.com/embedcode/classic-081711.css" rel="stylesheet" type="text/css"> <style type="text/css"> #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; } </style> script: | <script type=''text/javascript'' src=''//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js''></script> <script type=''text/javascript''>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]=''EMAIL'';ftypes[0]=''email'';fnames[1]=''FNAME'';ftypes[1]=''text'';fnames[2]=''LNAME'';ftypes[2]=''text'';fnames[3]=''PHONE'';ftypes[3]=''phone'';fnames[4]=''ORG'';ftypes[4]=''text'';fnames[5]=''MMERGE5'';ftypes[5]=''text'';}(jQuery));var $mcj = jQuery.noConflict(true);</script> --- <!-- Content, maybe a MailChimp signup form? -->

default.html

<!DOCTYPE html> <html> <head> <title> {{page.title}} </title> <link rel="stylesheet" type="text/css" href="/css/main.css"> <!-- here you can have add''l arbitrary head content --> {{ page.head }} </head> <body> {{content}} <script> // Google Analytics, perhaps? </script> <!-- here you can have add''l arbitrary content at the end of the page, good for scripts --> {{page.script}} </body> </html>