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 %b, %Y" burada İngilizce “19 May, 1919” dönecektir.

Türkçe’ye çevirmek için, herbir ay için Türkçe karşılıklarını saklayacağımız bir .yml dosyasını oluşturmalıyız. _data/tr.yml locationında açtığımız dosyanın içeriği aşağıdaki gibi olabilir:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
months:
  - Ocak
  - Şubat
  - Mart
  - Nisan
  - Mayıs
  - Haziran
  - Temmuz
  - Ağustos
  - Eylül
  - Ekim
  - Kasım
  - Aralık

Artık Türkçe aylara erişebiliriz. Örneğin Mayıs için; site.data.tr.months[4] yazmalıyız. Syntaxı şöyle genelleyebiliriz:

1
site.data.yml_file_name.array_name[index]
1
2
3
4
5
6
  {% assign d = page.date | date: "%d" %}
  {% assign m = page.date | date: "%m" %}
  {% assign m = page.date | date: "%-m" | minus: 1 %}
  {% assign month = site.data.tr.months[m] %}
  {% assign year = page.date | date: "%Y" %}
  {{d m, Y}} <!--19 Mayıs, 1919-->

Biraz daha zorlaştırıp günleri elde etmeye çalışalım. Burada günü, ayın kaçıncı günü olduğu bilgisiyle elde edemeyeceğimiz için daha farklı bir yöntem uygulamak zorundayız. Bu sefer aşağıdakine benzer bir .yml veri dosyasına ihtiyacımız olacak. Örnekte dosyanın adı date_translation.yml.

1
2
3
4
5
6
7
en:
  abbr_days: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  days: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

tr:
  abbr_days: ['Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt', 'Pa']
  days: ['Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi', 'Pazar']
1
2
3
4
5
6
7
8
9
  {% assign A = page.date | date: "%A" %}
  {% assign days = site.data.date_translation.en.days %}
  {% for day in days %}
      {% if day == A %}
      {% assign A = site.data.date_translation.tr.days[forloop.index0]%}
      {% break %}
      {% endif %}
  {% endfor %}
  {{A}}

Kod aslında kendini açıklar nitelikte olsa da kısaca açıklayalım. İngilizce gün değeri A değişkenine atanır ve days dizisindeki herbir day’in A’ya eşit olup olmadığı kontrol edilir. A’ya eşit olduğu yerdeki indexi kullanarak Türkçe günlerin tutulduğu diziden ilgili değeri A’ya tekrar atanır. Benzer şekilde, abbr_days dizisi için de bir döngü oluşturulabilir.

İlgili bağlantılar:

You are reading the 3rd of 19 episodes in Jekyll.
Published on 19.05.2018 by Mert Bakır with commit 5ebb327.
jekyll
#data.yml #jekyll #web-dev
Next episode:
Syntax Highlighting in Jekyll
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 16.06.2018

Eğer yazılarımıza etiket ekleyip arşivimizi de etiketlere göre filtrelemek istiyorsak, ihtiyacımız olanlar; […] Oldukça kolaydır, aşağıdaki gibi oluşturulabilir: […] 1 2 3 4 {% assign posts = site.posts | sort: "date" | reverse %} {% for post in posts %} <li><a …

published on 18.09.2020
edited on 13.02.2021

First of all, if you don’t know about data files, you may want to start reading from data files in hugo. This post is about a solution for a very particular problem. How can we use “group by” for the data from data files? Let me clarify with an example. I was creating a single page …

published on 29.08.2020

In Hugo and generally other static website generators, we are using data files to store data. These files can be in YAML, TOML, or JSON formats. You can always read more about data template in the original documentation. Yet, I want to give some examples from my blog. First of all, converting dates …

published on 22.08.2020

We talked about rendering dates and the last modification date in the last post. Now, we’ll look into how can we convert month names into another language? I’ve had a similar experience last year with jekyll. The idea is the same, we need to map each month to their version of the …

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 …