From 4e4f981b8c86f5bb93acd8a6b15e35fcd593fea0 Mon Sep 17 00:00:00 2001 From: Meitar M Date: Fri, 31 Jan 2020 14:21:40 -0500 Subject: [PATCH] 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. --- _includes/tiles.html | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/_includes/tiles.html b/_includes/tiles.html index 39a8d7a..62892cd 100644 --- a/_includes/tiles.html +++ b/_includes/tiles.html @@ -1,28 +1,18 @@ +{% 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 %}
- {% for post in site.posts limit:site.tiles-count %} - {% if site.tiles-source == 'posts' %} + {% for tile in tiles limit:site.tiles-count %} - {% endif %} - {% endfor %} - {% for page in site.html_pages limit:site.tiles-count %} - {% if site.tiles-source == 'pages' and page.show_tile != false %} - - {% endif %} {% endfor %}