İçerik Listesi Sorgularında Makroları Genişletin

İçerik listesi sorgusunda, yakın zamanda güncellenen içeriği görüntülemek için bir sayfa çalıştırıldığında hesaplanan nitelikler için değerleri tanımlayabilirsiniz.

Sitelerdeki bileşenlere yönelik çoğu nitelik statiktir. Kullanıcı, sayfanın çalıştırılma zamanı veya çalıştırıldığı yerden bağımsız olarak değişmeyen bileşen niteliklerinden biri için sabit bir dize veya değer seçer veya girer. Bununla birlikte, sayfa çalıştırıldığında hesaplanan niteliklere yönelik değerleri tanımlayabilirsiniz. Bu, yakın zamanda içerik sorgularında güncellenen içeriğin görüntülenmesi bakımından faydalıdır. Kullanıcılar "son 3 gün içinde" gibi tarihler girebilir.

Bir Mustache JS genişletmesini çeşitli niteliklere ekleyebilirsiniz. Bu dizelerde referans gösterilen değerler sayfa çalıştırıldığında yürütülen bir modelden türetilir. Kullanıma hazır bir model İçerik Temsili Durum Transferi Uygulama Programı Arabirimi çağrıları için formatlanmış tarihleri idare eder. Kullanıcı gereksinimlerini karşılamak üzere bu modeli ek değerler ile genişletebilirsiniz:

Bir niteliğe yönelik girebileceğiniz dizenin bir örneği:

Content List component:
      Additional Query String property:
             updatedDate gt "{{#content.date}}today - 3 days{{/content.date}}"

Tarihe yönelik bu Mustache girişi çalıştırma sırasında değerlendirilir böylece dönen değer ne zaman çalıştırıldığına bağlı olarak değişir (updatedDate gt "2220181002060000000" olarak genişletilir). Kullanıcı bu yolla, ön tanımlı bir değer girmek yerine karmaşık tarih dizesi oluşturabilir.

Desteklenen Bileşen Nitelikleri

Şu nitelikler Mustache JS şablonu söz dizimini desteklerler:

  • İçerik Listesi

    • Ek Sorgu Dizesi

    • Örnek olarak: updatedDate gt "{{#content.date}}today - 3 days{{/content.date}}"

  • Başlık/Paragraf/Metin

    • CKEditor yoluyla zengin metin girildi

    • Örnek olarak: "Content REST API format for date: {{#content.date}}now{{/content.date}}"

Not:

Mustache şablonu için özel bir model olmadan, Başlık/Paragraf/Metin içindeki genişletme kullanışlı değildir. Bununla beraber, düzenleme ve görüntüleme arasında geçiş yaptıkça değerlendirileceği ve anında görünür olacağı için Ek Sorgu Dizesine girdiklerinizi doğrulama için çok kullanışlıdır.

Desteklenen Bileşen Söz Dizimi

content.date nesnesi kullanıma hazır olarak desteklenir. Bu iki ana parametreyi alır, today ve now.

