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.
<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 %}