Skip to content

Instantly share code, notes, and snippets.

@degt
Last active February 2, 2017 12:11
Show Gist options
  • Save degt/990363a12d2fb41cec7142329480e020 to your computer and use it in GitHub Desktop.
Save degt/990363a12d2fb41cec7142329480e020 to your computer and use it in GitHub Desktop.

#Includes en Liquid

En Liquid podemos crear bloques o ‘Snippets’ dinámicos que permitan modificar el contenido, clases o cualquier contenido según sea necesario.

Por ejemplo una alerta:

Snippet “alerta”

<div class=”alert”>Esta es mi alerta</div>

Luego lo incluimos en nuestra plantilla como:

{% snippet “alerta” %}

Nos dará como resultado:

<div class=”alert”>Esta es mi alerta</div>

Si queremos una alerta “danger” podemos hacer lo siguiente:

Snippet “alerta”

<div class=”alert {{ class }}”>Esta es mi alerta</div>

Luego lo incluimos en nuestra plantilla como:

{% include “alerta”, class:”alert-danger” %}

Notar el reemplazo de la palabra ‘snippet’ por ‘include’.

Nos dará como resultado:

<div class=”alert alert-danger”>Esta es mi alerta</div>

Lo interesante es que si no le damos valor a ‘class’ simplemente no agregará nada a la clase. Ej:

{% include “alerta”  %}

Imprime:

<div class=”alert >Esta es mi alerta</div>

Otra funcionalidad interesante de ‘include’ versus ‘snippet’ es la posibilidad de incluir snippets dinámicamente.

Ejemplo:

Snippet ‘modulo’

<div class=”modulo”>
	{% snippet submodulo %}
</div>

Snippet ‘submodulo1’

<div class=”submodulo1”> Este es el contenido de submodulo 1</div>

Snippet ‘submodulo2’

<div class=”submodulo2”> Este es el contenido de submodulo 2</div>

Entonces llamamos al snippet de módulo referenciando submodulos.

 {% include “modulo”, submodulo:”submodulo1”  %}

Imprime:

<div class=”modulo”>
	<div class=”submodulo1”> Este es el contenido de submodulo 1</div>
</div>
{% include “modulo”, submodulo:”submodulo2”  %}

Imprime:

<div class=”modulo”>
	<div class=”submodulo2”> Este es el contenido de submodulo 2</div>
</div>

Ojo que aquí es necesario entregar una variable con un nombre válido de snippet o Liquid nos devolverá error.

Si queremos dejar ese campo como opcional, debemos poner un condicional en el snippet.

Snippet ‘modulo’

<div class=”modulo”>
	{% if submodulo %}
		{% snippet submodulo %}
	{% endif %}
</div>

Así al llamar:

{% include “modulo” %}

Imprime

<div class=”modulo”>
	
</div>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment