English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Upgrade
- Einführung
- Installation
- Verwendung (Ohne Laravel)
- Verwendung (Mit Laravel)
- Konfiguration
- Support Richtlinien
- Lizenz - MIT Lizenz
Upgrade
Wenn Sie von einer vorherigen Version upgraden, lesen Sie bitte den Upgrade-Leitfaden bezüglich der brechenden Änderungen und Migrationsschritte.
Einführung
MJML ist eine Markup-Sprache, die speziell entwickelt wurde, um den Prozess des Codierens responsiver E-Mails zu vereinfachen. Ihre semantische Syntax sorgt für Leichtigkeit und Einfachheit, während ihre umfangreiche Bibliothek standardmäßiger Komponenten die Entwicklung beschleunigt und die Komplexität Ihrer E-Mail-Codebasis reduziert. Der Open-Source-Engine von MJML erzeugt qualitativ hochwertiges, responsives HTML, das den besten Praktiken entspricht. Wenn Sie die Frustrationen bei der Arbeit mit Outlook erlebt haben, ist dieses Paket genau für Sie.
Unsere MJML-Implementierung dient als Wrapper für die offizielle MJML-API. Sie ermöglicht die bequeme Kompilierung von MJML in HTML direkt innerhalb von PHP, ohne die Notwendigkeit für NodeJS. Dieses Paket eignet sich ideal für PHP-Anwendungen, die MJML einfügen möchten, ohne sich mit der Installation von NodeJS und dem MJML-CLI herumschlagen zu müssen.
Beispiel
// Ohne Laravel(new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>'); // Minifiziertes HTML(new MJML)->minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>'); // Mit LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>'); // Mit Laravel und minifiziertem HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>');
Installation
-
Fügen Sie zuerst Folgendes zu Ihrer
composer.json-Datei hinzu, um unserem Paket zu instruieren, die richtigen Binaries für Ihr Betriebssystem zu ziehen, wenn unser Paket installiert wird. Die Binaries werden heruntergeladen, nachdem Sieinstall,updateoderdump-autoloadausgeführt haben.{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}Die MJML-Binärdatei wird von unserem CDN bezogen und während der Installation oder Aktualisierung des Composer im "bin"-Ordner dieses Pakets gespeichert. Stellen Sie sicher, dass Sie die notwendigen Binaries sowohl für Ihre lokale als auch für Ihre Produktionsumgebung geladen haben.
Standardmäßig wird
allalle Binaries ziehen, die wir unterstützen. Wir empfehlen, dies auf die Betriebssysteme und Architekturen, die Sie benötigen, einzugrenzen, um Bandbreite und Installationszeiten zu sparen. Die folgenden Binaries sind verfügbar.Betriebssystem Architektur Composer Post Update-Befehl Alle Alle 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 -
Installieren Sie als Nächstes das PHP-Paket, indem Sie folgenden Composer-Befehl ausführen:
composer require defectivecode/mjml -
Das war's! Wenn Sie Laravel verwenden, wird unser Paket automatisch unter Verwendung der Paketentdeckung von Laravel installiert.
Verwendung (Ohne Laravel)
Siehe die Verwendung mit Laravel weiter unten, wenn Sie Laravel verwenden.
Rendern von MJML
Um MJML zu rendern, übergeben Sie einfach Ihren MJML-String an die render-Methode:
use DefectiveCode\MJML; $html = (new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>');
Validieren von MJML
Um MJML zu validieren, übergeben Sie einfach Ihren MJML-String an die isValid-Methode:
use DefectiveCode\MJML; $isValid = (new MJML)->isValid( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>');
Verwendung (Mit Laravel)
Rendern von MJML
Um MJML zu rendern, übergeben Sie einfach Ihren MJML-String an die render-Methode des MJML-Facade:
use DefectiveCode\MJML\Facades\MJML; $html = MJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>');
Validieren von MJML
Um MJML zu validieren, übergeben Sie einfach Ihren MJML-String an die isValid-Methode des MJML-Facade:
use DefectiveCode\MJML\Facades\MJML; $isValid = MJML::isValid( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>');
Konfiguration
Sie können die Konfigurationsdatei mit folgendem Befehl veröffentlichen:
php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"
Dies erstellt eine Konfigurationsdatei mjml.php in Ihrem config-Ordner. Alle in der Konfigurationsdatei aufgeführten Optionen werden beim Verwenden des MJML-Facade an das config-Objekt übergeben.
Konfiguration
Alle Konfigurationsoptionen können festgelegt werden, indem die folgenden Methoden direkt am MJML-Objekt aufgerufen werden.
use DefectiveCode\MJML; $html = (new MJML) ->setMinify(true) ->setBeautify(false) ->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hallo Welt</mj-text></mj-column></mj-section></mj-body></mjml>' );
Unser Paket folgt der gleichen Konfiguration wie das offizielle MJML-Paket, mit Ausnahme der folgenden:
preprocessors- Diese Option ist nicht verfügbar. Bitte öffnen Sie eine Pull-Request, wenn Sie möchten, dass diese Option hinzugefügt wird.minifyOptions- Wir führen die Minifizierung in PHP für die Kompatibilität mit der Ausgabe durch. Der Minifizierer entfernt Kommentare (außer Outlook-Bedingungen), reduziert Leerzeichen und entfernt Leerzeichen zwischen Tags.sanitizeStyles,templateSyntaxundallowMixedSyntax- Diese MJML-5-Optionen gelten für den nativen htmlnano/cssnano-Minifizierungspfad von MJML. Sie werden nicht von dem Minifizierer in diesem Paket verwendet.
Schriftarten
Unser Paket verwendet standardmäßig die folgenden Schriftarten:
- 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
Sie können die Schriftarten ändern, indem Sie die folgenden Methoden verwenden:
addFont(string $font, string $url)- Fügen Sie eine Schriftart zur Liste der Schriftarten hinzu.removeFont(string $font)- Entfernen Sie eine Schriftart aus der Liste der Schriftarten.setFonts(array $fonts)- Legen Sie die Liste der Schriftarten fest. Sie sollten ein Array von Schriftarten im folgenden Format bereitstellen:['font-name' => 'font-url'].
Kommentare
Kommentare werden standardmäßig beibehalten. Wenn Sie Kommentare entfernen möchten, können Sie die Methode removeComments() verwenden.
Sie können auch die removeComments() rückgängig machen, indem Sie die Methode keepComments() aufrufen.
Inklusionen ignorieren
Standardmäßig ignoriert unser Paket mj-include-Tags. Dies entspricht der sichereren Standardkonfiguration von MJML 5. Sie können die Inklusionen aktivieren, indem Sie ignoreIncludes(false) aufrufen.
Wenn Sie Inklusionen aktivieren, verwenden Sie filePath(string $path) als Basisverzeichnis und includePath(string|array|null $path), um zusätzliche Include-Verzeichnisse zuzulassen.
Beautify
Unser Paket wird das HTML mit js-beautify verschönern. MJML 5.2 verwendet ebenfalls intern js-beautify, aber dieses Paket bleibt auf der Wrapper-Ebene des Beautifying, damit benutzerdefinierte PHP beautifyOptions weiterhin funktionieren. Die Standardoptionen sind:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
Während
js-beautifysnake_case zur Bereitstellung von Optionen verwendet, sollten Sie camelCase verwenden, wenn Sie unser Paket nutzen. Wir haben diese Wahl getroffen, um unser Paket konsistent mit den restlichen Konfigurationsoptionen zu halten. Unser Paket wird die camelCase-Optionen automatisch in snake_case umwandeln.
Sie können jede dieser Optionen überschreiben, indem Sie eine gültige js-beautify-Konfiguration mit den folgenden Methoden bereitstellen:
setBeautifyOptions(array $options)- Legen Sie diejs-beautify-Optionen fest.addBeautifyOption(string $option, mixed $value)- Fügt einejs-beautify-Option hinzu.removeBeautifyOption(string $option)- Entfernt einejs-beautify-Option.
Minifizieren
Unser Paket wird die HTML-Ausgabe minifizieren, wenn es aktiviert ist. Die Minifizierung führt Folgendes durch:
- Entfernt HTML-Kommentare (bewahrt Outlook-bedingte Kommentare wie
<!--[if mso]>) - Reduziert mehrere Leerzeichen zu einem einzelnen Raum
- Entfernt Leerzeichen zwischen HTML-Tags
Sie können die Minifizierung aktivieren oder deaktivieren, indem Sie die Methode minify(bool $minify) aufrufen.
Warum PHP-basierte Minifizierung? MJML 5 verwendet nicht mehr das alte verwundbare
html-minifier-Paket. Dieses Paket behält weiterhin die Minifizierung in PHP bei, um das Ausgabe-Verhalten beizubehalten, das in Version 2.x eingeführt wurde. Wenn Sie die nativen htmlnano/cssnano-Minifizierungsoptionen von MJML 5 benötigen, öffnen Sie ein Issue mit der erforderlichen Option.
Validierungslevel
Unser Paket validiert standardmäßig die MJML mit dem soft Validierungslevel. Sie können dies ändern, indem Sie die Methode validationLevel(ValidationLevel $validationLevel) verwenden. Die folgenden Validierungslevel sind verfügbar:
strict- Ihr Dokument wird validiert und wird nicht gerendert, wenn es Fehler enthält.soft- Ihr Dokument wird validiert und wird gerendert, selbst wenn Fehler vorhanden sind.skip- Ihr Dokument wird gerendert, ohne eine Validierung durchzuführen.
Dateipfad
Unser Paket verwendet standardmäßig das .-Verzeichnis. Sie können dies ändern, indem Sie die Methode filePath(string $path) aufrufen.
MJML 5 behandelt filePath als den Basis-Sandbox für Inklusionen. Wenn Inklusionen aktiviert sind, werden Pfade außerhalb von filePath abgelehnt, es sei denn, sie sind ausdrücklich mit includePath(string|array|null $path) erlaubt.
Juice
Wir bieten standardmäßig keine Juice-Optionen an. Sie können Juice-Optionen hinzufügen, indem Sie die folgenden Methoden verwenden:
setJuiceOptions(array $options)- Legen Sie die Juice-Optionen fest.addJuiceOption(string $option, mixed $value)- Fügt eine Juice-Option hinzu.removeJuiceOption(string $option)- Entfernt eine Juice-Option.setJuicePreserveTags(array $tags)- Legen Sie die Juice-Preserve-Tags fest.addJuicePreserveTag(string $tag, mixed $value)- Fügt ein Juice-Preserve-Tag hinzu.removeJuicePreserveTag(string $tag)- Entfernt ein Juice-Preserve-Tag.
Support Richtlinien
Danke, dass Sie sich für unser Open-Source-Paket entschieden haben! Bitte nehmen Sie sich einen Moment Zeit, um diese Unterstützungsrichtlinien durchzulesen. Sie helfen Ihnen, das Beste aus unserem Projekt herauszuholen.
Community-gesteuerte Unterstützung
Unser Open-Source-Projekt wird von unserer großartigen Community unterstützt. Wenn Sie Fragen haben oder Hilfe benötigen, sind StackOverflow und andere Online-Ressourcen Ihre besten Optionen.
Bugs und Priorisierung von Funktionen
Die Realität des Managements eines Open-Source-Projekts bedeutet, dass wir nicht sofort jeden gemeldeten Fehler oder jede Funktionsanfrage angehen können. Wir priorisieren Probleme in der folgenden Reihenfolge:
1. Bugs, die unsere kostenpflichtigen Produkte betreffen
Bugs, die unsere kostenpflichtigen Produkte beeinträchtigen, haben immer die höchste Priorität. In einigen Fällen behandeln wir möglicherweise nur Bugs, die uns direkt betreffen.
2. Community Pull Requests
Wenn Sie einen Bug identifiziert haben und eine Lösung haben, reichen Sie bitte einen Pull Request ein. Nach den Problemen, die unsere Produkte betreffen, geben wir diesen community-gesteuerten Fehlerbehebungen die nächsthöchste Priorität. Sobald Ihr Lösungsvorschlag geprüft und genehmigt wurde, werden wir Ihre Lösung zusammenführen und Ihre Beiträge anerkennen.
3. Finanzielle Unterstützung
Für Probleme außerhalb der genannten Kategorien können Sie sich entscheiden, deren Lösung zu finanzieren. Jedes offene Problem ist mit einem Bestellformular verknüpft, über das Sie finanziell beitragen können. Wir priorisieren diese Probleme basierend auf dem bereitgestellten Finanzierungsbetrag.
Community-Beiträge
Open Source gedeiht, wenn seine Community aktiv ist. Auch wenn Sie keine Bugs beheben, ziehen Sie in Betracht, durch Codeverbesserungen, Dokumentationsaktualisierungen, Tutorials oder durch Unterstützung anderer in Community-Kanälen einen Beitrag zu leisten. Wir ermutigen alle, als Community zusammenzuarbeiten, um die Arbeit im Bereich Open Source zu unterstützen.
Nocht einmal: DefectiveCode wird Bugs priorisieren, basierend darauf, wie sie unsere kostenpflichtigen Produkte, Community-Pull-Requests und die finanzielle Unterstützung für Probleme beeinträchtigen.
Lizenz - MIT Lizenz
Copyright © Defective Code, LLC. Alle Rechte vorbehalten
Hiermit wird jedermann, der eine Kopie dieser Software und der dazugehörigen Dokumentationsdateien (die "Software") erhält, kostenlos die Erlaubnis erteilt, die Software ohne Einschränkung zu nutzen, einschließlich, aber nicht beschränkt auf das Recht, die Software zu verwenden, zu kopieren, zu modifizieren, zusammenzuführen, zu veröffentlichen, zu vertreiben, Unterlizenzen zu erteilen und/oder Kopien der Software zu verkaufen, sowie Personen, denen die Software bereitgestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Die obige Urheberrechtshinweis und diese Erlaubnismitteilung sind in allen Kopien oder wesentlichen Teilen der Software enthalten.
DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE GARANTIE IRGENDWELCHER ART, WEDER AUSDRÜCKLICH NOCH STILLSCHWEIGEND, EINSCHLIESSLICH, ABER NICHT BEGRENZT AUF DIE GARANTIEN DER MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER FÜR IRGENDEINEN ANSPRUCH, SCHÄDEN ODER ANDERE HAFTUNGEN HAFTBAR, OB IN EINER KLAUSEL FÜR VERTRAG, DELIKT ODER ANDERS, DIE AUS DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GEHEIMNISSEN IN DER SOFTWARE ENTSTEHEN.