English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Upgraider
- Introduction
- Installation
- Utilisation (Sans Laravel)
- Utilisation (Avec Laravel)
- Configuration
- دعم الإرشادات
- Lizenz - MIT Lizenz
Upgraider
Si vous mettez à niveau à partir d'une version antérieure, veuillez consulter le Guide de mise à niveau pour les changements importants et les étapes de migration.
Introduction
MJML est un langage de balisage spécialement conçu pour simplifier le processus de codage des courriels responsives. Sa syntaxe sémantique garantit facilité et simplicité, tandis que sa vaste bibliothèque de composants standard accélère le développement et réduit la complexité de votre code de courriel. Le moteur open-source de MJML génère du HTML responsive de haute qualité qui respecte les meilleures pratiques. Si vous avez connu les frustrations liées au travail avec Outlook, ce package est fait pour vous.
Notre implémentation de MJML sert de wrapper pour l'API officielle de MJML. Elle permet une compilation pratique de MJML en HTML directement dans PHP, sans besoin de NodeJS. Ce package est idéal pour les applications PHP qui souhaitent intégrer MJML sans le tracas d'installer NodeJS et le CLI MJML.
Exemple
// Sans Laravel(new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // HTML minifié(new MJML)->minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Avec LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Avec Laravel et HTML minifiéMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
Installation
-
Ajoutez d'abord ce qui suit à votre fichier
composer.jsonpour instruire notre package de tirer les binaires corrects pour votre système d'exploitation lors de l'installation de notre package. Les binaires seront téléchargés après l'exécution deinstall,updateoudump-autoload.{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}Le binaire MJML sera obtenu à partir de notre CDN et enregistré dans le dossier "bin" de ce package pendant l'installation ou la mise à jour de Composer. Assurez-vous d'avoir les binaires nécessaires chargés pour vos environnements local et de production.
Par défaut,
alltirera tous les binaires que nous supportons. Nous recommandons de restreindre cela aux systèmes d'exploitation et architectures dont vous avez besoin pour économiser de la bande passante et des temps d'installation. Voici les binaires disponibles.Système d'exploitation Architecture Commande de mise à jour Composer Tous Tous 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 -
Ensuite, installez le package PHP en exécutant la commande composer suivante :
composer require defectivecode/mjml -
C'est tout ! Si vous utilisez Laravel, notre package s'installera automatiquement grâce à la découverte des packages de Laravel.
Utilisation (Sans Laravel)
Consultez l'utilisation avec Laravel ci-dessous si vous utilisez Laravel.
Rendu MJML
Pour rendre MJML, passez simplement votre chaîne MJML à la méthode render :
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>');
Validation MJML
Pour valider MJML, passez simplement votre chaîne MJML à la méthode isValid :
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>');
Utilisation (Avec Laravel)
Rendu MJML
Pour rendre MJML, passez simplement votre chaîne MJML à la méthode render de la façade MJML :
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>');
Validation MJML
Pour valider MJML, passez simplement votre chaîne MJML à la méthode isValid de la façade MJML :
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>');
Configuration
Vous pouvez publier le fichier de configuration en utilisant la commande suivante :
php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"
Cela créera un fichier de configuration mjml.php dans votre dossier config. Toutes les options énumérées dans le fichier de configuration sont passées à l'objet config lorsque vous utilisez la façade MJML.
Configuration
Toutes les options de configuration peuvent être définies en appelant les méthodes suivantes directement sur l'objet MJML.
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>' );
Notre package suit la même configuration que le package officiel MJML sauf pour les points suivants :
preprocessors- Cette option n'est pas disponible. Veuillez ouvrir une demande de tirage si vous souhaitez ajouter cette option.minifyOptions- Nous utilisons un minificateur léger basé sur PHP au lieu dehtml-minifier. Le minificateur supprime les commentaires (sauf les conditionnels Outlook), réduit les espaces blancs et supprime les espaces blancs entre les balises.
Polices
Notre package utilise les polices suivantes par défaut :
- 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
Vous pouvez changer les polices en utilisant les méthodes suivantes :
addFont(string $font, string $url)- Ajouter une police à la liste des polices.removeFont(string $font)- Supprimer une police de la liste des polices.setFonts(array $fonts)- Définir la liste des polices. Vous devez fournir un tableau de polices au format suivant :['nom-de-police' => 'url-de-police'].
Commentaires
Les commentaires sont conservés par défaut. Si vous souhaitez supprimer les commentaires, vous pouvez utiliser la méthode removeComments().
Vous pouvez également annuler le removeComments() en appelant la méthode keepComments().
Ignorer les inclusions
Par défaut, notre package inclura toutes les balises mj-include. Vous pouvez ajuster ce comportement en appelant la méthode ignoreIncludes(bool $ignore).
Beautifier
Notre package beautifiera le HTML en utilisant js-beautify avec les options par défaut suivantes :
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
Bien que
js-beautifyutilise snake_case pour fournir des options, vous devez utiliser camelCase lorsque vous utilisez notre package. Nous avons fait ce choix pour maintenir la cohérence de notre package avec le reste des options de configuration. Notre package convertira automatiquement les options camelCase en snake_case.
Vous pouvez écraser n'importe laquelle de ces options en fournissant une configuration valide js-beautify en utilisant les méthodes suivantes :
setBeautifyOptions(array $options)- Définissez les optionsjs-beautify.addBeautifyOption(string $option, mixed $value)- Ajoute une optionjs-beautify.removeBeautifyOption(string $option)- Supprime une optionjs-beautify.
Minifier
Notre package minifiera la sortie HTML lorsqu'elle est activée. La minification effectue les opérations suivantes :
- Supprime les commentaires HTML (préserve les commentaires conditionnels Outlook comme
<!--[if mso]>) - Réduit plusieurs caractères d'espacement en un seul espace
- Supprime les espaces entre les balises HTML
Vous pouvez activer ou désactiver la minification en appelant la méthode minify(bool $minify).
Pourquoi la minification basée sur PHP ? Le package MJML officiel utilise
html-minifierpour la minification, qui a une vulnérabilité ReDoS connue (CVE-2022-37620) sans correctif disponible car le package n'est plus maintenu. Pour éviter de regrouper des dépendances vulnérables, nous avons déplacé la minification vers PHP en utilisant une mise en œuvre légère et sécurisée.
Niveau de validation
Notre package validera le MJML en utilisant le niveau de validation soft par défaut. Vous pouvez changer cela en utilisant la méthode
validationLevel(ValidationLevel $validationLevel). Les niveaux de validation suivants sont disponibles :
strict- Votre document passe par la validation et n'est pas rendu s'il a une erreursoft- Votre document passe par la validation et est rendu, même s'il a des erreursskip- Votre document est rendu sans passer par la validation.
Chemin du fichier
Notre package utilisera le répertoire . par défaut. Vous pouvez changer cela en appelant la méthode filePath(string $path).
Juice
Nous ne fournissons aucune option juice par défaut. Vous pouvez ajouter des options juice en utilisant les méthodes suivantes :
setJuiceOptions(array $options)- Définir les options de juice.addJuiceOption(string $option, mixed $value)- Ajoute une option juice.removeJuiceOption(string $option)- Supprime une option juice.setJuicePreserveTags(array $tags)- Définir les balises preserve juice.addJuicePreserveTag(string $tag, mixed $value)- Ajoute une balise preserve juice.removeJuicePreserveTag(string $tag)- Supprime une balise preserve juice.
دعم الإرشادات
شكرًا لاختيارك حزمة المصادر المفتوحة الخاصة بنا! يرجى أخذ لحظة للاطلاع على هذه الإرشادات للدعم. ستساعدك في تحقيق أقصى استفادة من مشروعنا.
الدعم المدفوع من المجتمع
مشروعنا مفتوح المصدر مدفوع بمجموعتنا الرائعة. إذا كان لديك أي أسئلة أو تحتاج إلى مساعدة، فإن StackOverflow و موارد الإنترنت الأخرى هي أفضل خيارات لك.
الأخطاء، وأولويات الميزات
واقع إدارة مشروع مفتوح المصدر يعني أننا لا نستطيع معالجة كل خطأ تم الإبلاغ عنه أو طلب ميزة على الفور. نحن نعطي الأولوية للقضايا بالترتيب التالي:
1. الأخطاء التي تؤثر على منتجاتنا المدفوعة
تعتبر الأخطاء التي تؤثر على منتجاتنا المدفوعة دائمًا في قمة أولوياتنا. في بعض الحالات، قد نكتفي بمعالجة الأخطاء التي تؤثر علينا مباشرة.
2. طلبات السحب الخاصة بالمجتمع
إذا كنت قد حددت خطأ ولديك حل، يرجى تقديم طلب سحب. بعد القضايا التي تؤثر على منتجاتنا، نعطي الأولوية الأعلى لهذه الإصلاحات المدفوعة من المجتمع. بمجرد مراجعتها والموافقة عليها، سنقوم بدمج حلك ونذكر مساهمتك.
3. الدعم المالي
بالنسبة للقضايا خارج الفئات المذكورة، يمكنك اختيار تمويل حلها. كل قضية مفتوحة مرتبطة بنموذج طلب حيث يمكنك المساهمة ماليًا. نحن نعطي الأولوية لهذه القضايا بناءً على المبلغ المقدم من التمويل.
مساهمات المجتمع
تزدهر المصادر المفتوحة عندما يكون المجتمع نشطًا. حتى إذا لم تكن تقوم بإصلاح الأخطاء، قم بالتفكير في المساهمة من خلال تحسينات الكود، تحديثات الوثائق، الدروس التعليمية، أو من خلال مساعدة الآخرين في قنوات المجتمع. نحن نشجع الجميع، كمجتمع، على دعم العمل المفتوح المصدر.
للتأكيد، ستعطي DefectiveCode الأولوية للأخطاء بناءً على كيفية تأثيرها على منتجاتنا المدفوعة، وطلبات السحب الخاصة بالمجتمع، والدعم المالي المستلم للقضايا.
Lizenz - MIT Lizenz
Copyright © Defective Code, LLC. Alle Rechte vorbehalten
Hiermit wird kostenlos die Erlaubnis erteilt, an jede Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, mit der Software ohne Einschränkung umzugehen, einschließlich, aber nicht beschränkt auf die Rechte, die Software zu nutzen, zu kopieren, zu modifizieren, zu fusionieren, zu veröffentlichen, zu verteilen, Unterlizenzen zu erteilen und/oder Kopien der Software zu verkaufen, und Personen, denen die Software zur Verfügung gestellt wird, zu gestatten, dies zu tun, unter der Bedingung der folgenden Bedingungen:
Der obige Copyright-Hinweis und dieser Erlaubnishinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE GARANTIE, WELCHER ART, AUSDRÜCKLICH ODER IMPLIZIT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND KEINEN RECHTSBRUCH. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-RECHTHABER FÜR IRGENDEINEN ANSPRUCH, SCHÄDEN ODER SONSTIGE HAFTUNG HAFTBAR, UNABHÄNGIG DAVON, OB IN EINER KLAGE AUS VERTRAG, DELIKT ODER SONSTIGEM, ENTSTEHEND AUS, IM HINBLICK AUF ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN TRANSAKTIONEN IN DER SOFTWARE.