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 তৈরি করে যা সেরা অনুশীলনগুলির সাথে মেলে। যদি আপনি আউটলুকের সাথে কাজ করার ক্ষেত্রে হতাশার সম্মুখীন হয়ে থাকেন, তবে এই প্যাকেজটি আপনার জন্য তৈরি করা হয়েছে।

আমাদের MJML বাস্তবায়ন অফিসিয়াল MJML API এর জন্য একটি এম্বেল থাকে। এটি MJML কে PHP-এর মধ্যে সরাসরি 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>'
);

ইনস্টলেশন

  1. প্রথমে আপনার composer.json ফাইলে নিম্নলিখিতটি যোগ করুন যাতে আমাদের প্যাকেজটি ইনস্টল করার সময় আপনার অপারেটিং সিস্টেমের জন্য সঠিক বাইনারি টানতে পারে। install, update, অথবা dump-autoload চালানোর পর বাইনারিগুলি ডাউনলোড হবে।

    {
    "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]
    }

    MJML বাইনারি আমাদের CDN থেকে প্রাপ্ত হবে এবং Composer এর ইনস্টলেশন বা আপডেট চলাকালে এই প্যাকেজের "bin" ফোল্ডারে সংরক্ষণ করা হবে। নিশ্চিত করুন যে আপনার স্থানীয় এবং উৎপাদন পরিবেশের জন্য প্রয়োজনীয় বাইনারিগুলি লোড হয়েছে।

    ডিফল্ট হিসাবে, 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
  2. পরের পদক্ষেপ, PHP প্যাকেজটি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:

    composer require defectivecode/mjml
  3. এতটুকুই! Laravel ব্যবহার করলে, আমাদের প্যাকেজটি Laravel এর প্যাকেজ আবিষ্কারের মাধ্যমে স্বয়ংক্রিয়ভাবে ইনস্টল হবে।

ব্যবহার (Laravel ছাড়া)

আপনি যদি Laravel ব্যবহার করেন তবে নিচে Laravel সহ ব্যবহারের তথ্য দেখুন।

MJML রেন্ডারিং

MJML রেন্ডার করতে, সহজেই আপনার MJML স্ট্রিংটি render মেথডে পাস করুন:

use DefectiveCode\MJML\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\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\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 ট্যাগ উপেক্ষা করে। এটি MJML 5 এর নিরাপদ ডিফল্টের সাথে মেলে। আপনি ignoreIncludes(false) কল করে অন্তর্ভুক্তিগুলি সক্ষম করতে পারেন।

অন্তর্ভুক্তিগুলি সক্ষম করার সময়, filePath(string $path) কে মূল ডিরেক্টরি হিসাবে ব্যবহার করুন এবং includePath(string|array|null $path) ব্যবহার করে অতিরিক্ত অন্তর্ভুক্তি ডিরেক্টরি অনুমতি দিন।

বিউটিফাই

আমাদের প্যাকেজটি js-beautify ব্যবহার করে HTML কে সুন্দর করে তুলবে। MJML 5.2 ও অভ্যন্তরীণভাবে js-beautify ব্যবহার করে, তবে এই প্যাকেজটি মোড়ক স্তরের সুন্দরীকরণের সাথে থাকে যাতে কাস্টম PHP beautifyOptions কার্যকরভাবে কাজ করে। ডিফল্ট বিকল্পগুলি হল:

যদিও js-beautify বিকল্পগুলির জন্য snake_case ব্যবহার করে, আপনাকে আমাদের প্যাকেজ ব্যবহার করার সময় camelCase ব্যবহার করতে হবে। আমরা আমাদের প্যাকেজের অন্যান্য কনফিগারেশন বিকল্পগুলির সাথে সামঞ্জস্য রাখতে এই নির্বাচন করেছি। আমাদের প্যাকেজ স্বয়ংক্রিয়ভাবে camelCase বিকল্পগুলি snake_case এ রূপান্তর করবে।

আপনারা এই বিকল্পগুলির যেকোন একটি ত্রুটি সংশোধন করতে পারেন js-beautify কনফিগারেশন প্রদান করে নিম্নলিখিত মেথডগুলি ব্যবহার করে:

মিনিফাই

আমাদের প্যাকেজটি সক্ষম হলে HTML আউটপুট মিনিফাই করবে। মিনিফিকেশন নিম্নলিখিতগুলি সম্পাদন করে:

