Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

الترقية

إذا كنت تقوم بالترقية من إصدار سابق، يرجى الاطلاع على دليل الترقية للتغييرات الهامة وخطوات الانتقال.

المقدمة

MJML هي لغة ترميز مصممة خصيصًا لتبسيط عملية ترميز الرسائل الإلكترونية المتجاوبة. يضمن تركيبها الدلالي سهولة وبساطة، بينما تعمل مكتبتها الواسعة من المكونات القياسية على تسريع تطوير الرسائل وتقليل تعقيد قاعدة كود بريدك الإلكتروني. يقوم المحرك مفتوح المصدر الخاص بـ MJML بإنشاء HTML عالي الجودة ومتجاوب يتماشى مع أفضل الممارسات. إذا كنت قد واجهت الإحباطات أثناء العمل مع Outlook، فإن هذه الحزمة مصممة خصيصًا لك.

تعمل تطبيقات MJML الخاصة بنا كغلاف لواجهة برمجة التطبيقات الرسمية لـ MJML. إنها تتيح تجميع MJML في HTML بسهولة مباشرة داخل PHP، بدون الحاجة إلى NodeJS. هذه الحزمة مثالية لتطبيقات PHP التي ترغب في دمج MJML دون عناء تثبيت NodeJS وواجهة سطر الأوامر الخاصة بـ MJML.

مثال

// بدون 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>'
);
 
// مع Laravel
MJML::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>'
);

التثبيت

  1. أولاً، أضف ما يلي إلى ملف 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 (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64
    Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-musl
    Linux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl
  2. بعد ذلك، قم بتثبيت حزمة PHP عن طريق تشغيل أمر composer التالي:

    composer require defectivecode/mjml
  3. هذا كل شيء! إذا كنت تستخدم Laravel، ستقوم حزمة لدينا بالتثبيت تلقائيًا باستخدام اكتشاف حزم Laravel.

الاستخدام (بدون Laravel)

راجع الاستخدام مع Laravel أدناه إذا كنت تستخدم Laravel.

عرض MJML

لعرض 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، ما عليك سوى تمرير سلسلة 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>'
);

الاستخدام (مع Laravel)

عرض MJML

لعرض MJML، ما عليك سوى تمرير سلسلة MJML الخاصة بك إلى render على واجهة 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، ما عليك سوى تمرير سلسلة 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 الرسمية باستثناء ما يلي:

الخطوط

تستخدم حزمة لدينا الخطوط التالية بشكل افتراضي:

يمكنك تغيير الخطوط باستخدام الطرق التالية:

التعليقات

تُحتفظ بالتعليقات بشكل افتراضي. إذا كنت ترغب في إزالة التعليقات، يمكنك استخدام طريقة removeComments().

يمكنك أيضًا التراجع عن removeComments() من خلال استدعاء طريقة keepComments().

تجاهل الشمول

بشكل افتراضي، ستقوم حزمة لدينا بتضمين أي علامات mj-include. يمكنك تعديل هذا السلوك من خلال استدعاء طريقة ignoreIncludes(bool $ignore).

التجمل

ستقوم حزمة لدينا بتجميل HTML باستخدام js-beautify مع الخيارات الافتراضية التالية:

بينما يستخدم js-beautify snake_case لتقديم الخيارات، يجب عليك استخدام camelCase عند استخدام حزمة لدينا. قمنا بهذا الخيار لضمان تناسق حزمة لدينا مع بقية خيارات التكوين. ستقوم حزمة لدينا تلقائيًا بتحويل خيارات camelCase إلى snake_case.

يمكنك تجاوز أي من هذه الخيارات من خلال تقديم تكوين js-beautify صالح باستخدام الطرق التالية:

المصغرات

ستقوم حزمة لدينا بتصغير مخرجات HTML عند تفعيلها. يقوم التصغير بما يلي:

يمكنك تفعيل أو تعطيل التصغير من خلال استدعاء طريقة minify(bool $minify).

لماذا التصغير القائم على PHP؟ تستخدم حزمة MJML الرسمية html-minifier للتصغير، والتي تحتوي على ثغرة ReDoS (CVE-2022-37620) بدون أي تصحيح متاح حيث لم تعد الحزمة صيانة. لتجنب تجميع الاعتمادات القابلة للاستغلال، قمنا بنقل التصغير إلى PHP باستخدام تنفيذ خفيف وآمن.

