_includes/related-posts.html in jekyll-theme-chirpy-birdly-6.1.0 vs _includes/related-posts.html in jekyll-theme-chirpy-birdly-6.1.1

- old
+ new

@@ -1,6 +1,9 @@ -<!-- Recommend the other 3 posts according to the tags and categories of the current post. --> +<!-- + Recommend the other 3 posts according to the tags and categories of the current post, + if the number is not enough, use the other latest posts to supplement. +--> <!-- The total size of related posts --> {% assign TOTAL_SIZE = 3 %} <!-- An random integer that bigger than 0 --> @@ -9,25 +12,15 @@ <!-- Equals to TAG_SCORE / {max_categories_hierarchy} --> {% assign CATEGORY_SCORE = 0.5 %} {% assign SEPARATOR = ':' %} -{% assign match_posts = '' | split: '' %} - -{% for category in page.categories %} - {% assign match_posts = match_posts | push: site.categories[category] | uniq %} -{% endfor %} - -{% for tag in page.tags %} - {% assign match_posts = match_posts | push: site.tags[tag] | uniq %} -{% endfor %} - -{% assign last_index = match_posts.size | minus: 1 %} {% assign score_list = '' | split: '' %} +{% assign last_index = site.posts.size | minus: 1 %} {% for i in (0..last_index) %} - {% assign post = match_posts[i] %} + {% assign post = site.posts[i] %} {% if post.url == page.url %} {% continue %} {% endif %} @@ -59,23 +52,37 @@ {% assign index = entry | split: SEPARATOR | last %} {% assign index_list = index_list | push: index %} {% endfor %} {% endif %} -{% assign relate_posts = '' | split: '' %} +<!-- Fill with the other newlest posts --> +{% assign less = TOTAL_SIZE | minus: index_list.size %} -{% for index in index_list %} - {% assign i = index | to_integer %} - {% assign relate_posts = relate_posts | push: match_posts[i] %} -{% endfor %} +{% if less > 0 %} + {% for i in (0..last_index) %} + {% assign post = site.posts[i] %} + {% if post.url != page.url %} + {% capture cur_index %}{{ i }}{% endcapture %} + {% unless index_list contains cur_index %} + {% assign index_list = index_list | push: cur_index %} + {% assign less = less | minus: 1 %} + {% if less <= 0 %} + {% break %} + {% endif %} + {% endunless %} + {% endif %} + {% endfor %} +{% endif %} -{% if relate_posts.size > 0 %} +{% if index_list.size > 0 %} <div id="related-posts" class="mb-2 mb-sm-4"> <h3 class="pt-2 mb-4 ms-1" data-toc-skip> {{ site.data.locales[include.lang].post.relate_posts }} </h3> <div class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4"> - {% for post in relate_posts %} + {% for entry in index_list %} + {% assign index = entry | plus: 0 %} + {% assign post = site.posts[index] %} <div class="col"> <a href="{{ post.url | relative_url }}" class="card post-preview h-100"> <div class="card-body"> {% include datetime.html date=post.date class="small" lang=include.lang %} <h4 class="pt-0 my-2" data-toc-skip>{{ post.title }}</h4>