আপনি minify(bool $minify) মেথড কল করে মিনিফিকেশন সক্ষম বা অক্ষম করতে পারেন।

কেন PHP-ভিত্তিক মিনিফিকেশন? MJML 5 আর পুরানো দুর্বল html-minifier প্যাকেজ ব্যবহার করে না। এই প্যাকেজটি এখনও PHP তে মিনিফিকেশন রাখে যাতে সংস্করণ 2.x তে পরিচিত আউটপুট আচরণ বজায় থাকে। যদি আপনাকে MJML 5 এর স্বদেশীয় htmlnano/cssnano মিনিফিকেশন বিকল্পগুলি প্রয়োজন হয় তবে প্রয়োজনীয় অপশন শেপ সহ একটি সমস্যা খুলুন।

বৈধতা স্তর

আমাদের প্যাকেজটি ডিফল্টভাবে soft বৈধতা স্তরের মাধ্যমে MJML যাচাই করবে। আপনি validationLevel(ValidationLevel $validationLevel) মেথড ব্যবহার করে এটি পরিবর্তন করতে পারেন। নিম্নলিখিত বৈধতা স্তরগুলি উপলব্ধ:

ফাইল পাথ

আমাদের প্যাকেজটি ডিফল্টভাবে . ডিরেক্টরি ব্যবহার করবে। আপনি filePath(string $path) মেথড কল করে এটি পরিবর্তন করতে পারেন।

MJML 5 filePath কে অন্তর্ভুক্তি স্যান্ডবক্সের ভিত্তি হিসেবে বিবেচনা করে। যদি অন্তর্ভুক্তিগুলি সক্ষম হয়, filePath এর বাইরের পাথগুলি স্পষ্টভাবে includePath(string|array|null $path) দ্বারা অনুমোদিত না হওয়া পর্যন্ত অস্বীকার করা হয়।

জুস

আমরা ডিফল্টভাবে কোন জুস বিকল্প প্রদান করি না। আপনি নিম্নলিখিত মেথডগুলি ব্যবহার করে জুস বিকল্পগুলি যোগ করতে পারেন:

সমর্থন নির্দেশিকা

আমাদের ওপেন সোর্স প্যাকেজটি নির্বাচন করার জন্য ধন্যবাদ! দয়া করে এই সমর্থন নির্দেশিকাগুলি অন্বেষণ করতে একটি মুহূর্ত নিন। এগুলি আপনাকে আমাদের প্রকল্প থেকে সর্বাধিক উপকার পেতে সহায়তা করবে।

সম্প্রদায়ের দ্বারা পরিচালিত সমর্থন

আমাদের ওপেন-সোর্স প্রকল্পটি আমাদের অসাধারণ সম্প্রদায় দ্বারা চালিত। আপনার যদি প্রশ্ন থাকে অথবা সহায়তার প্রয়োজন হয়, StackOverflow এবং অন্যান্য অনলাইন সম্পদ আপনার জন্য সেরা।

ত্রুটি এবং বৈশিষ্ট্য অগ্রাধিকার

একটি ওপেন-সোর্স প্রকল্প পরিচালনার বাস্তবতা মানে আমরা প্রতিবেদন করা প্রতিটি ত্রুটি বা বৈশিষ্ট্য অনুরোধ অবিলম্বে সমাধান করতে পারি না। আমরা সমস্যা সমাধানে নিম্নলিখিত ক্রমে অগ্রাধিকার দিই:

১. আমাদের অর্থপ্রদান করা পণ্যগুলি প্রভাবিতকারী ত্রুটি

যে ত্রুটিগুলি আমাদের অর্থপ্রদান করা পণ্যে প্রভাব ফেলে সেগুলি সর্বদা আমাদের শীর্ষ অগ্রাধিকার। কিছু ক্ষেত্রে, আমরা শুধু সেই ত্রুটিগুলি সমাধান করতে পারি যা আমাদের সরাসরি প্রভাবিত করে।

২. সম্প্রদায়ের পুল রিকুইস্ট

