English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Uppgradering
- Introduktion
- Installation
- Användning (Utan Laravel)
- Användning (Med Laravel)
- Konfiguration
- Stödriktlinjer
- Licens - MIT Licens
Uppgradering
Om du uppgraderar från en tidigare version, vänligen se Uppgraderingsguiden för brutna ändringar och migrationssteg.
Introduktion
MJML är ett markup-språk specifikt designat för att förenkla processen att koda responsiva e-postmeddelanden. Dess semantiska syntax säkerställer enkelhet och tydlighet, medan dess omfattande bibliotek av standardkomponenter påskyndar utvecklingen och minskar komplexiteten i din e-postkodbas. Den öppna källkoden av MJML genererar högkvalitativ, responsiv HTML som följer bästa praxis. Om du har upplevt frustrationen av att arbeta med Outlook, är detta paketet skräddarsytt för dig.
Vår MJML-implementering fungerar som ett wrapper för den officiella MJML API:n. Det möjliggör bekväm kompilering av MJML till HTML direkt inom PHP, utan behov av NodeJS. Detta paket är idealiskt för PHP-applikationer som vill integrera MJML utan krånglet med att installera NodeJS och MJML CLI.
Exempel
// Utan Laravel(new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Minifierad 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>'); // Med LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Med Laravel och minifierad HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
Installation
-
Först lägg till följande i din
composer.json-fil för att instruera vårt paket att hämta de korrekta binärerna för ditt operativsystem när vårt paket installeras. Binärerna kommer att laddas ner efter att du körinstall,update, ellerdump-autoload.{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}MJML-binären kommer att hämtas från vår CDN och sparas i "bin"-mappen för detta paket under composer:s installation eller uppdatering. Se till att du har de nödvändiga binärerna laddade för både din lokala och produktionsmiljö.
Som standard,
allkommer att hämta alla binärer vi stöder. Vi rekommenderar att begränsa detta till de operativ- och arkitektursystem du behöver för att spara på bandbredd och installationstider. Följande är de tillgängliga binärerna.Operativsystem Arkitektur Composer Post Update Command Alla Alla 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 -
Nästa steg, installera PHP-paketet genom att köra följande composer-kommando:
composer require defectivecode/mjml -
Det var det! Om du använder Laravel, kommer vårt paket automatiskt att installeras med hjälp av Laravels paketupptäckte funktion.
Användning (Utan Laravel)
Se användningen med Laravel nedan om du använder Laravel.
Rendera MJML
För att rendera MJML, skicka helt enkelt din MJML-sträng till render-metoden:
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>');
Validera MJML
För att validera MJML, skicka helt enkelt din MJML-sträng till isValid-metoden:
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>');
Användning (Med Laravel)
Rendera MJML
För att rendera MJML, skicka helt enkelt din MJML-sträng till render på MJML-facaden:
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>');
Validera MJML
För att validera MJML, skicka helt enkelt din MJML-sträng till isValid-metoden på MJML-facaden:
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>');
Konfiguration
Du kan publicera konfigurationsfilen med följande kommando:
php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"
Detta kommer att skapa en mjml.php konfigurationsfil i din config-mapp. Alla alternativ som listas i konfigurationsfilen
passas till config-objektet när du använder MJML-facaden.
Konfiguration
Alla konfigurationsalternativ kan ställas in genom att direkt kalla följande metoder på MJML-objektet.
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>' );
Vårt paket följer samma konfiguration som det officiella MJML-paketet förutom följande:
preprocessors- Detta alternativ är inte tillgängligt. Vänligen öppna en pull request om du vill lägga till detta alternativ.minifyOptions- Vi behåller minifiering i PHP för utdata-kompatibilitet. Minifieraren tar bort kommentarer (utom Outlook villkor), kollapsar vitrymd och tar bort vitrymd mellan taggar.sanitizeStyles,templateSyntax, ochallowMixedSyntax- Dessa MJML 5-alternativ tillämpas på MJML:s inhemska htmlnano/cssnano-minifieringsväg. De används inte av detta pakets PHP-minifierare.
Typsnitt
Vårt paket använder följande typsnitt som standard:
- 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
Du kan ändra typsnitten genom att använda följande metoder:
addFont(string $font, string $url)- Lägg till ett typsnitt i listan över typsnitt.removeFont(string$font)- Ta bort ett typsnitt från listan över typsnitt.setFonts(array $fonts)- Ställ in listan över typsnitt. Du bör tillhandahålla en array med typsnitt i detta format:['font-name' => 'font-url'].
Kommentarer
Kommentarer behålls som standard. Om du vill ta bort kommentarer kan du använda metoden removeComments().
Du kan också återställa removeComments() genom att kalla metoden keepComments().
Ignorera inkluderar
Som standard ignorerar vårt paket mj-include-taggar. Detta matchar MJML 5:s
säkerhetsstandard. Du kan aktivera inkluderar genom att kalla ignoreIncludes(false).
När inkluderar aktiveras, använd filePath(string $path) som basdirectory och includePath(string|array|null $path) för att
tillåta ytterligare inkluderingskataloger.
Försköna
Vårt paket kommer att försköna HTML med hjälp av js-beautify. MJML 5.2 använder också
js-beautify internt, men detta paket behåller förpackningsnivåns försköning så att anpassade PHP beautifyOptions fortsätter att
fungera. Standardalternativen är:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
Medan
js-beautifyanvänder snake_case för att ange alternativ, bör du använda camelCase när du använder vårt paket. Vi gjorde detta val för att hålla vårt paket konsekvent med resten av konfigurationsalternativen. Vårt paket kommer automatiskt att konvertera camelCase-alternativen till snake_case.
Du kan åsidosätta något av dessa alternativ genom att tillhandahålla en giltig js-beautify konfiguration med hjälp av följande metoder:
setBeautifyOptions(array $options)- Ställ injs-beautify-alternativen.addBeautifyOption(string $option, mixed $value)- Lägger till ettjs-beautifyalternativ.removeBeautifyOption(string $option)- Tar bort ettjs-beautifyalternativ.
Minifiera
Vårt paket kommer att minifiera HTML-utdata när det är aktiverat. Minifiering utför följande:
- Tar bort HTML-kommentarer (bevarar Outlook villkorskommentarer som
<!--[if mso]>) - Kollapsar flera vitrymmesk Characte till enstaka mellanrum
- Tar bort vitrymd mellan HTML-taggar
Du kan aktivera eller inaktivera minifiering genom att kalla metoden minify(bool $minify).
Varför PHP-baserad minifiering? MJML 5 använder inte längre det gamla sårbara
html-minifier-paketet. Detta paket behåller fortfarande minifiering i PHP för att bevara utdata beteendet som infördes i version 2.x. Om du behöver MJML 5:s inhemska htmlnano/cssnano-minifieringsalternativ, öppna ett ärende med den nödvändiga alternativformen.
Valideringsnivå
Vårt paket kommer att validera MJML med hjälp av soft valideringsnivå som standard. Du kan ändra detta genom att använda
validationLevel(ValidationLevel $validationLevel) metoden. Följande valideringsnivåer finns:
strict- Ditt dokument går igenom validering och renderas inte om det har några felsoft- Ditt dokument går igenom validering och renderas, även om det har felskip- Ditt dokument renderas utan att gå igenom validering.
Filväg
Vårt paket kommer att använda .-katalogen som standard. Du kan ändra detta genom att kalla metoden filePath(string $path).
MJML 5 behandlar filePath som den inkluderade sandboxbasen. Om inkluderar är aktiverade, nekas vägar utanför filePath
såvida de inte uttryckligen tillåts med includePath(string|array|null $path).
Juice
Vi tillhandahåller inga juice-alternativ som standard. Du kan lägga till juice-alternativ genom att använda följande metoder:
setJuiceOptions(array $options)- Ställ in juice-alternativen.addJuiceOption(string $option, mixed $value)- Lägger till ett juicealternativ.removeJuiceOption(string $option)- Tar bort ett juicealternativ.setJuicePreserveTags(array $tags)- Ställ in juice bevarande taggar.addJuicePreserveTag(string $tag, mixed $value)- Lägger till en juice bevarande tagg.removeJuicePreserveTag(string $tag)- Tar bort en juice bevarande tagg.
Stödriktlinjer
Tack för att du valde vårt öppna källkodsprojekt! Vänligen ta ett ögonblick för att titta på dessa stödriktlinjer. De kommer att hjälpa dig att få ut det mesta av vårt projekt.
Gemenskapsdriven Stöd
Vårt öppna källkodsprojekt drivs av vår fantastiska gemenskap. Om du har frågor eller behöver hjälp, är StackOverflow och andra online-resurser dina bästa alternativ.
Buggar och Prioritering av Funktioner
Verkligheten av att hantera ett öppet källkodsprojekt betyder att vi inte kan ta itu med varje rapporterad bugg eller funktionsönskemål omedelbart. Vi prioriterar ärenden i följande ordning:
1. Buggar som Påverkar Våra Betalda Produkter
Buggar som påverkar våra betalda produkter kommer alltid att vara vår högsta prioritet. I vissa fall kan vi endast ta itu med buggar som påverkar oss direkt.
2. Gemenskaps Pull Begärningar
Om du har identifierat en bugg och har en lösning, vänligen skicka in en pull-begäran. Efter ärenden som påverkar våra produkter ger vi näst högsta prioritet till dessa gemenskapsdrivna lösningar. När de har granskats och godkänts, kommer vi att sammanfoga din lösning och kreditera ditt bidrag.
3. Ekonomiskt Stöd
För frågor utanför de nämnda kategorierna kan du välja att finansiera deras lösning. Varje öppen fråga är kopplad till ett beställningsformulär där du kan bidra ekonomiskt. Vi prioriterar dessa frågor baserat på det belopp som anges.
Gemenskapsbidrag
Öppen källkod blomstrar när dess gemenskap är aktiv. Även om du inte åtgärdar buggar, överväg att bidra genom kodförbättringar, dokumentationsuppdateringar, handledningar eller genom att hjälpa andra i gemenskapskanaler. Vi uppmuntrar starkt alla, som en gemenskap, att hjälpa till att stödja arbetet med öppen källkod.
För att upprepa, kommer DefectiveCode att prioritera buggar baserat på hur de påverkar våra betalda produkter, gemenskaps pull-begärningar, och det ekonomiska stöd som erhållits för problem.
Licens - MIT Licens
Copyright © Defective Code, LLC. Alla rättigheter förbehålles
Härmed beviljas tillstånd, kostnadsfritt, till varje person som erhåller en kopia av denna programvara och tillhörande dokumentationsfiler (”Programvaran”), att hantera Programvaran utan begränsningar, inklusive utan begränsning rätten att använda, kopiera, modifiera, sammanfoga, publicera, distribuera, underlicensiera och/eller sälja kopior av Programvaran, och att tillåta personer som Programvaran tillhandahålls till att göra det, med förbehåll för följande villkor:
Den ovanstående copyrightnotisen och denna tillståndsnotis ska inkluderas i alla kopior eller väsentliga delar av Programvaran.
PROGRAMVARAN TILLHANDAHÅLLS "I BEFINTLIGT SKICK", UTAN NÅGON SOM HELST GARANTI, VARE SIG UTTRYCKLIG ELLER UNDERFÖRSTÅDD, INKLUSIVE MEN INTE BEGRÄNSAT TILL GARANTIER FÖR SÄLJBARHET, LÄMPLIGHET FÖR ETT BESTÄMT ÄNDAMÅL OCH INTE KRÄNKNING. UNDER INGA OMSTÄNIGHETER SKA FÖRFATTARNA ELLER COPYRIGHTINNEHAVARNA ANSVARA FÖR NÅGON FORDRAN, SKADOR ELLER ANNAN ANSVARSSKYLDIGHET, VARE SIG I EN RÄTTSLIG ÅTGÄRD, SKADESTÅND ELLER ANNAT, SOM UPPSTÅR FRÅN, GENOM ELLER I SAMBAND MED PROGRAMVARAN ELLER ANVÄNDNINGEN ELLER ANDRA AFFÄRER I PROGRAMVARAN.