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 অন্তর্ভুক্ত করতে চায়।

উদাহরণ

// লারাভেলের বাইরে
(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>'
);
 
// লারাভেলের সাথে
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// লারাভেল এবং সংকুচিত 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" ফোল্ডারে সেভ হবে কম্পোজারের ইনস্টলেশন বা আপডেটের সময়। আপনার স্থানীয় এবং উৎপাদন পরিবেশের জন্য প্রয়োজনীয় বাইনারিগুলি লোড করা হয়েছে তা নিশ্চিত করুন।

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

    অপারেটিং সিস্টেম স্থাপত্য কম্পোজার পোস্ট আপডেট কমান্ড
    সব সব DefectiveCode\MJML\PullBinary::all
    ডারউইন (ম্যাকওএস) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    ডারউইন (ম্যাকওএস) 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. এটা হলো! যদি আপনি লারাভেল ব্যবহার করেন, তবে আমাদের প্যাকেজটি স্বয়ংক্রিয়ভাবে লারাভেলের প্যাকেজ আবিষ্কার ব্যবহার করে ইনস্টল হবে।

ব্যবহার (লারাভেলের বাইরে)

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

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>'
);

ব্যবহার (লারাভেলের সাথে)

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"

এটি আপনার 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 প্যাকেজের সাথে একই কনফিগারেশন অনুসরণ করে নিম্নলিখিত ব্যতীত:

ফন্ট

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

আপনি নিম্নলিখিত মেথডগুলির মাধ্যমে ফন্টগুলি পরিবর্তন করতে পারেন:

মন্তব্য

ডিফল্টরূপে মন্তব্যগুলি রাখা হয়। আপনি যদি মন্তব্যগুলি মুছে ফেলতে চান, তবে আপনি removeComments() মেথড ব্যবহার করতে পারেন।

আপনি removeComments() কে keepComments() মেথড কল করে ফিরিয়ে আনতে পারেন।

অন্তর্ভুক্তি উপেক্ষা করা

ডিফল্টরূপে, আমাদের প্যাকেজটি কোনও mj-include ট্যাগ অন্তর্ভুক্ত করবে। আপনি ignoreIncludes(bool $ignore) মেথডকে কল করে এই আচরণটি সামঞ্জস্য করতে পারেন।

সৌন্দর্য বৃদ্ধি

আমাদের প্যাকেজটি ডিফল্ট বিকল্পগুলির সাথে js-beautify ব্যবহার করে HTML সৌন্দর্য বৃদ্ধি করবে:

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

আপনি নিম্নলিখিত মেথডগুলি ব্যবহার করে এই বিকল্পগুলির মধ্যে যেকোনো একটি উপাধি প্রতিস্থাপন করতে পারেন:

মিনিফাই

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

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

কেন PHP-ভিত্তিক মিনিফিকেশন? অফিসিয়াল MJML প্যাকেজটি মিনিফিকেশনের জন্য html-minifier ব্যবহার করে, যা একটি পরিচিত ReDoS দুর্বলতা (CVE-2022-37620) রয়েছে যার কোন সমাধান উপলব্ধ নেই কারণ প্যাকেজটি রক্ষণাবেক্ষিত হচ্ছে না। দুর্বল নির্ভরশীলতাগুলি সংযুক্ত করার এড়াতে, আমরা একটি লাইটওয়েট, নিরাপদ বাস্তবায়ন ব্যবহার করে মিনিফিকেশন PHP-তে স্থানান্তরিত করেছি।

যাচাইকরণের স্তর

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

ফাইল পাথ

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

জুস

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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