ASP.NET Core e-ticarət platformasında DotLiquid - mesaj şablonlarını necə idarə etmək

Maye e-ticarət platformasında necə istifadə olunur

DotLiquid, Ruby Liquid proqramlaşdırma dilindən .NET-ə ötürülən şablon sistemdir. Bu yazıda DotLiquid-i təsvir edəcəyəm və GrandNode-da necə istifadə etdiyimizi sizə göstərəcəyəm - .NET Core e-ticarət platforması və onun funksionallığını necə genişləndirə bilərsiniz.

Tələblər

  • 4.60 versiyasında GrandNode, onu əldə edə bilərsiniz: - GitHub: https://github.com/grandnode/grandnode/releases - Rəsmi sayt: https://grandnode.com/downloads - Əgər hostinqiniz yoxdursa, siz DigitalOcean 1 klik quraşdırıcısından istifadə edə bilər: https://marketplace.digitalocean.com/apps/grandnode - Docker: https://hub.docker.com/r/grandnode/grandnode/tags

DotLiquid və Maye arasındakı fərqlər

Müəllifin dediyi kimi, DotLiquid, əsas maye sintaksisinə mümkün qədər oxşar olmaq üçün yaradıldı. Əsasən həqiqətdir, ancaq DotLiquid depolarında tapa bildiyiniz kimi, fərqliliklər də mövcuddur.

Xətt fasilələri

Məsələn, etiketin sonunu izləyən xətt kəsilməsini məcbur etmək istəyirsinizsə, etiketi bağlamazdan əvvəl bir defis ("-") istifadə edə bilərsiniz. Aşağıdakı misaldakı kimi:

Sifariş.OrderItems -%} element üçün {% {{element.MəhsulName} {{element.Unit Qiyməti}} {{maddə.Sənədi}} {{maddə.Üstün Qiymət}} {% son -%}

əlavə xətt kəsilmədən aşağıdakı nəticə ilə nəticələnəcək və sifariş təsdiqində məhsullarla iki sıra yaradacaq:

İlk məhsul adı İlk məhsul qiyməti İlk məhsul miqdarı İlk məhsulun ümumi qiyməti İkinci məhsul adı İkinci məhsul qiyməti İkinci məhsul miqdarı İkinci məhsulun ümumi qiyməti

GrandNode-dan əsl nümunə

GrandNode-da DotLiquid mesaj şablonlarını idarə etmək üçün istifadə olunur. Döngələr və əgər ifadələr yarada bilərsiniz. DotLiquid'in imkanlarını sizə göstərmək üçün ən yaxşı nümunə, göndərilən çatdırılma bildirişini göstərməkdir, çünki bu xüsusiyyətlərin hamısı var və eyni zamanda sifariş bildirişindən daha asandır.

Üslubu sökəcəyəm, çünki burada bunların daxil edilməsinin heç bir mənası yoxdur.

{{Mağaza.Name}} Salam {{Sifariş.CustomerFullName}}, Yaxşı xəbər! Sifarişiniz çatdırıldı. Sifariş nömrəsi: {{Sifariş.OrderNumber}} Sifariş təfərrüatları: {{Sifariş.OrderURLForCustomer}} Sifariş verilmiş tarix: {{Sifariş.CreatedOn}} Hesablama ünvanı {{Sifariş.BillingFirstName}} {{Sifariş.BillingLastName}} {{Sifariş.BillingAddress1}} {{Sifariş.BillingCity}} {{Sifariş.BillingZipPostalCode}} {{Sifariş.BillingStateProvince}} {{Sifariş.BillingÖlkəsi}} Çatdırılma ünvanı {{Sifariş.ShippingFirstName}} {{Sifariş.ShippingLastName}} {{Sifariş.ShippingAddress1}} {{Sifariş.ShippingCity}} {{Sifariş.ShippingZipPostalCode}} {{Sifariş.ShippingStateProvince}} {{Sifariş.ShippingCountry}} Göndərmə üsulu: {{Sifariş.ShippingMethod}} Çatdırılan məhsullar: Adı Miqdarı
Göndərmə.ShipmentItems-dəki məhsul üçün {% -%} {{item.ProductName}} {% əgər element.AttributeDescription! = null və item.AttributeDescription! = ""%} {{item.AttributeDescription}} {% endif%}
{% əgər maddə.ShowSkuOnProductDetailsPage və item.ProductSku! = null və element.ProductSku! = ""%} Sku: {{element.ProductSku}} {% endif%}
{{maddə.Sənədi}} {% son -%}

DotLiquid'i sadəliyinə görə sevirik. Yuxarıdakı nümunəyə baxaq. Birinci sətirdən başlayaraq sadə {{Store.URL}}, {{Mağaza.Name}} sahələri var. Bu ayələr dinamik olaraq konfiqurasiyadan gələn mağazanın URL və adını daxil edəcəkdir. Geribildirimdən necə idarə olunduğunu görmək istəyirsinizsə, GrandNode mənbə koduna daxil olun və Grand.Services layihəsini yoxlayın -> Mesajlar -> DotLiquidDrops -> LiquidStores.cs. Əsasən mesaj şablonunda istifadə edilə bilən hər əlamət həllin bu hissəsindən gəlir.

Ok, ayələrimizdən başlamışıq, indi diqqətinizi döngələrə yönəldə bilərik. Misalda gördüyünüz kimi, bizdə bir döngə var:

Göndərmə.ShipmentItems -%} ... {% son məhsul -%} üçün%

Bu xətt hər göndərilən məhsul üçün tək bir sıra yaradacaqdır. Bir maddə varsa, 1 sıra yaradacaq. Sadə.

Öncə örtmək istədim son şey if ifadəsidir.

{% əgər item.AttributeDescription! = null və item.AttributeDescription! = ""%} {{item.AttributeDescription}} {% endif%}

Atribut təsviri varsa, təmin edilmiş işarəyə daxil ediləcəkdir. Əks halda, bu sahə boş olacaq. Bunu demək olar ki, mağazanın hər hissəsi ilə edə bilərsiniz.

Öz ayələrinizi yaratmaq imkanı var. Onları yaratmaq üçün Roslyn skriptlərindən istifadə edə bilərsiniz. Nümunəmdə, sifariş bildirişləri üçün yeni ayələr yaratacağıq. Token yeni sifariş nömrəsini daxil edəcək. Bütün nümunəni aşağıda tapa bilərsiniz.

Bu skript, həmçinin GrandNode-da MediatR kitabxanasından istifadənin mükəmməl bir nümunəsidir. Bu barədə bir məqalə dərc etdik, istəyirsinizsə, GrandNode-dakı hadisə idarəedicisinə girişini yoxlayın.

Misalda gördüyünüz kimi, sifariş mesajlarında yeni sifariş nömrəsi əlamətlərindən istifadə edə biləcəksiniz. Bu YEAR / NUMBER olacaq. Məsələn 2020/3.

Bu nümunəni GrandNode qutusundan tapa bilərsiniz. Yalnız Grand.Web -> Roslyn -> CodeFile.csx.