Pazar, Aralık 22, 2024

Jekyll Kategori Listeleme Eklentisi

yüksek çözünürlüklü ruby logosu

Benim özellikle severek kullandığım bir eklentidir. Hatalarını düzelterek tekrar revize ettim ve otomatik bir şekilde belirtilen sidebar içerisine kategorileri oluşturmasını sağladım bu sayede el ile ekleme zahmetinden de kurtulmuş oldum. Benim yerime tüm her şeyi eklenti yapmış oldu.

module Jekyll
  class CategoryList < Liquid::Tag
    def render(context)
      s = StringIO.new
      begin
        categories = context['site']['categories']
        unless categories.nil?
          post_count = context['site']['posts'].size.to_i
          categories.sort_by { |cat, posts| posts.size }
            .reverse()
            .each do |cat, posts|
               s << "<a href="/category/#{cat}">#{cat.capitalize}</a> » #{posts.size} Yazı<br>"
            end
        end
      rescue => boom
        p boom
      end
      "#{s.string}"
    end
  end
end

Liquid::Template.register_tag('category_list', Jekyll::CategoryList)

_plugins klasörü içerisine indirmiş olduğunuz .rb uzantılı dosyayı atıyorsunuz. Sitenizde kullanmış olduğunuz _layout klasörü içerisinde kategorilerinizi kontrol eden layout hangisi ise önelikli olarak ona ufak bir ekleme yapmanız gerekiyor.

{% category_list %}

Bu eklemeyi yaptığınızda otomatik olarak kategorilerinizi oluşturmaya başlayacak ancak ben eklentide kategori dizinini category olarak tanımladım siz daha önceden farklı bir yol kullanıyorsanız o kısmı değiştirmenizde fayda var.

Ayrıca daha sonra kategorilerinizi kontrol eden layoutgöre bir takım eklemeler yapıp klasörlemeniz de gerekiyor. Yani sitenizde 10 adet kategori var ise sizinde category dizini altında aynı isimde klasörler açıp tekrar içerisini düzenlemeniz gerekiyor.

category/linux/index.html olacak şekilde ben direk .html içerisine sadece şu satırları ekledim.

---
layout: category
title: Linux
description: Linux kategorisindeki yazılar
category: linux
---

Bundan sonra eklentinin yapması gereken sadece linklemeler olacak. Şimdi diyebilirsiniz “dosyaları niye el ile oluşturuyoruz” bunun bir nedeni eklentimizin klasörleri oluşturmaması bu eklentinin cahilliği evet daha sonradan belki ben ekleyebilirim diye düşünüyorum ancak bu hali ile oldukça işlevsel geliyor bana o yüzden kurcalamayı pek düşünmüyorum.

Ayrıca bu eklenti sitenizin markdown dosyaları içerisinde bulunan category kısmına bakarak linklemeleri yapar. Bu konuda dikkatli olun büyük küçük harf özellikle duyarlıdır