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>