English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Yükseltme
- Giriş
- Kurulum
- Kullanım (Laravel Olmadan)
- Kullanım (Laravel ile)
- Konfigürasyon
- Destek Kılavuzları
- Lisans - MIT Lisansı
Yükseltme
Önceki bir sürümden yükseltiyorsanız, lütfen Yükseltme Kılavuzu için kırılma değişiklikleri ve geçiş adımları için bakın.
Giriş
MJML, yanıt veren e-postaların kodlanma sürecini basitleştirmek için özel olarak tasarlanmış bir işaretleme dilidir. Anlamlı sözdizimi, kolaylık ve basitlik sağlar ve 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 kaynak motoru, en iyi uygulamalara uygun yüksek kaliteli, yanıt veren HTML üretir. Outlook ile çalışma zorluğuna maruz kaldıysanız, bu paket tam size göre.
Bizim MJML uygulamamız, resmi MJML API'si için bir sarmalayıcı olarak hizmet vermektedir. Bu, PHP içinde doğrudan MJML'nin HTML'ye derlenmesini kolaylaştırır, NodeJS gerektirmeden. Bu paket, NodeJS ve MJML CLI yükleme zahmetinden kurtulmak 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>'); // Küçültülmüş 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 küçültülmüş 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,
composer.jsondosyanıza aşağıdakileri ekleyin, böylece paketinizi yüklerken, işletim sisteminiz için doğru ikili dosyaları alması için talimat verin. İkili dosyalar,install,updateveyadump-autoloadkomutunu çalıştırdığınızda indirilecektir.{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}MJML ikili dosyası, Composer'ın yüklenmesi veya güncellenmesi sırasında bu paketin "bin" klasörüne indirilecek ve saklanacaktır. Hem yerel hem de üretim ortamlarınız için gerekli ikili dosyaların yüklendiğinden emin olun.
Varsayılan olarak,
alldesteklediğimiz tüm ikili dosyaları çekecektir. Bandwidth ve kurulum sürelerinden tasarruf etmek için bunu ihtiyacınız olan işletim ve mimari sistemlerle sınırlamanızı öneririz. Aşağıda mevcut olan ikili dosyalar listelenmiştir.İşletim Sistemi Mimari Composer Post Güncelleme Komutu Hepsi Hepsi 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 -
Ardından, aşağıdaki Composer komutunu çalıştırarak PHP paketini yükleyin:
composer require defectivecode/mjml -
Hepsi bu kadar! Laravel kullanıyorsanız, paketimiz otomatik olarak Laravel'in paket keşfi kullanarak yüklenecektir.
Kullanım (Laravel Olmadan)
Laravel kullanıyorsanız, aşağıda Laravel ile kullanımı görebilirsiniz.
MJML Renderlama
MJML renderlamak için, MJML dizenizi render metoduna iletmeniz yeterlidir:
use DefectiveCode\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'yi doğrulamak için, MJML dizenizi isValid metoduna iletmeniz yeterlidir:
use DefectiveCode\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 Renderlama
MJML renderlamak için, MJML dizenizi MJML facadı üzerindeki render metoduna iletmeniz 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'yi doğrulamak için, MJML dizenizi MJML facadı üzerindeki isValid metoduna iletmeniz 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
Aşağıdaki komutu kullanarak konfigürasyon dosyasını yayımlayabilirsiniz:
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 facadını kullandığınızda config nesnesine geçirilir.
Konfigürasyon
Tüm konfigürasyon seçenekleri, MJML nesnesi üzerinde aşağıdaki yöntemleri doğrudan arayarak ayarlanabilir.
use DefectiveCode\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ürasyonu izler, aşağıdakiler hariç:
preprocessors- Bu seçenek mevcut değildir. Bu seçeneği eklemek istiyorsanız bir çekme isteği açın.minifyOptions-html-minifieryerine, hafif bir PHP tabanlı küçültücü kullandık. Küçültücü, yorumları (Outlook koşullu olanlar hariç) kaldırır, boşlukları sıkıştırır ve etiketler arasındaki boşlukları kaldırır.
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 yöntemleri kullanarak değiştirebilirsiniz:
addFont(string $font, string $url)- Fontlar listesine bir font ekleyin.removeFont(string $font)- Fontlar listesinden bir font kaldırın.setFonts(array $fonts)- Fontlar listesini ayarlayın. Bu formatta bir fontlar dizisi sağlamalısınız:['font-name' => 'font-url'].
Yorumlar
Yorumlar varsayılan olarak korunur. Yorumları kaldırmak istiyorsanız, removeComments() metodunu kullanabilirsiniz.
removeComments() metodunu çağırarak keepComments() ile de eski haline döndürebilirsiniz.
Dahil Etmeyi Yoksay
Varsayılan olarak, paketimiz herhangi bir mj-include etiketini dahil edecektir. Bu davranışı, ignoreIncludes(bool $ignore) metodunu çağırarak ayarlayabilirsiniz.
Güzelleştirme
Paketimiz, aşağıdaki varsayılan seçeneklerle js-beautify kullanarak HTML'yi güzelleştirecektir:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
js-beautifyseçenekleri sağlarken snake_case kullanırken, paketimizi kullanırken camelCase kullanmalısınız. Bu seçimi, paketimizi diğer konfigürasyon seçenekleriyle uyumlu hale getirmek için yaptık. Paketimiz, camelCase seçeneklerini otomatik olarak snake_case'e dönüştürecektir.
Bu seçeneklerden herhangi birini, geçerli bir js-beautify yapılandırması sağlayarak geçersiz kılabilirsiniz:
setBeautifyOptions(array $options)-js-beautifyseçeneklerini ayarlayın.addBeautifyOption(string $option, mixed $value)-js-beautifyseçeneği ekleyin.removeBeautifyOption(string $option)-js-beautifyseçeneğini kaldırın.
Küçültme
Paketimiz, etkinleştirildiğinde HTML çıktısını küçültecektir. Küçültme şunları gerçekleştirir:
- HTML yorumlarını kaldırır (Outlook koşullu yorumları gibi
<!--[if mso]>korur) - Birden fazla boşluk karakterini tek bir boşluğa sıkıştırır
- HTML etiketleri arasındaki boşlukları kaldırır
Küçültmeyi etkinleştirmek veya devre dışı bırakmak için minify(bool $minify) metodunu çağırabilirsiniz.
Neden PHP tabanlı küçültme? Resmi MJML paketi küçültme için
html-minifierkullanır, bu bilinen bir ReDoS güvenlik açığı (CVE-2022-37620) vardır ve düzeltme mevcut değildir çünkü paket bakımsızdır. Güvenlik açığı olan bağımlılıkları paketleyip dağıtmaktan kaçınmak için, küçültmeyi hafif ve güvenli bir uygulama kullanarak PHP'ye taşıdık.
Doğrulama Seviyesi
Paketimiz varsayılan olarak MJML'yi soft doğrulama seviyesi ile doğrulayacaktır. Bunu validationLevel(ValidationLevel $validationLevel) metodunu kullanarak değiştirebilirsiniz. Aşağıdaki doğrulama seviyeleri mevcuttur:
strict- Belgeniz doğrulama sürecinden geçer ve herhangi bir hatası varsa render edilmezsoft- Belgeniz doğrulama sürecinden geçer ve hatası olsa bile render edilirskip- Belgeniz doğrulama sürecinden geçmeden render edilir.
Dosya Yolu
Paketimiz varsayılan olarak . dizinini kullanacaktır. Bunu filePath(string $path) metodunu çağırarak değiştirebilirsiniz.
Juice
Varsayılan olarak herhangi bir juice seçeneği sağlamıyoruz. Aşağıdaki yöntemleri kullanarak juice seçenekleri ekleyebilirsiniz:
setJuiceOptions(array $options)- Juice seçeneklerini ayarlayın.addJuiceOption(string $option, mixed $value)- bir juice seçeneği ekleyin.removeJuiceOption(string $option)- bir juice seçeneğini kaldırın.setJuicePreserveTags(array $tags)- Juice koruma etiketlerini ayarlayın.addJuicePreserveTag(string $tag, mixed $value)- bir juice koruma etiketi ekleyin.removeJuicePreserveTag(string $tag)- bir juice koruma etiketini kaldırın.
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.