Mertcan GÖKGÖZ
Takip Et
Horus Teknoloji, Sistem Uzmanı & DevOps & Python
· 1 dak. Okunur

Jekyll Kategori Listeleme Eklentisi

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 zahmetindende 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> &raquo; #{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örlemenizde 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.

şöyle ki

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

öptüm bye <3