From 18608c867a6cbe7880ea0273c463d4be93f2cc9f Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 28 Aug 2017 22:23:44 +0200 Subject: Fix prev/next links for posts. Now points to prev/next post in same language as the current post. --- blog/_plugins/prev_next.rb | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 blog/_plugins/prev_next.rb (limited to 'blog/_plugins') diff --git a/blog/_plugins/prev_next.rb b/blog/_plugins/prev_next.rb new file mode 100644 index 0000000..7e9c983 --- /dev/null +++ b/blog/_plugins/prev_next.rb @@ -0,0 +1,57 @@ +require 'pry-byebug' + +module Jekyll + class PrevNextTag < Liquid::Tag + + def initialize(tag_name, text, tokens) + super + @tag = tag_name + @text = text + end + + def render(context) + page = context['page'] + other_page = case @tag + when "link_to_prev_page" then find_prev(page) + when "link_to_next_page" then find_next(page) + else nil + end + + if other_page + %Q{#{@text} #{other_page['title']}} + else + "" + end + end + + private + + def find_prev(obj) + n = obj.previous + loop do + if n && n['lang'] != obj['lang'] + n = n.previous + else + break + end + end + return n + end + + def find_next(obj) + n = obj.next + loop do + if n && n['lang'] != obj['lang'] + n = n.next + else + break + end + end + return n + end + + end +end + +Liquid::Template.register_tag('link_to_next_page', Jekyll::PrevNextTag) +Liquid::Template.register_tag('link_to_prev_page', Jekyll::PrevNextTag) -- cgit v1.2.3