Eleveny’de Yılın Gününe Göre İlgili İçerik

Raymond Camden

Tamam, bunu muhtemelen on okuyucumdan biri için yararlı olabilecek bir şeye tebeşirle yazın, ancak bu fikir birkaç aydır beynimde dolaşıp duruyor ve sonunda onu oluşturmak için zaman ayırdım. Bir süredir var olan bir içerik sitesi düşünün, örneğin bu blog (gelecek Şubat ayında yirmi yıl sonra). Makaleleri geçmişte, özellikle de önceki yıllarda aynı gün yazılmış içeriklere bağlamak ilginç olabilir. Bunun için yıllarca içerik ve yeterli içeriğe sahip bir site gerekiyor, öyle ki aslında bunun olması için iyi bir şans olacak, ancak gazete sitelerinin veya diğer haber kuruluşlarının bu kriterleri karşılayabildiğini görebiliyordum. Demom için bu blogdan üç yıllık içerik aldım ve işe koyuldum.

İçeriği kontrol edecek ve isteğe bağlı olarak içerecek bir “gönder” şablonu oluşturarak başladım:

---
layout: main 
---

<h2>{{ title }}</h2>
<p>Published {{ date | date: "%B %d, %Y %l:%M%P" }}</p>

{{ content }}

{% assign relatedPosts = date | onthisday: collections.posts %}
{% if relatedPosts.length > 0 %}

    <h2>On this day...</h2>
    {% for post in relatedPosts %}
    <a href="{{ post.url }}">{{ post.data.title }}</a> ({{ post.date | date: "%B %d, %Y %l:%M%P" }})<br/>
    {% endfor %}
{% endif %}

Şablon bir filtre çağırır, onthisday, ve makalenin tarihini ve kontrol etmesi gereken tüm içeriği, bu durumda bir gönderi koleksiyonunu geçer. Şu filtreye bakalım:

eleventyConfig.addFilter('onthisday', (date, posts) => {
    date = new Date(date);

    return posts.filter(p => {
        return p.date.getFullYear() < date.getFullYear() && 
                p.date.getMonth() == date.getMonth() && 
                p.date.getDate() == date.getDate();
    });

});

Temel olarak – yılı kontrol edin ve mevcut yıldan daha az olduğundan emin olun, ardından ay ve tarihte (ayın günü olan) eşleşmeleri kontrol edin. İçerik bulunduğunda nasıl göründüğüne dair bir örnek:

Bu kadar. Birazcık kıpırdama odasına izin verirseniz, biraz daha iyi hale getirebileceğinizi düşünüyorum – örneğin günle eşleşen sonuçların yanı sıra bir öncesi ve bir sonrası gibi. Bu, yayınlamanın yavaşlayabileceği hafta sonlarına yakın eşleşmeleri bulmanıza yardımcı olur. Bunun tam bir demosunun bir kopyasını istiyorsanız, onu burada bulabilirsiniz: https://github.com/cfjedimaster/eleventy-demos/tree/master/onthisdayfilter

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.