مستوى التحقق

ستقوم حزمة لدينا بالتحقق من MJML باستخدام مستوى التحقق soft بشكل افتراضي. يمكنك تغيير ذلك باستخدام طريقة validationLevel(ValidationLevel $validationLevel) . المستويات المتاحة للتحقق هي:

مسار الملف

ستستخدم حزمة لدينا الدليل . بشكل افتراضي. يمكنك تغيير ذلك من خلال استدعاء طريقة filePath(string $path).

Juice

نحن لا نقدم أي خيارات juice بشكل افتراضي. يمكنك إضافة خيارات juice باستخدام الطرق التالية:

إرشادات الدعم

شكرًا لاختيارك حزمتنا مفتوحة المصدر! يرجى أخذ لحظة للاطلاع على هذه الإرشادات الخاصة بالدعم. إنها ستساعدك على الاستفادة القصوى من مشروعنا.

دعم مدفوع من المجتمع

مشروعنا مفتوح المصدر مدعوم من مجتمعنا الرائع. إذا كانت لديك أسئلة أو تحتاج إلى مساعدة، فإن StackOverflow وغيرها من الموارد عبر الإنترنت هي أفضل الخيارات لديك.

الأخطاء، وأولوية الميزات

حقيقة إدارة مشروع مفتوح المصدر تعني أنه لا يمكننا معالجة كل خطأ أو طلب ميزة مبلّغ عنه على الفور. نحن نحدد أولويات المشكلات بالترتيب التالي:

1. الأخطاء التي تؤثر على منتجاتنا المدفوعة

الأخطاء التي تؤثر على منتجاتنا المدفوعة ستكون دائمًا أولويتنا القصوى. في بعض الحالات، قد نعمل فقط على معالجة الأخطاء التي تؤثر علينا بشكل مباشر.

2. طلبات السحب من المجتمع

إذا كنت قد حددت خطأ ولديك حل، يرجى تقديم طلب سحب. بعد معالجة المشكلات التي تؤثر على منتجاتنا، نمنح الأولوية الأعلى لهذه الإصلاحات المدفوعة من المجتمع. بمجرد مراجعة الحل والموافقة عليه، سنقوم بدمجه وسنُعطيك الفضل لمساهمتك.

3. الدعم المالي

بالنسبة للمشكلات خارج الفئات المذكورة، يمكنك اختيار تمويل حلها. كل مشكلة مفتوحة مرتبطة بنموذج طلب يمكنك من خلاله المساهمة ماليًا. نحن نحدد أولويات هذه المشكلات بناءً على المبلغ المالي المقدم.

مساهمات المجتمع

تزدهر المصادر المفتوحة عندما يكون المجتمع نشطًا. حتى لو لم تكن تصلح الأخطاء، فكر في المساهمة من خلال تحسينات الكود، أو تحديث الوثائق، أو إنشاء دروس، أو بمساعدة الآخرين في قنوات المجتمع. نحن نشجع بشكل كبير الجميع، كمجتمع، على تقديم الدعم للعمل المفتوح المصدر.

لإعادة التأكيد، ستحظى DefectiveCode بأولوية الأخطاء استنادًا إلى كيفية تأثيرها على منتجاتنا المدفوعة، وطلبات سحب المجتمع، والدعم المالي الذي تم تلقيه للمشكلات.

الترخيص - MIT License

حقوق الطبع والنشر © Defective Code, LLC. جميع الحقوق محفوظة

يتم منح الإذن بموجب هذا، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة (الـ"برنامج")، للتعامل في البرنامج دون قيود، بما في ذلك بدون حصر الحقوق في الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والتراخيص الفرعية و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم تقديم البرنامج لهم بذلك، بشرط الالتزام بالشروط التالية:

يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.

يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك ولكن لا تقتصر على ضمانات القابلية للتسويق، والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال، لا يتحمل المؤلفون أو أصحاب حقوق الطبع المسؤولية عن أي مطالبة أو أضرار أو مسؤوليات أخرى، سواء كانت في إطار عقد أو ضرر أو خلاف ذلك، ناشئة عن أو نتيجة عن أو تتعلق بالبرنامج أو الاستخدام أو التعاملات الأخرى في البرنامج.