{% assign previous_post = nil %} {% assign next_post = nil %} {% assign navigation_category = site.title %}

{% if site.data.settings.post_navigation.type == 'category' %}

{% for category in page.categories limit: 1 %}
  {% assign category_posts = site.categories[category] %}
  {% assign navigation_category = category %}
  {% for category_post in site.categories[category] | sort "date" %}
    {% if category_post.url == page.url %}
      {% unless forloop.first %}
        {% assign previous_index = forloop.index | minus: 2 %}
        {% assign previous_post = category_posts[previous_index] %}
      {% endunless %}
      {% unless forloop.last %}
        {% assign next_index = forloop.index %}
        {% assign next_post = category_posts[next_index] %}
      {% endunless %}
      {% break %}
    {% endif %}
  {% endfor %}
{% endfor %}

{% else if site.data.settings.post_navigation.type == 'site' %}

{% assign previous_post = page.previous %}
{% assign next_post = page.next %}

{% endif %}

{% assign used_posts = page.url | split: ',' %} {% if previous_post and site.data.settings.related_posts.exclude_post_navigation %}

{% assign used_posts = used_posts | push: previous_post.url %}

{% endif %} {% if next_post and site.data.settings.related_posts.exclude_post_navigation %}

{% assign used_posts = used_posts | push: next_post.url %}

{% endif %}

{% if site.data.settings.related_posts.type == 'tags' %}

{% assign posts = '' | split: ',' %}
{% for tag in page.tags %}
  {% assign posts = site.tags[tag] | concat: posts %}
{% endfor %}
{% assign posts = posts | uniq %}

{% else if site.data.settings.related_posts.type == 'site' %}

{% assign posts = site.related_posts %}

{% else if site.data.settings.related_posts.type == 'all' %}

{% assign posts = site.posts %}

{% endif %}

{% assign temp = '' | split: ',' %} {% for post in posts %}

{% unless used_posts contains post.url %}
  {% assign temp = temp | push: post %}
{% endunless %}

{% endfor %} {% assign posts = temp %}

{% if site.data.settings.related_posts.post_filter %}

{% assign temp = '' | split: ',' %}
{% for post in posts %}
  {% if post[site.data.settings.related_posts.post_filter] %}
    {% assign temp = temp | push: post %}
  {% endif %}
{% endfor %}
{% assign posts = temp %}

{% endif %}

{% assign related_posts = posts | sample: site.data.settings.related_posts.count %}