English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Güncelleme
- Giriş
- Kurulum
- Kullanım (Laravel Olmadan)
- Kullanım (Laravel ile)
- Konfigürasyon
- Destek Kılavuzları
- Lisans - MIT Lisansı
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 ileMJML::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ş HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
Kurulum
-
İlk olarak, paketinizi kurulduğunda işletim sisteminiz için doğru ikili dosyaları çekmesini sağlamak için
composer.jsondosyanıza aşağıdakileri ekleyin. İkili dosyalarinstall,updateveyadump-autoloadkomutunu ç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,
alldesteklediğ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::allDarwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64Linux (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-muslLinux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl -
Sonraki adım olarak, aşağıdaki composer komutunu çalıştırarak PHP paketini kurun:
composer require defectivecode/mjml -
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:
preprocessors- Bu seçenek mevcut değildir. Bu seçeneği eklemek istiyorsanız bir pull request açın.minifyOptions- Çıktı uyumluluğu için minifikasyon PHP'de tutulmaktadır. Minifikatör, yorumları (Outlook şartları hariç) kaldırır, boşlukları birleştirir ve etiketler arasındaki boşlukları kaldırır.sanitizeStyles,templateSyntaxveallowMixedSyntax- Bu MJML 5 seçenekleri, MJML'nin yerel htmlnano/cssnano minifikasyon yoluna uygulanır. Bu paketin PHP minifikatörü tarafından kullanılmaz.
Fontlar
Paketimiz varsayılan olarak aşağıdaki fontları kullanır:
- Open Sans: 'https://fonts.googleapis.com/css?family=Open+Sans:300,400,500,700
- Droid Sans: 'https://fonts.googleapis.com/css?family=Droid+Sans:300,400,500,700
- Lato: https://fonts.googleapis.com/css?family=Lato:300,400,500,700
- Roboto: https://fonts.googleapis.com/css?family=Roboto:300,400,500,700
- Ubuntu: https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700
Fontları aşağıdaki metodları kullanarak değiştirebilirsiniz:
addFont(string $font, string $url)- Bir fontu fontlar listesine ekler.removeFont(string $font)- Bir fontu fontlar listesinden kaldırır.setFonts(array $fonts)- Fontlar listesini ayarlar. Bu formatta bir fontlar dizisi sağlamalısınız:['font-name' => 'font-url'].
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:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
js-beautifyseç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:
setBeautifyOptions(array $options)-js-beautifyseçeneklerini ayarlayın.addBeautifyOption(string $option, mixed $value)- Birjs-beautifyseçeneği ekler.removeBeautifyOption(string $option)- Birjs-beautifyseçeneğini kaldırır.
Minify
Paketimiz etkin olduğunda HTML çıktısını minify edecektir. Minifikasyon, aşağıdakileri gerçekleştirir:
- HTML yorumlarını kaldırır (Outlook şartı yorumlarını korur, örneğin
<!--[if mso]>) - Birden fazla boşluk karakterini tek bir boşluğa sıkıştırır
- HTML etiketleri arasındaki boşlukları kaldırır
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-minifierpaketini 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:
strict- Belgeniz doğrulamadan geçiyor ve herhangi bir hata varsa render edilmezsoft- Belgeniz doğrulamadan geçiyor ve hata olsa bile render edilirskip- Belgeniz doğrulamadan geçmeden render edilir.
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:
setJuiceOptions(array $options)- Juice seçeneklerini ayarlayın.addJuiceOption(string $option, mixed $value)- Bir juice seçeneği ekler.removeJuiceOption(string $option)- Bir juice seçeneğini kaldırır.setJuicePreserveTags(array $tags)- Juice koruma etiketlerini ayarlayın.addJuicePreserveTag(string $tag, mixed $value)- Bir juice koruma etiketi ekler.removeJuicePreserveTag(string $tag)- Bir juice koruma etiketini kaldırır.
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.