today değeri güncel gözatıcı zamanını alır, onu bu gece yarısına dönüştürür ve ardından o değeri Koordineli Evrensel Zamana dönüştürür.

  • {{#content.date}}today{{/content.date}} bu gece yarısı gözatıcı değerini İçerik Temsili Durum Transferi Uygulama Programı Arabirimi tarih formatında Koordineli Evrensel Zaman değerine dönüştürülmüş olarak genişletir. Örneğin:

    2220181008065959999
  • Ardından şununla uzatılabilir:

    today +/-  [day | week | month | year]
  • today değeri de ona ekleme yaptığınız veya ondan çıkartma yaptığınızda farklı davranır. Ondan çıkartma yaparsanız sabahki zamanı kullanır. Ona ekleme yaparsanız gece yarısındaki zamanı kullanır. Örneğin:

    • {{#content.date}}today - 1 day{{/content.date}} dün gün başına genişletir.

    • {{#content.date}}today + 2 days{{/content.date}} yarından sonraki gün gece yarısına genişletir.

now değeri güncel gözatıcı zamanını alır ve onu herhangi düzeltme olmadan Koordineli Evrensel Zamana dönüştürür.

  • {{#content.date}}now{{/content.date}}, güncel gözatıcı zamanına İçerik Temsili Durum Transferi Uygulama Programı Arabirimi tarih formatında Koordineli Evrensel Zaman değerine dönüştürülmüş olarak genişletir.

  • now ayrıca hour ile de uzatılabilir. Şunlara sahipsiniz:

    now +/-  [hour | day | week | month | year]
  • Örneğin:
    • {{#content.date}}now + 2 hours{{/content.date}} - şu andan iki saat öncesi İçerik Temsili Durum Transferi Uygulama Programı Arabirimi tarih formatında Koordineli Evrensel Zamanına dönüştürülmüş olarak

    • {{#content.date}}now - 1 day{{/content.date}} - dün bu gözatıcı zamanı İçerik Temsili Durum Transferi Uygulama Programı Arabirimi tarih formatında Koordineli Evrensel Zamanına dönüştürülmüş olarak

Desteklenen Bileşen Söz Dizimini Kullanma

Son 3 haftadaki her şeyi döndürmeyi istediğiniz varsayıldığında ek sorgu dizesindeki makro genişletmesini kullanmak için şunu girersiniz:

updatedDate gt "{{#code.date}}today - 3 weeks{{/code.date}}"

Sadece tarih döner bu nedenle İçerik Temsili Durum Transferi Uygulama Programı Arabirimi çağrısında çalışmak için statik bir değer girdiğinizde yapacağınız gibi sorgu dizesini yapılandırdığınızda tırnaklar eklenir.

MustacheJS

Söz dizimi için mustache.github.io/mustache.5.html bağlantısındaki Mustache JS şablon sayfalarını referans alın.

Dizeler genişletilirken çalışan Mustache anına bir değişiklik yapıldı. Mustache hem {{ }} kullanan bir text genişletmesi hem de {{{ }}} kullanan bir html genişletmesi kullanır. Bu ikisi arasındaki fark metin genişletmenin dizede bir HTML kodlama yapmasıdır; bu da değerin a < b olarak genişletilmesi durumunda sonucun a &lt; b olmasıdır. URL dizelerini yapılandırmak için yapmak isteyeceğiniz işlem bu değildir. Kullanıcıya HTML genişletmesini kullanmasını söyleyebilirsiniz ancak bu sadece ek yük ve neden {{{ }}} kullanmaları gerektiğini açıklamak gibi daha fazla sorun oluşturur.

Bunu önlemek için Mustache, {{ }} kullanıldığında değerleri atlamamak üzere ayarlanmıştır. Bu, {{ }} ve {{{ }}} aynı şekilde davranır anlamına gelir. Bu ayrıca sonuçların kodlanmalarını gerekliyse kullanıcı için bir uygulama olarak bırakır.

Kullanıma Hazır Mustache Modeli

Mustache, genişletme için şablona bir modelin uygulanmasını gerektirir. Önceki örnekte, {{#content.date}} zaten kullanıma hazır olarak tanımlıdır ancak {{person}} gibi yeni bir nitelik geliştirici tarafından eklenebilir. Kullanıcı Mustache şablonuna modelde olmayan bir değer girerse sonuç boş bir dize olur. Hello {{person}} durumunda geliştirici modele person eklemediği sürece sadece Hello olarak genişler.

Kullanılan model nesnesi SCSMacros adlı bir global nesnedir. Geliştirici bu nesneye herhangi ek girişleri ekleyebilir. Şablon değerlendirildiğinde, nesne Mustache'e iletilir.

Kullanıma hazır model nesnesi mevcut durumda sadece content.date nesnesini destekler:

{   
   content: {
     date: <lambda implementation>
   }
}

Özel Mustache Modeli

Desteklenen nesneler, gereksinimleri esas alınarak geliştirici tarafından iyileştirilebilir. Yeni bir lastTwoDays nesnesini tanıtabilir ve genişletmeyi sadece {{lastTwoDays}} olarak basitleştirebilirler.

Önceki örnekteki Hello {{person}} gibi bir şeyi desteklemek üzere modeli genişletmek için person nesnesini SCSMacros'a ekleyin. Bunu sayfayı çalıştırmadan önce yapmanız gerekir. Başına bir komut listesi etiketi eklenerek sayfa yerleşiminde yapılabilir. Örneğin:

<script type="text/javascript">
window.SCSMacros = window.SCSMacros || {};  // define/get the SCSMacros object
window.SCSMacros.person = "World";
</script>

Bu değişiklik yapıldıktan sonra Hello {{person}} şablonu şu şekilde genişletilir: Hello World.

Nesneye değer iletmek isterseniz (örneğin, Hello {{#person}}personId{{/person}}), bir mustache lambda uygulamanız ve uygulamada değeri sarmalı ve genişletmelisiniz.

Örneğin:

<script type="text/javascript">
window.SCSMacros = window.SCSMacros || {};  // define/get the SCSMacros object
//implement "person" as a lambda
window.SCSMacros.person = function () {
  var people = { '111': { firstName: 'Small', lastName: 'World'}, '222': { firstName: 'Big', lastName: 'Universe'} };  
  return function (text, render) {     
     var expandedText = render(text);
     var chosenPerson = people[expandedText] || people['111'];      
     return chosenPerson.firstName;
  }
};
</script>

Bu değişiklik yapıldıktan sonra Hello {{#person}}111{{/person}} şablonu Hello Small olarak genişletilir ve Hello {{#person}}222{{/person}} şablonu Hello Big olarak genişletilir.

Not:

Mustache genişletmesi zamanuyumlu olarak yürütülür. Zamanuyumsuz değerleri almanız gerekiyorsa mustache genişletmesini yürütmeyi denemeden önce bunların model içinde çözülmeleri gerekir. Bu özel uygulamalarda mümkün bile olsa mevcut durumda desteklenmez.