art/_includes/tiles.html
Meitar M 4e4f981b8c
Fix bug where some pages where not shown as tiles.
This commit refactors the `tiles.html` include file so that when the
`site.tiles-source` is pages, pages with `show_tile: false` set in their
Front Matter are not counted as having been shown. Prior to this commit,
such pages were iterated over in the `for` loop, consuming a loop
iteration from the `site.tiles-count` counter.

Put another way, say you have set `tiles-count` to 6, and you have a
total of 10 pages. Of these ten pages, six have `show_tile` set to
`false`. The natural expectation would be that the home page layout
would display four tiles (10 - 6 = 4), but in fact, the exact number of
page tiles shown would depend on the specific lexicographical ordering
of the `site.html_pages` array, which could result in fewer than four
page tiles being shown.

This commit fixes the issue by excluding pages with `show_tile` set to
`false` first, and only then iterating over the remaining pages.
2020-01-31 14:21:40 -05:00

18 lines
596 B
HTML

{% if 'posts' == site.tiles-source %}
{% assign tiles = site.posts %}
{% elsif 'pages' == site.tiles-source %}
{% assign tiles = site.html_pages | where_exp: "item", "item.show_tile != false" %}
{% endif %}
<section id="one" class="tiles">
{% for tile in tiles limit:site.tiles-count %}
<article>
<span class="image">
<img src="{{ tile.image }}" alt="" />
</span>
<header class="major">
<h3><a href="{{ tile.url | relative_url }}" class="link">{{ tile.title }}</a></h3>
<p>{{ post.description }}</p>
</header>
</article>
{% endfor %}
</section>