English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
تم ترجمة هذا المستند تلقائيًا. إذا كانت هناك أخطاء في الترجمة، يرجى فتح
طلب سحب
على المشروع وإضافة الملف المترجم إلى docs/{رمز ISO 639-1}.md
.
MJML هو لغة ترميز تم تصميمها خصيصًا لتبسيط عملية ترميز رسائل البريد الإلكتروني المستجيبة. بناءً على بناء الجملة الدلالية الخاصة به ، يضمن بساطة وسهولة الاستخدام ، بينما تسرع مكتبة المكونات القياسية الواسعة من تطوير وتقلل من تعقيد قاعدة بيانات البريد الإلكتروني الخاصة بك. محرك MJML مفتوح المصدر يولد HTML مستجيبًا عالي الجودة يلتزم بأفضل الممارسات. إذا كنت قد واجهت تحديات العمل مع Outlook ، فإن هذه الحزمة مصممة خصيصًا لك.
تعمل تنفيذتنا لـ MJML كغلاف لـ MJML API الرسمي. يتيح تجميع MJML بسهولة إلى HTML مباشرة داخل PHP ، دون الحاجة إلى NodeJS. هذه الحزمة مثالية لتطبيقات PHP التي ترغب في دمج MJML دون عناء تثبيت NodeJS و MJML CLI.
// بدون 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 المصغر(new MJML)->minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // مع LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // مع Laravel و HTML المصغرMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
أضف أولاً ما يلي إلى ملف composer.json
الخاص بك لإرشاد حزمتنا لسحب الثنائيات الصحيحة لنظام التشغيل الخاص بك عند تثبيت حزمتنا. ستقوم الثنائيات بالتنزيل بعد تشغيل الأمر install
أو update
أو dump-autoload
.
{ "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}
سيتم الحصول على الثنائي الخاص بـ MJML من خادم CDN الخاص بنا وسيتم حفظه في مجلد "bin" لهذه الحزمة أثناء تثبيت أو تحديث composer. تأكد من تحميل الثنائيات اللازمة لكل من بيئتك المحلية والإنتاجية.
بشكل افتراضي ، ستقوم القيمة all
بسحب جميع الثنائيات التي ندعمها. نوصي بتحديد نطاق هذا الأمر لأنظمة التشغيل والهندسة المعمارية التي تحتاجها لتوفير النطاق الترددي وأوقات التثبيت. فيما يلي الثنائيات المتاحة.
نظام التشغيل | الهندسة المعمارية | أمر تحديث ما بعد Composer |
---|---|---|
الكل | الكل | DefectiveCode\MJML\PullBinary::all |
Darwin (MacOS) | arm64 | DefectiveCode\MJML\PullBinary::darwin-arm64 |
Darwin (MacOS) | x64 | DefectiveCode\MJML\PullBinary::darwin-x64 |
Linux | arm64 | DefectiveCode\MJML\PullBinary::linux-arm64 |
Linux | x64 | DefectiveCode\MJML\PullBinary::linux-x64 |
بعد ذلك ، قم بتثبيت حزمة PHP عن طريق تشغيل الأمر composer التالي:
composer require defectivecode/mjml
هذا كل شيء! إذا كنت تستخدم Laravel ، فسيتم تثبيت حزمتنا تلقائيًا باستخدام اكتشاف الحزم في Laravel.
انظر إلى الاستخدام مع لارافيل أدناه إذا كنت تستخدم لارافيل.
لتقديم MJML ، ما عليك سوى تمرير سلسلة MJML الخاصة بك إلى طريقة 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>');
للتحقق من صحة MJML ، ما عليك سوى تمرير سلسلة MJML الخاصة بك إلى طريقة 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>');
لتقديم MJML ، ما عليك سوى تمرير سلسلة MJML الخاصة بك إلى الواجهة الأمامية 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>');
للتحقق من صحة MJML ، ما عليك سوى تمرير سلسلة MJML الخاصة بك إلى طريقة isValid
على الواجهة الأمامية 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>');
يمكنك نشر ملف التكوين باستخدام الأمر التالي:
php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"
سيتم إنشاء ملف تكوين mjml.php
في مجلد config
الخاص بك. يتم تمرير جميع الخيارات المدرجة في ملف التكوين إلى كائن config
عند استخدام واجهة الأمام MJML.
يمكن تعيين جميع خيارات التكوين عن طريق استدعاء الأساليب التالية مباشرةً على كائن 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>' );
يتبع حزمتنا نفس التكوين كحزمة MJML الرسمية باستثناء ما يلي:
preprocessors
- هذا الخيار غير متاح. يرجى فتح طلب سحب إذا كنت ترغب في إضافة هذا الخيار.minifyOptions
- نستخدم html-minifier-terser
بينما تستخدم الحزمة الرسمية html-minifier
للتصغير. قررنا تبديل المعالج لأن html-minifer
لم يعد يتم صيانته ولديه بعض المشاكل الأمنية المرتبطة به.تستخدم حزمتنا الخطوط التالية افتراضيًا:
يمكنك تغيير الخطوط باستخدام الأساليب التالية:
addFont(string $font, string $url)
- إضافة خط إلى قائمة الخطوط.removeFont(string$font)
- إزالة الخط من قائمة الخطوط.setFonts(array $fonts)
- تعيين قائمة الخطوط. يجب توفير مصفوفة الخطوط بهذا الشكل: ['اسم الخط' => 'رابط الخط']
.تُحتفظ بالتعليقات افتراضيًا. إذا كنت ترغب في إزالة التعليقات ، فيمكنك استخدام طريقة removeComments()
.
يمكنك أيضًا التراجع عن removeComments()
عن طريق استدعاء طريقة keepComments()
.
بشكل افتراضي ، ستقوم حزمتنا بتضمين أي علامات mj-include
. يمكنك ضبط
هذا السلوك عن طريق استدعاء طريقة ignoreIncludes(bool $ignore)
.
ستقوم حزمتنا بتجميل HTML باستخدام js-beautify
باستخدام الخيارات الافتراضية التالية:
بينما يستخدم
js-beautify
snake_case لتوفير الخيارات ، يجب استخدام camelCase عند استخدام حزمتنا. اتخذنا هذا الاختيار للحفاظ على توافق حزمتنا مع بقية خيارات التكوين. ستقوم حزمتنا تلقائيًا بتحويل خيارات camelCase إلى snake_case.
يمكنك تجاوز أي من هذه الخيارات عن طريق توفير تكوين صالح لـ js-beautify
باستخدام الأساليب التالية:
setBeautifyOptions(array $options)
- تعيين خيارات js-beautify
.addBeautifyOption(string $option, mixed $value)
- إضافة خيار js-beautify
.removeBeautifyOption(string $option)
- إزالة خيار js-beautify
.ستقوم حزمتنا بتصغير HTML باستخدام html-minifier-terser
باستخدام الخيارات الافتراضية التالية:
يمكنك تجاوز أي من هذه الخيارات عن طريق توفير تكوين صالح لـ html-minifier-terser
باستخدام الأساليب التالية:
setMinifyOptions(array $options)
- تعيين خيارات html-minifier-terser
.addMinifyOption(string $option, mixed $value)
- إضافة خيار html-minifier-terser
.removeMinifyOption(string $option)
- إزالة خيار html-minifier-terser
.ستقوم حزمتنا بالتحقق من MJML باستخدام مستوى التحقق soft
افتراضيًا. يمكنك تغيير ذلك باستخدام طريقة validationLevel(ValidationLevel $validationLevel)
. يتوفر المستويات التالية للتحقق:
strict
- يتم إجراء التحقق من المستند الخاص بك ولا يتم تقديمه إذا كان يحتوي على أي خطأsoft
- يتم إجراء التحقق من المستند الخاص بك ويتم تقديمه ، حتى إذا كان يحتوي على أخطاءskip
- يتم تقديم المستند الخاص بك دون إجراء التحقق.ستستخدم حزمتنا المسار .
افتراضيًا. يمكنك تغيير ذلك عن طريق استدعاء طريقة filePath(string $path)
.
لا نقدم أي خيارات juice افتراضيًا. يمكنك إضافة خيارات juice باستخدام الأساليب التالية:
setJuiceOptions(array $options)
- تعيين خيارات juice.addJuiceOption(string $option, mixed $value)
- إضافة خيار juice.removeJuiceOption(string $option)
- إزالة خيار juice.setJuicePreserveTags(array $tags)
- تعيين علامات الحفاظ على juice.addJuicePreserveTag(string $tag, mixed $value)
- إضافة علامة الحفاظ على juice.removeJuicePreserveTag(string $tag)
- إزالة علامة الحفاظ على juice.شكرًا لاختيارك لحزمتنا مفتوحة المصدر! يرجى أن تأخذ لحظة للاطلاع على هذه الإرشادات للدعم. ستساعدك في الاستفادة القصوى من مشروعنا.
مشروعنا مفتوح المصدر يعتمد على مجتمعنا الرائع. إذا كان لديك أي أسئلة أو تحتاج إلى مساعدة، فإن StackOverflow وغيرها من المصادر عبر الإنترنت هي أفضل خياراتك.
حقيقة إدارة مشروع مفتوح المصدر تعني أننا لا يمكننا التعامل مع كل خطأ مبلغ عنه أو طلب ميزة على الفور. نحدد أولوية المشاكل بالترتيب التالي:
سيكون الأخطاء التي تؤثر على منتجاتنا المدفوعة دائمًا أولويتنا العليا. في بعض الحالات، قد نتعامل فقط مع الأخطاء التي تؤثر علينا مباشرة.
إذا كنت قد حددت خطأ ولديك حلاً، يرجى تقديم طلب سحب. بعد المشاكل التي تؤثر على منتجاتنا، نعطي الأولوية الأعلى لهذه الإصلاحات التي يقودها المجتمع. بمجرد مراجعتها والموافقة عليها، سندمج حلك وننسب مساهمتك.
بالنسبة للمشاكل خارج الفئات المذكورة، يمكنك اختيار تمويل حلها. يتم ربط كل مشكلة مفتوحة بنموذج طلب حيث يمكنك المساهمة ماليًا. نحدد أولوية هذه المشاكل بناءً على المبلغ المالي المقدم.
يزدهر المصدر المفتوح عندما يكون مجتمعه نشطًا. حتى إذا لم تكن تقوم بإصلاح الأخطاء، فكر في المساهمة من خلال تحسينات الشفرة، وتحديثات الوثائق، والبرامج التعليمية، أو بمساعدة الآخرين في قنوات المجتمع. نشجع بشدة الجميع، كمجتمع، على مساعدة دعم العمل المفتوح المصدر.
لتكرار الفكرة، ستعطي DefectiveCode الأولوية للأخطاء بناءً على كيفية تأثيرها على منتجاتنا المدفوعة، طلبات السحب من المجتمع، والدعم المالي المتلقى للمشاكل.
حقوق النشر © Defective Code، شركة ذات مسؤولية محدودة. جميع الحقوق محفوظة.
يتم منح إذن هنا، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به (البرنامج)، للتعامل في البرنامج دون أي قيود، بما في ذلك دون حصر الحقوق في استخدام ونسخ وتعديل ودمج ونشر وتوزيع ومنح ترخيص للأشخاص الذين يتم تزويدهم بالبرنامج للقيام بذلك، على أن تكون مشروطة بالشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، بدون أي ضمان، صريحًا أو ضمنيًا، بما في ذلك ولكن لا يقتصر على الضمانات التجارية واللياقة لغرض معين وعدم الانتهاك. في أي حالة، لا يتحمل المؤلفون أو حاملو حقوق النشر أي مسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إطار عقد أو تورط أو غير ذلك، ناشئة عن أو في اتصال بالبرنامج أو استخدامه أو غير ذلك.