English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
# تحذير الترجمة
تمت ترجمة هذا المستند تلقائيًا. إذا كانت هناك أخطاء في الترجمة، يرجى فتح
طلب سحب على
المشروع وإضافة الملف المترجم إلى docs/{ISO 639-1 Code}.md
.
MJML هي لغة ترميز مصممة خصيصًا لتبسيط عملية ترميز الرسائل الإلكترونية المتجاوبة. تضمن صياغتها الدلالية السهولة والبساطة، بينما تسرع مكتبتها الواسعة من المكونات القياسية التطوير وتقلل من تعقيد قاعدة كود البريد الإلكتروني الخاصة بك. يولد محرك MJML مفتوح المصدر HTML عالي الجودة ومتجاوب يلتزم بأفضل الممارسات. إذا كنت قد واجهت إحباطات أثناء العمل مع Outlook، فإن هذه الحزمة مصممة خصيصًا لك.
تعمل تنفيذية MJML الخاصة بنا كغلاف لواجهة برمجة التطبيقات الرسمية لـ MJML. إنها تمكن من تجميع 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 Post |
---|---|---|
الكل | الكل | DefectiveCode\MJML\PullBinary::all |
داروين (MacOS) | arm64 | DefectiveCode\MJML\PullBinary::darwin-arm64 |
داروين (MacOS) | x64 | DefectiveCode\MJML\PullBinary::darwin-x64 |
لينكس | arm64 | DefectiveCode\MJML\PullBinary::linux-arm64 |
لينكس | x64 | DefectiveCode\MJML\PullBinary::linux-x64 |
بعد ذلك، قم بتثبيت حزمة PHP عن طريق تشغيل أمر composer التالي:
composer require defectivecode/mjml
هذا كل شيء! إذا كنت تستخدم Laravel، فستقوم حزمتنا بالتثبيت تلقائيًا باستخدام اكتشاف حزم Laravel.
انظر الاستخدام مع 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 الخاصة بك إلى 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 الخاصة بك إلى طريقة 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)
- تعيين قائمة الخطوط. يجب أن تقدم مصفوفة من الخطوط بهذا التنسيق: ['font-name' => 'font-url']
.يتم الاحتفاظ بالتعليقات بشكل افتراضي. إذا كنت ترغب في إزالة التعليقات، يمكنك استخدام طريقة 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)
.
نحن لا نقدم أي خيارات العصير بشكل افتراضي. يمكنك إضافة خيارات العصير باستخدام الطرق التالية:
setJuiceOptions(array $options)
- تعيين خيارات العصير.addJuiceOption(string $option, mixed $value)
- إضافة خيار العصير.removeJuiceOption(string $option)
- إزالة خيار العصير.setJuicePreserveTags(array $tags)
- تعيين علامات الحفاظ على العصير.addJuicePreserveTag(string $tag, mixed $value)
- إضافة علامة الحفاظ على العصير.removeJuicePreserveTag(string $tag)
- إزالة علامة الحفاظ على العصير.شكرًا لاختيارك حزمة المصدر المفتوح الخاصة بنا! يرجى أخذ لحظة للاطلاع على هذه الإرشادات الخاصة بالدعم. ستساعدك في الحصول على أقصى استفادة من مشروعنا.
مشروعنا المفتوح المصدر مدعوم من مجتمعنا الرائع. إذا كانت لديك أسئلة أو تحتاج إلى مساعدة، فإن StackOverflow والموارد الأخرى عبر الإنترنت هي أفضل الخيارات.
واقع إدارة مشروع مفتوح المصدر يعني أننا لا نستطيع معالجة كل خطأ أو طلب ميزة يتم الإبلاغ عنه فورًا. نحن نحدد أولويات القضايا بالترتيب التالي:
الأخطاء التي تؤثر على منتجاتنا المدفوعة ستكون دائمًا أولويتنا القصوى. في بعض الحالات، قد نعالج فقط الأخطاء التي تؤثر علينا مباشرة.
إذا كنت قد حددت خطأ ولديك حل، يرجى تقديم طلب سحب. بعد القضايا التي تؤثر على منتجاتنا، نعطي الأولوية التالية لهذه الإصلاحات المدفوعة من المجتمع. بمجرد مراجعتها والموافقة عليها، سنقوم بدمج حلك وننسب الفضل لمساهمتك.
بالنسبة للقضايا خارج الفئات المذكورة، يمكنك اختيار تمويل حلها. كل قضية مفتوحة مرتبطة بنموذج طلب حيث يمكنك المساهمة ماليًا. نحن نحدد أولويات هذه القضايا بناءً على مبلغ التمويل المقدم.
يزدهر المصدر المفتوح عندما يكون مجتمعه نشطًا. حتى إذا لم تكن تقوم بإصلاح الأخطاء، فكر في المساهمة من خلال تحسينات الكود، تحديثات الوثائق، الدروس التعليمية، أو بمساعدة الآخرين في قنوات المجتمع. نحن نشجع الجميع بشدة، كمجتمع، على دعم العمل المفتوح المصدر.
للتأكيد، ستعطي DefectiveCode الأولوية للأخطاء بناءً على كيفية تأثيرها على منتجاتنا المدفوعة، وطلبات السحب من المجتمع، والدعم المالي المقدم للقضايا.
# الرخصة - رخصة MIT حقوق الطبع والنشر © Defective Code, LLC. جميع الحقوق محفوظة يتم بموجب هذا منح الإذن، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج والملفات التوثيقية المرتبطة به ("البرنامج")، للتعامل مع البرنامج دون قيود، بما في ذلك على سبيل المثال لا الحصر حقوق الاستخدام، النسخ، التعديل، الدمج، النشر، التوزيع، الترخيص الفرعي، و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين يتم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية: **يجب تضمين إشعار حقوق الطبع والنشر أعلاه وهذا الإذن في جميع النسخ أو الأجزاء الكبيرة من البرنامج.** يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق، الملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لن يكون المؤلفون أو أصحاب حقوق الطبع والنشر مسؤولين عن أي مطالبة، أضرار أو أي مسؤولية أخرى، سواء في عقد، ضرر أو غير ذلك، تنشأ عن، خارج أو فيما يتعلق بالبرنامج أو استخدامه أو التعاملات الأخرى في البرنامج.