যদি আপনি একটি ত্রুটি সনাক্ত করেছেন এবং তার সমাধান আছে, তাহলে দয়া করে একটি পুল রিকুইস্ট জমা দিন। আমাদের পণ্যগুলিকে প্রভাবিতকারী সমস্যাগুলোর পরে, আমরা এই সম্প্রদায়-চালিত সমাধানগুলিতে পরবর্তী সর্বাধিক অগ্রাধিকার দিই। একবার পর্যালোচনা করে অনুমোদিত হলে, আমরা আপনার সমাধানটি একত্রিত করবো এবং আপনার অবদানের জন্য কৃতিত্ব দেবো।

৩. আর্থিক সমর্থন

উল্লেখিত বিভাগগুলির বাইরের সমস্যার জন্য, আপনি তাদের সমাধানের জন্য অর্থায়ন করতে পারেন। প্রতিটি ওপেন ইস্যু একটি অর্ডার ফরমের সাথে সংযুক্ত, যেখানে আপনি আর্থিকভাবে অবদান রাখতে পারেন। আমরা প্রদত্ত অর্থায়ন পরিমাণ অনুযায়ী এই সমস্যাগুলিতে অগ্রাধিকার দিই।

সম্প্রদায়ের অবদান

ওপেন সোর্স তখনই পুষ্টি পায় যখন এর সম্প্রদায় সক্রিয় থাকে। আপনি যদি ত্রুটি সমাধান না-ও করেন, তবুও কোড উন্নয়ন, ডকুমেন্টেশন আপডেট, টিউটোরিয়াল, অথবা সম্প্রদায়ের চ্যানেলে অন্যদের সহায়তা করার মাধ্যমে অবদান রাখার কথা বিবেচনা করুন। আমরা সবাইকে, একটি সম্প্রদায় হিসেবে, ওপেন-সোর্স কাজ সমর্থনে সহায়তা করতে তীব্রভাবে উৎসাহিত করি।

আবার উল্লেখ করতে, DefectiveCode আমাদের অর্থপ্রদান করা পণ্যগুলিতে ত্রুটিগুলির প্রভাব, সম্প্রদায়ের পুল রিকুইস্ট এবং সমস্যার জন্য প্রাপ্ত আর্থিক সমর্থনের ভিত্তিতে ত্রুটিগুলিকে অগ্রাধিকার দেবে.

লাইসেন্স - MIT লাইসেন্স

কপিরাইট © Defective Code, LLC। সকল অধিকার সংরক্ষিত

এই সফ্টওয়্যার এবং সংশ্লিষ্ট ডকুমেন্টেশন ফাইল (যাকে "সফ্টওয়্যার" বলা হয়) এর একটি কপি প্রাপ্ত যেকোনো ব্যক্তিকে বিনা শর্তে, বিনামূল্যে, সফ্টওয়্যারটি ব্যবহার, কপি, পরিবর্তন, মিশ্রণ, প্রকাশ, বিতরণ, উপলাইসেন্স এবং/অথবা সফ্টওয়্যার-এর কপি বিক্রি করার অধিকার দেওয়া হয়, এবং যাদের কাছে সফ্টওয়্যারটি প্রদান করা হয় তাদের এটি করতে অনুমতি দেওয়া হয়, নিম্নলিখিত শর্তাবলীর অধীনে:

উপরে উল্লিখিত কপিরাইট নোটিস এবং এই অনুমতি নোটিস সমস্ত কপি বা সফ্টওয়্যার-এর গুরুত্বপূর্ণ অংশে অন্তর্ভুক্ত করা হবে।

সফ্টওয়্যারটি "যেমন আছে" প্রদান করা হয়, কোন প্রকারের গ্যারান্টি ছাড়া, স্পষ্ট বা অভ্যাসগত, যার মধ্যে আছে কিন্তু সীমিত নয় বাণিজ্যযোগ্যতা, নির্দিষ্ট উদ্দেশ্যের জন্য উপযুক্ততা এবং অধিকার লঙ্ঘনের গ্যারান্টি। কোনো পরিস্থিতিতেই লেখক বা কপিরাইট অধিকারীরা সফ্টওয়্যার বা সফ্টওয়্যার ব্যবহারের সাথে সংশ্লিষ্ট যেকোনো দাবি, ক্ষতি বা অন্যান্য দায়বদ্ধতার জন্য দায়ী থাকবে না, তা চুক্তির একটি পদক্ষেপ, অপ্রীতিকর বা অন্যথায় হোক।