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 brytande förändringar och migrationssteg.
Introduktion
MJML är ett markup-språk som är speciellt designat för att förenkla processen att koda responsiva e-postmeddelanden. Dess semantiska syntax säkerställer enkelhet och lätthet, medan det omfattande biblioteket av standardkomponenter påskyndar utvecklingen och minskar komplexiteten i din e-post kodbas. Den öppen källkodsmotorn 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 paket skräddarsytt för dig.
Vår MJML-implementation fungerar som ett wrapper för den officiella MJML API. 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 besväret 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.jsonfil 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örtinstall,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 av detta paket under composer-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 kommer
allatt hämta alla binärer vi stöder. Vi rekommenderar att du begränsar detta till de operativ- och arkitektursystem du behöver för att spara bandbredd och installationstid. 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 -
Sedan, installera PHP-paketet genom att köra följande composer-kommando:
composer require defectivecode/mjml -
Det är allt! Om du använder Laravel kommer vårt paket automatiskt att installeras med Laravel's paketupptäcktsfunktion.
Användning (Utan Laravel)
Se användningen med Laravel nedan om du använder Laravel.
Rendering av MJML
För att rendera MJML, passera helt enkelt din MJML-sträng till render-metoden:
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>');
Validering av MJML
För att validera MJML, passera helt enkelt din MJML-sträng till isValid-metoden:
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>');
Användning (Med Laravel)
Rendering av MJML
För att rendera MJML, passera 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>');
Validering av MJML
För att validera MJML, passera 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 anges i konfigurationsfilen skickas till config-objektet när du använder MJML-facaden.
Konfiguration
Alla konfigurationsalternativ kan ställas in genom att direkt anropa följande metoder på MJML-objektet.
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>' );
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-begäran om du vill lägga till detta alternativ.minifyOptions- Vi behåller minifiering i PHP för utmatningskompatibilitet. Minifieraren tar bort kommentarer (undantaget Outlook-villkor), kollapsar vitrum och tar bort vitrum mellan taggar.sanitizeStyles,templateSyntax, ochallowMixedSyntax- Dessa MJML 5-alternativ gäller för MJML:s inbyggda 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)- Sätt listan över typsnitt. Du bör ange en array av typsnitt i detta format:['font-name' => 'font-url'].
Kommentarer
Kommentarer sparas som standard. Om du vill ta bort kommentarer kan du använda metoden removeComments().
Du kan också återställa removeComments() genom att anropa metoden keepComments().
Ignorera Inkluderingar
Som standard ignorerar vårt paket mj-include-taggar. Detta matchar MJML 5:s säkrare standard. Du kan aktivera inkluderingar genom att anropa ignoreIncludes(false).
När du aktiverar inkluderingar, använd filePath(string $path) som basdatalagringsplats 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örsköningsnivå på wrapper-nivå 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 tillhandahålla 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 ange en giltig js-beautify-konfiguration med hjälp av följande metoder:
setBeautifyOptions(array $options)- Sättjs-beautify-alternativen.addBeautifyOption(string $option, mixed $value)- Lägger till ettjs-beautify-alternativ.removeBeautifyOption(string $option)- Tar bort ettjs-beautify-alternativ.
Minifiera
Vårt paket kommer att minifiera HTML-utmatningen när det är aktiverat. Minifiering utför följande:
- Tar bort HTML-kommentarer (bevarar Outlook-villkorskommentarer som
<!--[if mso]>) - Kollapsar flera vitrumstecken till enstaka mellanslag
- Tar bort vitrum mellan HTML-taggar
Du kan aktivera eller avaktivera minifiering genom att anropa 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 det utmatningsbeteende som introducerades i version 2.x. Om du behöver MJML 5:s inbyggda htmlnano/cssnano-minifieringsalternativ, öppna ett problem med den erforderliga alternativformen.
Valideringsnivå
Vårt paket kommer som standard att validera MJML med soft valideringsnivå. Du kan ändra detta genom att använda metoden validationLevel(ValidationLevel $validationLevel). Följande valideringsnivåer är tillgängliga:
strict- Ditt dokument går igenom validering och renderas inte om det har något 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 som standard att använda .-katalogen. Du kan ändra detta genom att anropa metoden filePath(string $path).
MJML 5 behandlar filePath som basen för inkluderingssandlådan. Om inkluderingar är aktiverade nekas vägar utanför filePath om 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)- Sätt juice-alternativen.addJuiceOption(string $option, mixed $value)- Lägger till ett juice-alternativ.removeJuiceOption(string $option)- Tar bort ett juice-alternativ.setJuicePreserveTags(array $tags)- Sätt 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.