English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- अपग्रेड करना
- परिचय
- स्थापना
- उपयोग (बिना Laravel)
- उपयोग (Laravel के साथ)
- कॉन्फ़िगरेशन
- समर्थन दिशानिर्देश
- लाइसेंस - MIT लाइसेंस
अपग्रेड करना
यदि आप पिछले संस्करण से अपग्रेड कर रहे हैं, तो कृपया अपग्रेड गाइड देखें जिसमें टूटने वाले परिवर्तन और माइग्रेशन के चरण शामिल हैं।
परिचय
MJML एक मार्कअप भाषा है जिसे विशेष रूप से उत्तरदायी ईमेल कोडिंग की प्रक्रिया को सरल बनाने के लिए डिज़ाइन किया गया है। इसका वर्णात्मक सिंटैक्स सुगमता और सरलता सुनिश्चित करता है, जबकि इसके व्यापक मानक घटकों की लाइब्रेरी विकास को तेज़ बनाती है और आपके ईमेल कोडबेस की जटिलता को कम करती है। MJML का ओपन-सोर्स इंजन उच्च गुणवत्ता वाला, उत्तरदायी HTML उत्पन्न करता है जो सर्वोत्तम प्रथाओं का पालन करता है। यदि आपने आउटलुक के साथ काम करते समय frustrations का अनुभव किया है, तो यह पैकेज आपके लिए बनाया गया है।
हमारा MJML कार्यान्वयन आधिकारिक MJML एपीआई के लिए एक रैपर के रूप में कार्य करता है। यह PHP के भीतर सीधे MJML को HTML में संकलित करने की सुखद सुविधा प्रदान करता है, NodeJS की आवश्यकता के बिना। यह पैकेज PHP अनुप्रयोगों के लिए आदर्श है जो बिना NodeJS और MJML CLI स्थापित किए 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>');
स्थापना
-
पहले, अपने
composer.jsonफ़ाइल में निम्नलिखित जोड़ें ताकि हमारे पैकेज को आपके ऑपरेटिंग सिस्टम के लिए सही बाइनरी को खींचने का निर्देश दिया जा सके जब हमारा पैकेज स्थापित किया जाए। बाइनरी तब डाउनलोड होंगी जब आपinstall,update, याdump-autoloadचलाएंगे।{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}MJML बाइनरी हमारे CDN से प्राप्त की जाएगी और कंपोज़र की स्थापना या अपडेट के दौरान इस पैकेज के "bin" फ़ोल्डर में सहेजी जाएगी। सुनिश्चित करें कि आपके लोकल और प्रोडक्शन वातावरण के लिए आवश्यक बाइनरी लोड की गई हैं।
डिफ़ॉल्ट रूप से,
allसभी बाइनरी को खींचेगा जिन्हें हम समर्थन करते हैं। हम इसे आपके आवश्यक ऑपरेटिंग और आर्किटेक्चर सिस्टम पर सीमित करने की सिफारिश करते हैं ताकि बैंडविड्थ और स्थापना के समय पर बचत हो सके। निम्नलिखित बाइनरी उपलब्ध हैं।ऑपरेटिंग सिस्टम आर्किटेक्चर कंपोज़र पोस्ट अपडेट कमांड सभी सभी 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 -
फिर, निम्नलिखित कंपोज़र कमांड चलाकर PHP पैकेज स्थापित करें:
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 स्ट्रिंग को MJML फेकड पर render में पास करें:
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 स्ट्रिंग को MJML फेकड पर isValid फ़ंक्शन में पास करें:
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"
यह आपके config फ़ोल्डर में एक mjml.php कॉन्फ़िगरेशन फ़ाइल बनाएगा। कॉन्फ़िगरेशन फ़ाइल में सूचीबद्ध सभी विकल्प MJML फेकड का उपयोग करने पर config ऑब्जेक्ट में पास किए जाते हैं।
कॉन्फ़िगरेशन
सभी कॉन्फ़िगरेशन विकल्पों को सीधे 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के बजाय एक हल्का 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)- फ़ॉन्ट्स की सूची सेट करें। आपको फ़ॉन्ट्स का एक ऐरे प्रदान करना चाहिए इस प्रारूप में:['font-name' => 'font-url']।
टिप्पणियाँ
कॉमेंट्स डिफ़ॉल्ट रूप से रखे जाते हैं। यदि आप टिप्पणियों को हटाना चाहते हैं, तो आप removeComments() विधि का उपयोग कर सकते हैं।
आप removeComments() को keepComments() विधि को कॉल करके भी पूर्ववत कर सकते हैं।
शामिल किए जाने की अनदेखी करें
डिफ़ॉल्ट रूप से, हमारा पैकेज किसी भी mj-include टैग को शामिल करेगा। आप ignoreIncludes(bool $ignore) विधि को कॉल करके इस व्यवहार को समायोजित कर सकते हैं।
सुंदर बनाना
हमारा पैकेज js-beautify का उपयोग करते हुए HTML को सुंदर बनाएगा, निम्नलिखित
डिफ़ॉल्ट विकल्पों के साथ:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
जबकि
js-beautifyविकल्प प्रदान करने के लिए snake_case का उपयोग करता है, आपको हमारे पैकेज का उपयोग करते समय camelCase का उपयोग करना चाहिए। हमने यह विकल्प इसलिए चुना है ताकि हमारे पैकेज को शेष कॉन्फ़िगरेशन विकल्पों के साथ सुसंगत रखा जा सके। हमारा पैकेज स्वचालित रूप से camelCase विकल्पों को snake_case में परिवर्तित करेगा।
आप निम्नलिखित विधियों का उपयोग करके इनमें से किसी भी विकल्प को अधिलेखित कर सकते हैं:
setBeautifyOptions(array $options)-js-beautifyविकल्प सेट करें।addBeautifyOption(string $option, mixed $value)- एकjs-beautifyविकल्प जोड़ें।removeBeautifyOption(string $option)- एकjs-beautifyविकल्प हटाएं।
माइनिफाई
हमारा पैकेज सक्षम होने पर HTML आउटपुट को माइनिफाई करेगा। माइनिफिकेशन निम्नलिखित कार्य करता है:
- HTML टिप्पणियों को हटाना (आउटलुक कंडीशनल टिप्पणियों जैसे
<!--[if mso]>को बनाए रखता है) - कई व्हाइटस्पेस वर्णों को एकल स्थानों में समेकित करना
- HTML टैग के बीच व्हाइटस्पेस को हटाना
आप minify(bool $minify) विधि को कॉल करके माइनिफिकेशन को सक्षम या अक्षम कर सकते हैं।
PHP-आधारित माइनिफिकेशन क्यों? आधिकारिक MJML पैकेज माइनिफिकेशन के लिए
html-minifierका उपयोग करता है, जिसमें एक ज्ञात ReDoS भेद्यता (CVE-2022-37620) होती है, जिससे कोई फिक्स उपलब्ध नहीं है क्योंकि पैकेज रखरखाव में नहीं है। संवेदनशील निर्भरताओं को जोड़ने से बचने के लिए, हमने हल्के, सुरक्षित कार्यान्वयन का उपयोग करते हुए PHP में माइनिफिकेशन को स्थानांतरित कर दिया।
Validation Level
हमारा पैकेज डिफ़ॉल्ट रूप से soft मान्यता स्तर का उपयोग करके MJML को मान्य करेगा। आप 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 और अन्य ऑनलाइन संसाधन आपके लिए सबसे अच्छे विकल्प हैं।
बग और विशेषता प्राथमिकता
एक ओपन-सोर्स प्रोजेक्ट का प्रबंधन करने की वास्तविकता का मतलब है कि हम तुरंत हर रिपोर्ट की गई बग या विशेषता अनुरोध को संबोधित नहीं कर सकते। हम मुद्दों को निम्नलिखित क्रम में प्राथमिकता देते हैं:
1. हमारे भुगतान किए गए उत्पादों को प्रभावित करने वाले बग
जो बग हमारे भुगतान किए गए उत्पादों को प्रभावित करते हैं, वे हमेशा हमारी सर्वोच्च प्राथमिकता होंगे। कुछ मामलों में, हम केवल उन बग को संबोधित कर सकते हैं जो हमें सीधे प्रभावित करते हैं।
2. सामुदायिक पुल अनुरोध
यदि आपने एक बग पहचाना है और एक समाधान है, तो कृपया एक पुल अनुरोध जमा करें। हमारे उत्पादों को प्रभावित करने वाले मुद्दों के बाद, हम इन सामुदायिक संचालित सुधारों को अगली उच्चतम प्राथमिकता देते हैं। एक बार समीक्षित और अनुमोदित होने के बाद, हम आपके समाधान को मिलाएंगे और आपके योगदान को मान्यता देंगे।
3. वित्तीय समर्थन
उक्त श्रेणियों के बाहर के मुद्दों के लिए, आप उनके समाधान के लिए धन देने का विकल्प चुन सकते हैं। प्रत्येक खुले मुद्दे को एक आदेश फॉर्म से जोड़ा गया है जहाँ आप वित्तीय रूप से योगदान कर सकते हैं। हम प्रदान किए गए धनराशि के आधार पर इन मुद्दों को प्राथमिकता देते हैं।
सामुदायिक योगदान
ओपन सोर्स तब फलता-फूलता है जब इसका समुदाय सक्रिय होता है। भले ही आप बग ठीक नहीं कर रहे हों, कोड सुधार, दस्तावेज़ अपडेट, ट्यूटोरियल के माध्यम से या सामुदायिक चैनलों में अन्य लोगों की सहायता करके योगदान करने पर विचार करें। हम हर किसी को, एक समुदाय के रूप में, ओपन-सोर्स कार्य का समर्थन करने के लिए बहुत प्रोत्साहित करते हैं।
दोहराने के लिए, DefectiveCode हमारे भुगतान किए गए उत्पादों पर प्रभाव, सामुदायिक पुल अनुरोध और मुद्दों के लिए प्राप्त वित्तीय समर्थन के आधार पर बग को प्राथमिकता देगा.
लाइसेंस - MIT लाइसेंस
कॉपीराइट © डेफेक्टिव कोड, एलएलसी। सर्वाधिकार सुरक्षित
इस सॉफ़्टवेयर और संबंधित दस्तावेज़ फ़ाइलों (जिसे "सॉफ़्टवेयर" कहा जाता है) की एक प्रति प्राप्त करने वाले किसी भी व्यक्ति को बिना किसी शुल्क के समझौता किया जाता है, सॉफ़्टवेयर में बिना किसी रोक-टोक के, जिसमें बिना सीमा के निम्नलिखित अधिकार शामिल हैं: उपयोग करने, कॉपी करने, संशोधित करने, विलय करने, प्रकाशित करने, वितरित करने, उप-लाइसेंस देने और/या सॉफ़्टवेयर की प्रतियों को बेचने के लिए, और उन व्यक्तियों को अनुमति देने के लिए जिन्हें सॉफ़्टवेयर प्रदान किया गया है कि वे ऐसा कर सकें, निम्नलिखित शर्तों के अधीन:
उपरोक्त कॉपीराइट सूचना और यह अनुमति सूचना सभी प्रतियों या सॉफ़्टवेयर के महत्वपूर्ण भागों में शामिल की जानी चाहिए।
सॉफ़्टवेयर "जैसा है" प्रदान किया गया है, बिना किसी प्रकार की वारंटी के, स्पष्ट या अंतर्निहित, जिसमें वाणिज्यिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और अवमानना की वारंटी शामिल नहीं हैं, लेकिन इनमें सीमित नहीं हैं। किसी भी स्थिति में लेखकों या कॉपीराइट धारकों को किसी भी दावे, क्षति या अन्य दायित्व के लिए उत्तरदायी नहीं ठहराया जाएगा, चाहे वह अनुबंध, टॉर्ट या अन्यथा में हो, जो सॉफ़्टवेयर या सॉफ़्टवेयर के उपयोग या अन्य लेन-देन से उत्पन्न हो।