2012-06-05 23 views
5

Soy muy nuevo en Jekyll y Ruby (aún, muy excited).Filtrar site.related_posts en Jekyll

Sin usar un complemento, estoy tratando de encontrar una forma de filtrar el site.related_posts.

Por ejemplo, estoy leyendo la publicación con el título Foo y las categorías A, B.

El sitio contiene un total de 3 mensajes:

  1. Foo (categorías: A, B)
  2. Bar (Categorías: A, C, D)
  3. Zoo (Categorías: B, F)

Por defecto, en Jekyll hacemos esto:

{% para su mensaje en límite site.related_posts: 5%}
{% endfor%}

Sin embargo, el código anterior devuelve todos los (3) puestos.

Una publicación contiene muchas categorías, por lo que las categorías deben ser una matriz.

¿Cómo puedo modificar el código y devolver solo aquellos cuyas categorías se cruzan con las categorías de la publicación actual?

(En este ejemplo, me gustaría el código para devolver sólo Foo y Zoo.)

+0

Tenga en cuenta que, de forma predeterminada, las "publicaciones relacionadas" son solo las publicaciones más recientes. Establezca 'lsi: true' en _config.yml o ejecute Jekyll con' --lsi' para obtener resultados de mayor calidad. –

Respuesta

5

que no tienen la posibilidad de probar esto ahora, pero algo como esto funcionará dado Liquid's sintaxis limitada:

{% for post in site.related_posts limit:5 %} 
    {% assign match = false %} 
    {% for category in post.categories %} 
    {% if page.categories contains category %} 
     {% assign match = true %} 
    {% endif %} 
    {% endfor %} 
    {% if match %} 
    <li><a href="{{ post.url }}">{{ post.title }}</a></li> 
    {% endif %}      
{% endfor %} 
+0

Para obtener mejores resultados, estoy intentando el mismo código usando 'site.posts' en lugar de' site.related_posts limit: 5'. ¡Muchas gracias! –

+0

Excelente enlace a la documentación de Liquid, que me ha abierto los ojos. – kiewic

1

Asegúrese de que cada puesto tiene una categoría en la materia frente YAML, a continuación, añadir esto a donde le gustaría para mostrar el cargo CATEGORY_NAME relacionada:

{% for post in site.categories.CATEGORY_NAME %} 
    <li> 
     <a href="{{ post.url }}"> 
      <img src="{{ post.thumbnail }}"> 
      <p>{{ post.excerpt }}</p> 
     </a> 
    </li> 
{% endfor %}