Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

Güncelleme

Önceki sürümden güncellemeye geçiyorsanız, lütfen Güncelleme Kılavuzu için kırılma değişikliklerini ve geçiş adımlarını kontrol edin.

Giriş

MJML duyarlı e-postaları kodlama sürecini basitleştirmek için özel olarak tasarlanmış bir işaretleme dilidir. Anlamlı sözdizimi kolaylık ve sadelik sağlarken, standart bileşenlerin geniş kütüphanesi geliştirmeyi hızlandırır ve e-posta kod tabanınızın karmaşıklığını azaltır. MJML'nin açık kaynaklı motoru yüksek kaliteli, duyarlı HTML üretir ve en iyi uygulamalara uyar. Outlook ile çalışmanın getirdiği frustrasyonları deneyimlediyseniz, bu paket tam size göre.

Bizim MJML uygulamamız, resmi MJML API'si için bir sarıcı olarak hizmet eder. Bu, MJML'yi doğrudan PHP içinde HTML'ye kolayca derlemeyi mümkün kılar, NodeJS'e ihtiyaç duymadan. Bu paket, NodeJS ve MJML CLI yükleme zahmeti olmadan MJML'yi entegre etmek isteyen PHP uygulamaları için idealdir.

Örnek

// Laravel olmadan
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Minify edilmiş HTML
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Laravel ile
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Laravel ile ve minify edilmiş HTML
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Kurulum

  1. İlk olarak, paketinizi kurulduğunda işletim sisteminiz için doğru ikili dosyaları çekmesini sağlamak için composer.json dosyanıza aşağıdakileri ekleyin. İkili dosyalar install, update veya dump-autoload komutunu çalıştırdığınızda indirilecektir.

    {
    "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]
    }

    MJML ikili dosyası, Composer'in kurulum veya güncelleme sırasında bu paketin "bin" klasörüne kaydedilecektir. Hem yerel hem de üretim ortamlarınız için gerekli ikili dosyaların yüklü olduğundan emin olun.

    Varsayılan olarak, all desteklediğimiz tüm ikili dosyaları çekecektir. Bant genişliğini ve kurulum sürelerini tasarruf etmek için bunu, ihtiyacınız olan işletim ve mimari sistemle sınırlamayı öneririz. Aşağıda mevcut ikili dosyalar bulunmaktadır.

    İşletim Sistemi Mimari Composer Sonrası Güncelleme Komutu
    Tümü Tümü DefectiveCode\MJML\PullBinary::all
    Darwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64
    Linux (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64
    Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-musl
    Linux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl
  2. Sonraki adım olarak, aşağıdaki composer komutunu çalıştırarak PHP paketini kurun:

    composer require defectivecode/mjml
  3. Hepsi bu kadar! Laravel kullanıyorsanız, paketimiz otomatik olarak Laravel'in paket keşfi kullanılarak yüklenecektir.

Kullanım (Laravel Olmadan)

Laravel kullanıyorsanız aşağıdaki Laravel ile kullanıma bakın.

MJML Renderleme

MJML renderlemek için, MJML dizesini render metoduna geçirmeniz yeterlidir:

use DefectiveCode\MJML\MJML;
 
$html = (new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

MJML Doğrulama

MJML'i doğrulamak için, MJML dizesini isValid metoduna geçirmeniz yeterlidir:

use DefectiveCode\MJML\MJML;
 
$isValid = (new MJML)->isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Kullanım (Laravel ile)

MJML Renderleme

MJML renderlemek için, MJML dizesini MJML facade'ındaki render metoduna geçirmeniz yeterlidir:

use DefectiveCode\MJML\Facades\MJML;
 
$html = MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

MJML Doğrulama

MJML'i doğrulamak için, MJML dizesini MJML facade'ındaki isValid metoduna geçirmeniz yeterlidir:

use DefectiveCode\MJML\Facades\MJML;
 
$isValid = MJML::isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Konfigürasyon

Konfigürasyon dosyasını aşağıdaki komutu kullanarak yayınlayabilirsiniz:

php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"

Bu, config klasörünüzde bir mjml.php konfigürasyon dosyası oluşturacaktır. Konfigürasyon dosyasında listelenen tüm seçenekler, MJML facade'ını kullandığınızda config nesnesine aktarılır.

Konfigürasyon

Tüm konfigürasyon seçenekleri, MJML nesnesi üzerinde doğrudan aşağıdaki metodları çağırarak ayarlanabilir.

use DefectiveCode\MJML\MJML;
 
$html = (new MJML)
->setMinify(true)
->setBeautify(false)
->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Paketimiz, resmi MJML paketinin aynı konfigürasyonunu takip eder, ancak aşağıdaki durumlarda farklıdır:

Fontlar

Paketimiz varsayılan olarak aşağıdaki fontları kullanır:

Fontları aşağıdaki metodları kullanarak değiştirebilirsiniz:

Yorumlar

Yorumlar varsayılan olarak korunur. Yorumları kaldırmak isterseniz, removeComments() metodunu kullanabilirsiniz.

removeComments() yöntemini geri almak için keepComments() metodunu çağırarak da yapabilirsiniz.

Dahil Etmeleri Yoksay

Varsayılan olarak, paketimiz mj-include etiketlerini yoksayar. Bu, MJML 5'in daha güvenli varsayılanı ile eşleşir. Dahil etmeleri etkinleştirmek için ignoreIncludes(false) çağırabilirsiniz.

Dahil etmeleri etkinleştirirken, filePath(string $path) ile temel dizini ve includePath(string|array|null $path) ile ek dahil dizinlerine izin verin.

Güzelleştirme

Paketimiz HTML'yi js-beautify kullanarak güzelleştirir. MJML 5.2 de dahili olarak js-beautify kullanır, ancak bu paket sarmalayıcı düzeyinde güzelleştirme sağlar, böylece özel PHP beautifyOptions hala çalışır. Varsayılan seçenekler şunlardır:

js-beautify seçenekleri sunmak için snake_case kullanırken, paketimizi kullanırken camelCase kullanmalısınız. Bu seçimi, paketimizin geri kalan konfigürasyon seçenekleriyle tutarlı olmasını sağlamak için yaptık. Paketimiz otomatik olarak camelCase seçeneklerini snake_case'e dönüştürecektir.

Bu seçeneklerden herhangi birini, aşağıdaki metodları kullanarak geçerli bir js-beautify konfigürasyonu sağlayarak geçersiz kılabilirsiniz:

Minify

Paketimiz etkin olduğunda HTML çıktısını minify edecektir. Minifikasyon, aşağıdakileri gerçekleştirir:

Minifikasyonu etkinleştirmek veya devre dışı bırakmak için minify(bool $minify) metodunu çağırabilirsiniz.

Neden PHP tabanlı minifikasyon? MJML 5 artık eski savunmasız html-minifier paketini kullanmıyor. Bu paket, 2.x sürümünde tanıtılan çıktı davranışını korumak için PHP'de minifikasyonu tutmaya devam ediyor. MJML 5'in yerel htmlnano/cssnano minifikasyon seçeneklerine ihtiyacınız varsa, gerekli seçenek şekliyle bir sorun açın.

Doğrulama Seviyesi

Paketimiz varsayılan olarak MJML'i soft doğrulama seviyesi kullanarak doğrular. Bunu, validationLevel(ValidationLevel $validationLevel) metodunu kullanarak değiştirebilirsiniz. Aşağıdaki doğrulama seviyeleri mevcuttur:

Dosya Yolu

Paketimiz varsayılan olarak . dizinini kullanır. Bunu filePath(string $path) metodunu çağırarak değiştirebilirsiniz.

MJML 5, filePath'i dahil etme kumlarda temeli olarak ele alır. Dahil etmeler etkinleştirildiğinde, filePath dışında olan yollar, includePath(string|array|null $path) ile açıkça izin verilmedikçe reddedilir.

Juice

Varsayılan olarak herhangi bir juice opsiyonu sağlamıyoruz. Juice seçeneklerini aşağıdaki metodları kullanarak ekleyebilirsiniz:

Destek Kılavuzları

Açık kaynak paketimizi seçtiğiniz için teşekkürler! Lütfen bu destek kılavuzlarına bir göz atmak için biraz zaman ayırın. Bu kılavuzlar, projemizden en iyi şekilde yararlanmanıza yardımcı olacaktır.

Topluluk Tarafından Destek

Açık kaynak projemiz, harika topluluğumuz tarafından destekleniyor. Sorularınız varsa veya yardıma ihtiyacınız varsa, StackOverflow ve diğer çevrimiçi kaynaklar en iyi seçeneklerinizdir.

Hatalar ve Özellik Önceliklendirmesi

Açık kaynak projesini yönetmenin gerçeği, bildirilmiş olan her hata veya özellik talebini hemen ele alamayacağımızdır. Sorunları aşağıdaki sırayla önceliklendiriyoruz:

1. Ücretli Ürünlerimizi Etkileyen Hatalar

Ücretli ürünlerimizi etkileyen hatalar her zaman en yüksek önceliğimiz olacaktır. Bazı durumlarda, yalnızca bizim doğrudan etkilendiğimiz hataları ele alabiliriz.

2. Topluluk Çekme Talepleri

Bir hata tespit ettiyseniz ve bir çözümünüz varsa, lütfen bir çekme talebi gönderin. Ürünlerimizi etkileyen sorunlardan sonra, bu topluluk odaklı düzeltmelere en yüksek önceliği veriyoruz. İncelendikten ve onaylandıktan sonra, çözümünüzü birleştirecek ve katkınızı takdir edeceğiz.

3. Finansal Destek

Belirtilen kategorilerin dışındaki sorunlar için, çözümünü finanse etmeyi tercih edebilirsiniz. Her açık sorun, maddi katkıda bulunabileceğiniz bir sipariş formuna bağlıdır. Bu sorunları sağlanan finansman miktarına göre önceliklendiriyoruz.

Topluluk Katkıları

Açık kaynak, topluluğu aktif olduğunda gelişir. Hataları düzeltmiyor olsanız bile, kod iyileştirmeleri, belgeleri güncellemeler, öğreticiler aracılığıyla veya topluluk kanallarında başkalarına yardımcı olarak katkıda bulunmayı düşünün. Herkesi, bir topluluk olarak, açık kaynak çalışmalarını desteklemeye teşvik ediyoruz.

Tekrar belirtmek gerekirse, DefectiveCode, hataları nasıl etkilediklerine göre önceliklendirecektir; bu, ücretli ürünlerimize etkisi, topluluk çekme talepleri ve sorunlar için alınan finansal desteği içermektedir.

Lisans - MIT Lisansı

Telif Hakkı © Defective Code, LLC. Tüm hakları saklıdır

Bu yazılım ve ilgili belge dosyalarının (bundan böyle "Yazılım" olarak anılacaktır) bir kopyasını edinen herhangi bir kişiye, Yazılım'da kısıtlama olmaksızın işlem yapma izni verilmiştir; bu izin, Yazılım'ı kullanma, kopyalama, değiştirme, birleştirme, yayımlama, dağıtma, alt lisans verme ve/veya Yazılım'ın kopyalarını satma haklarını da içermektedir ve Yazılım'ın sağlandığı kişilerin bunu yapmasına izin verilmektedir; ancak, aşağıdaki koşullara tabi olacaktır:

Yukarıdaki telif hakkı bildirimi ve bu izin bildirimi, Yazılım'ın tüm kopyalarında veya önemli kısımlarında yer almalıdır.

YAZILIM "OLDUĞU GİBİ" SAĞLANMAKTADIR; HERHANGİ BİR TÜRDE, AÇIK YA DA ZIMNİ, SATILABİLİRLİK, BELİRLİ BİR AMACA UYGUNLUK VEYA HUKUKİ İHLAL GARANTİSİ DE DAHİL OLMAK ÜZERE HİÇBİR GARANTİ VERMEZ. YAZARLAR VEYA TELİF HAKKI SAHİPLERİ, YAZILIM’DAN veya YAZILIM'IN KULLANIMI veya DİĞER İŞLEMLERİNDEN KAYNAKLANAN HERHANGİ BİR TALEP, ZARAR VEYA DİĞER YÜKÜMDÜRLÜKLERDEN SORUMLU TUTULAMAZ; İSTER SÖZLEŞME TASARISI, SORUMLULUK, YA DA BAŞKA BİR ŞEKİLDE OLSUN.