English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- الترقية
- المقدمة
- التثبيت
- الاستخدام (بدون Laravel)
- الاستخدام (مع Laravel)
- التكوين
- إرشادات الدعم
- الترخيص - MIT License
الترقية
إذا كنت تقوم بالترقية من إصدار سابق، يرجى الاطلاع على دليل الترقية لمعرفة التغييرات المهمة وخطوات الانتقال.
المقدمة
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>'); // مع 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 من شبكة توزيع المحتوى الخاصة بنا وحفظه في مجلد "bin" لهذه الحزمة أثناء تثبيت composer أو تحديثه. تأكد من تحميل الثنائيات اللازمة لكل من البيئة المحلية والبيئة الإنتاجية.
بشكل افتراضي، ستقوم
allبسحب جميع الثنائيات التي ندعمها. نوصي بتخفيض ذلك إلى أنظمة التشغيل والعمارة التي تحتاج إلى توفير عرض النطاق الترددي وأوقات التثبيت. فيما يلي الثنائيات المتاحة.نظام التشغيل المعمارية أمر ما بعد تحديث Composer جميع جميع DefectiveCode\MJML\PullBinary::allداروين (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64داروين (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64لينوكس (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64لينوكس (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64لينوكس (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-muslلينوكس (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl -
بعد ذلك، ثبّت حزمة PHP عن طريق تشغيل الأمر composer التالي:
composer require defectivecode/mjml -
هذا كل شيء! إذا كنت تستخدم 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 الرسمية باستثناء ما يلي:
preprocessors- هذه الخيار غير متاح. يرجى فتح طلب سحب إذا كنت ترغب في إضافة هذا الخيار.minifyOptions- نحتفظ بتقنية التصغير في PHP لتوافق الناتج. يقوم المصغر بإزالة التعليقات (باستثناء الشروط الخاصة بـ Outlook)، ويقلل المسافات الفارغة، ويزيل المسافات بين العلامات.sanitizeStylesوtemplateSyntaxوallowMixedSyntax- تنطبق خيارات MJML 5 هذه على مسار التصغير htmlnano/cssnano الأصلي لـ MJML. لا تستخدمها مصغرة PHP الخاصة بهذه الحزمة.
الخطوط
تستخدم حزمةنا الخطوط التالية افتراضيًا:
- 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
يمكنك تغيير الخطوط باستخدام الطرق التالية:
addFont(string $font, string $url)- أضف خطًا إلى قائمة الخطوط.removeFont(string $font)- إزالة خط من قائمة الخطوط.setFonts(array $fonts)- تعيين قائمة الخطوط. يجب عليك تقديم مصفوفة من الخطوط بهذا التنسيق:['اسم الخط' => 'رابط الخط'].
التعليقات
تحتفظ الحزمة بالتعليقات بشكل افتراضي. إذا كنت ترغب في إزالة التعليقات، يمكنك استخدام
طريقة removeComments().
يمكنك أيضًا العودة عن removeComments() عن طريق استدعاء طريقة keepComments().
تجاهل الإدراجات
بشكل افتراضي، تتجاهل حزمةنا علامات mj-include. هذا يتوافق مع
افتراضية MJML 5 الأكثر أمانًا. يمكنك تمكين الإدراجات عن طريق استدعاء ignoreIncludes(false).
عند تمكين الإدراجات، استخدم filePath(string $path) كدليل أساسي و includePath(string|array|null $path)
للسماح بدلائل إدراج إضافية.
تحسين
ستقوم حزمةنا بتحسين HTML باستخدام js-beautify. تستخدم MJML 5.2
أيضًا js-beautify داخليًا، ولكن هذه الحزمة تحتفظ بالتحسين على مستوى الغلاف بحيث تظل خيارات beautifyOptions
الـ PHP المخصصة تعمل. خيارات الافتراضية هي:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
بينما يستخدم
js-beautifysnake_case لتوفير الخيارات، يجب عليك استخدام camelCase عند استخدام حزمةنا. لقد اخترنا هذا الخيار للحفاظ على اتساق حزمةنا مع بقية خيارات التكوين. ستقوم حزمةنا تلقائيًا بتحويل خيارات camelCase إلى snake_case.
يمكنك تجاوز أي من هذه الخيارات من خلال توفير تكوين valid js-beautify باستخدام الطرق التالية:
setBeautifyOptions(array $options)- تعيين خياراتjs-beautify.addBeautifyOption(string $option, mixed $value)- إضافة خيارjs-beautify.removeBeautifyOption(string $option)- إزالة خيارjs-beautify.
تصغير
ستقوم حزمةنا بتصغير مخرجات HTML عند تمكينها. يقوم التصغير بما يلي:
- إزالة تعليقات HTML (تحافظ على تعليقات Outlook الشرطية مثل
<!--[if mso]>) - تقليص عدة أحرف مسافة بيضاء إلى فراغات مفردة
- إزالة المسافات الفارغة بين علامات HTML
يمكنك تمكين أو تعطيل التصغير عن طريق استدعاء طريقة minify(bool $minify).
لماذا التصغير القائم على PHP؟ لم تعد MJML 5 تستخدم حزمة
html-minifierالقديمة المعرضة للخطر. لا تزال هذه الحزمة تحتفظ بالتصغير في PHP للحفاظ على سلوك الناتج الذي تم تقديمه في الإصدار 2.x. إذا كنت بحاجة إلى خيارات تصغير htmlnano/cssnano الأصلية لـ MJML 5، افتح مشكلة مع شكل الخيار المطلوب.
مستوى التحقق
ستقوم حزمةنا بالتحقق من صحة MJML باستخدام مستوى التحقق soft بشكل افتراضي. يمكنك تغيير هذا باستخدام
طريقة validationLevel(ValidationLevel $validationLevel) . مستويات التحقق المتاحة هي:
strict- يتم التحقق من مستندك ولا يتم عرضه إذا كان يحتوي على أي خطأsoft- يتم التحقق من مستندك ويتم عرضه، حتى لو كان يحتوي على أخطاءskip- يتم عرض مستندك دون المرور عبر التحقق.
مسار الملف
سوف تستخدم حزمةنا الدليل . بشكل افتراضي. يمكنك تغيير ذلك عن طريق استدعاء
طريقة filePath(string $path).
تتعامل MJML 5 مع filePath كأساس رمل الإدراج. إذا كانت الإدراجات ممكّنة، يتم رفض المسارات
الخارجية لـ filePath ما لم تكن مسموحة صراحةً بـ includePath(string|array|null $path).
Juice
لا نقدم أي خيارات 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 وغيرها من الموارد عبر الإنترنت هي أفضل الخيارات لديك.
الأخطاء، وأولوية الميزات
حقيقة إدارة مشروع مفتوح المصدر تعني أنه لا يمكننا معالجة كل خطأ أو طلب ميزة مبلّغ عنه على الفور. نحن نحدد أولويات المشكلات بالترتيب التالي:
1. الأخطاء التي تؤثر على منتجاتنا المدفوعة
الأخطاء التي تؤثر على منتجاتنا المدفوعة ستكون دائمًا أولويتنا القصوى. في بعض الحالات، قد نعمل فقط على معالجة الأخطاء التي تؤثر علينا بشكل مباشر.
2. طلبات السحب من المجتمع
إذا كنت قد حددت خطأ ولديك حل، يرجى تقديم طلب سحب. بعد معالجة المشكلات التي تؤثر على منتجاتنا، نمنح الأولوية الأعلى لهذه الإصلاحات المدفوعة من المجتمع. بمجرد مراجعة الحل والموافقة عليه، سنقوم بدمجه وسنُعطيك الفضل لمساهمتك.
3. الدعم المالي
بالنسبة للمشكلات خارج الفئات المذكورة، يمكنك اختيار تمويل حلها. كل مشكلة مفتوحة مرتبطة بنموذج طلب يمكنك من خلاله المساهمة ماليًا. نحن نحدد أولويات هذه المشكلات بناءً على المبلغ المالي المقدم.
مساهمات المجتمع
تزدهر المصادر المفتوحة عندما يكون المجتمع نشطًا. حتى لو لم تكن تصلح الأخطاء، فكر في المساهمة من خلال تحسينات الكود، أو تحديث الوثائق، أو إنشاء دروس، أو بمساعدة الآخرين في قنوات المجتمع. نحن نشجع بشكل كبير الجميع، كمجتمع، على تقديم الدعم للعمل المفتوح المصدر.
لإعادة التأكيد، ستحظى DefectiveCode بأولوية الأخطاء استنادًا إلى كيفية تأثيرها على منتجاتنا المدفوعة، وطلبات سحب المجتمع، والدعم المالي الذي تم تلقيه للمشكلات.
الترخيص - MIT License
حقوق الطبع والنشر © Defective Code, LLC. جميع الحقوق محفوظة
يتم منح الإذن بموجب هذا، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة (الـ"برنامج")، للتعامل في البرنامج دون قيود، بما في ذلك بدون حصر الحقوق في الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والتراخيص الفرعية و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم تقديم البرنامج لهم بذلك، بشرط الالتزام بالشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك ولكن لا تقتصر على ضمانات القابلية للتسويق، والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال، لا يتحمل المؤلفون أو أصحاب حقوق الطبع المسؤولية عن أي مطالبة أو أضرار أو مسؤوليات أخرى، سواء كانت في إطار عقد أو ضرر أو خلاف ذلك، ناشئة عن أو نتيجة عن أو تتعلق بالبرنامج أو الاستخدام أو التعاملات الأخرى في البرنامج.