published on 20.05.2018

Jekyll’da herhangi bir yerde (aynı ya da farklı dosyalarda) aynı kodu tekrar kullanacaksak bu kodu include.html dosyası içerisinde saklayıp oradan çağırırız. Böylece tekrarın önüne geçeriz. Bir nevi fonksiyon tanımlamak gibi düşünülebilir. Github’daki bloglarda görmüşsünüzdür genelde head.html ayrı bir dosyada _includes klasörü içinde tutulur ve çağrılmak istendiği yerde {% include head.html %} ile çağrılır.

Konuyu detaylandırmak adına, bu blogta kullandığım post_header.html üzerinden örneklendirelim.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<div class="post-header">
        <h2 class="post-title">
                <a href="{{ post.url }}">{{ post.title }}
              </a></h2>
          <span class="post-date">{{ post.date | date: "%d.%m.%Y" }}</span>

          {% if {{include.headertype}} == "full" %}
                <p class="post-desc">{{ post.description }}</p>
          {% endif %}
</div>

post_header.html dosyası, post.title, post.date ve post.description saklıyor ve çağrıldığında geri döndürüyor. Bu yapıyı birden fazla yerde kullandığım için, include içine almaya karar verdim. Yalnız, her sayfa için tam olarak aynı yapıyı da istemiyorum. Mesela, anasayfada sadece başlık ile tarihi isterken, /tag sayfasında description’ın da görülmesini istiyorum.

Bu gibi durumlar için; include dosyasını çağırırken parametre ile değer göndermemiz mümkün. Bu parametreyi ayrıca tanımladığımız bir yer yok, direkt çağırdığımız yerde tanımlamış oluyoruz.

{% include post_header.html headertype = "full" %} şeklinde headertype parametresi tanımlanıp “full” değeri atanarak post_header.html include’u çağrılabilir. Bu durumda yukarıdaki örnekte eğer headertype = "full" şeklinde çağrıldığında post.description’ı da ekleyerek gönderecek aksi halde sadece post.title ve post.date gönderecek.

Parametrenin ismi de size kalmış. Ayrıca, aynı anda birden fazla parametre kullanmak mümkün. Syntaxı aşağıdaki gibi genelleyebiliriz:

{% include include.html param0 = val0 param1 = val1 paramN = valN %}

You are reading the 2nd of 19 episodes in Jekyll.
Published on 20.05.2018 by Mert Bakır with commit 7858b9b.
jekyll
#jekyll #liquid #web-dev
Next episode:
Tarihleri "Türkçe" Görüntülemek
published on 19.05.2018

Liquid syntaxı ile tarihleri, eğer ki “19.05.2018” formatında elde etmek istiyorsak işimiz kolay. page.date | date: "%d.%m.%Y" ile sayılarla istediğimiz formatı elde etmemiz mümkün. Eğer istediğimiz format, “19 Mayıs, 1919” şeklinde ise page.date | date: "%d …

published on 21.05.2018

Jekyll’a yeni başlayan biri için, kod bloklarını görüntülemek problemli bir iş olabilir. En azından benim için epey problemli oldu. Bu yazıda, karşılaşabileceğiniz problemlere karşı birkaç ipucu vermeye çalışacağım. […] Eğer, yazılar kod bloğu içeriyorsa ve anasayfada postları …

published on 13.06.2018

Eğer, matematiksel bir şeyler yazıyorsanız matematiksel gösterimlere de ihtiyacınız olacaktır. Bu konuda akla ilk gelen belge hazırlama sistemi LaTeX‘dir. Peki, bir jekyll blogunda bu iş nasıl yapılır? Kullandığınız markdown işleyicisine göre farklı seçeneklere yönelebilirsiniz. Ben, kendi …

published on 21.08.2020

Hugo için rss-feed-in-hugo yazısını paylaştıktan sonra fark ettim ki jekyll için yazmamışım. İki yol göstereceğim, birincisi eklenti ile ikincisi liquid kodu ile. […] Eklenti ile yapmak oldukça kolay. Gemfile’ınıza gem 'jekyll-feed' satırını ekleyin ve _config.yml dosyasına ise …

published on 20.01.2019

Bir postun altına, sıradaki N adet postun linkini nasıl ekleriz? Pagination, ama previous ile next yerine next N post. N, sizin seçeceğiniz bir sayı. Pagination adlı yazıda, önceki ve sonraki yazıları nasıl elde edeceğimizi anlatmıştım. Bir de uzunca ve build time kötü etkileyecek ama teoride …

published on 03.07.2018

Bu yazıda daha önce yazdığım Etiketlere Göre İlgili Yazılar konusundaki yapıyı eleştirip iyileştireceğiz. En azından başlangınçta öyle düşünüyordum. Kısaca hatırlayalım, ne yaptığımızı: […] Amaç: Tüm postlar arasından (all_posts) mevcut sayfanın etiketlerinden (page.tags) en az birine sahip …

published on 03.07.2018

Bu yazıda, liquid syntax’ı ile diziler üzerinde yapılabilecek bazı işlemler üzerinde duracağım. Etiketlere Göre İlgili Yazılar Devam konusundaki inadım üzerine liquid’in array yapısı ile epey içli dışlı oldum. Öğrendiklerimi burada not alacağım. […] Doğru cevap: …