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 | 中文

Cảnh báo Dịch

Tài liệu này đã được dịch tự động. Nếu có lỗi dịch, vui lòng mở một pull request trên dự án và thêm tệp đã dịch vào docs/{Mã ISO 639-1}.md.

Giới thiệu

MJML là một ngôn ngữ đánh dấu được thiết kế đặc biệt để đơn giản hóa quá trình viết mã email phản hồi. Cú pháp ngữ nghĩa của nó đảm bảo sự dễ dàng và đơn giản, trong khi thư viện các thành phần tiêu chuẩn phong phú giúp tăng tốc quá trình phát triển và giảm độ phức tạp của mã email của bạn. Động cơ mã nguồn mở của MJML tạo ra HTML phản hồi chất lượng cao tuân thủ các quy ước tốt nhất. Nếu bạn đã trải qua những khó khăn khi làm việc với Outlook, gói này được tùy chỉnh dành riêng cho bạn.

Việc triển khai MJML của chúng tôi phục vụ như một bao bọc cho MJML API chính thức. Nó cho phép biên dịch MJML thành HTML một cách thuận tiện trực tiếp trong PHP, mà không cần NodeJS. Gói này lý tưởng cho các ứng dụng PHP muốn tích hợp MJML mà không cần cài đặt NodeJS và MJML CLI.

Ví dụ

// Không sử dụng 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 được tối giản
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Sử dụng Laravel
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Sử dụng Laravel và HTML được tối giản
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Cài đặt

  1. Đầu tiên, thêm đoạn mã sau vào tệp composer.json của bạn để chỉ định cho gói của chúng tôi tải xuống các tệp nhị phân đúng cho hệ điều hành của bạn khi gói của chúng tôi được cài đặt. Các tệp nhị phân sẽ được tải xuống sau khi bạn chạy install, update hoặc dump-autoload.

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

    Tệp nhị phân MJML sẽ được lấy từ CDN của chúng tôi và lưu trong thư mục "bin" của gói này trong quá trình cài đặt hoặc cập nhật của composer. Đảm bảo rằng bạn đã tải các tệp nhị phân cần thiết cho cả môi trường cục bộ và môi trường sản xuất.

    Mặc định, all sẽ tải xuống tất cả các tệp nhị phân mà chúng tôi hỗ trợ. Chúng tôi khuyến nghị hạn chế phạm vi này chỉ đến các hệ điều hành và kiến trúc bạn cần để tiết kiệm băng thông và thời gian cài đặt. Dưới đây là các tệp nhị phân có sẵn.

    Hệ điều hành Kiến trúc Lệnh Composer Post Update
    Tất cả Tất cả DefectiveCode\MJML\PullBinary::all
    Darwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64
    Linux arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    Linux x64 DefectiveCode\MJML\PullBinary::linux-x64
  2. Tiếp theo, cài đặt gói PHP bằng cách chạy lệnh composer sau:

    composer require defectivecode/mjml
  3. Đó là tất cả! Nếu bạn đang sử dụng Laravel, gói của chúng tôi sẽ tự động cài đặt bằng cách sử dụng khám phá gói của Laravel.

Sử dụng (Không có Laravel)

Xem cách sử dụng với Laravel bên dưới nếu bạn đang sử dụng Laravel.

Hiển thị MJML

Để hiển thị MJML, chỉ cần chuyển chuỗi MJML của bạn vào phương thức 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>'
);

Xác thực MJML

Để xác thực MJML, chỉ cần chuyển chuỗi MJML của bạn vào phương thức 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>'
);

Sử dụng (Với Laravel)

Hiển thị MJML

Để hiển thị MJML, chỉ cần chuyển chuỗi MJML của bạn vào phương thức render trên facade 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>'
);

Xác thực MJML

Để xác thực MJML, chỉ cần chuyển chuỗi MJML của bạn vào phương thức isValid trên facade 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>'
);

Cấu hình

Bạn có thể xuất bản tệp cấu hình bằng lệnh sau:

php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"

Điều này sẽ tạo ra một tệp cấu hình mjml.php trong thư mục config của bạn. Tất cả các tùy chọn được liệt kê trong tệp cấu hình được chuyển vào đối tượng config khi bạn sử dụng facade MJML.

Cấu hình

Tất cả các tùy chọn cấu hình có thể được đặt bằng cách gọi trực tiếp các phương thức sau trên đối tượng 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>'
);

Gói của chúng tôi tuân theo cùng cấu hình như gói MJML chính thức ngoại trừ các điểm sau:

Phông chữ

Gói của chúng tôi mặc định sử dụng các phông chữ sau:

Bạn có thể thay đổi các phông chữ bằng cách sử dụng các phương thức sau:

Bình luận

Mặc định, các bình luận được giữ lại. Nếu bạn muốn xóa bình luận, bạn có thể sử dụng phương thức removeComments().

Bạn cũng có thể hoàn tác removeComments() bằng cách gọi phương thức keepComments().

Bỏ qua các phần bao gồm

Mặc định, gói của chúng tôi sẽ bao gồm bất kỳ thẻ mj-include nào. Bạn có thể điều chỉnh hành vi này bằng cách gọi phương thức ignoreIncludes(bool $ignore).

Đẹp

Gói của chúng tôi sẽ làm đẹp HTML bằng cách sử dụng js-beautify với các tùy chọn mặc định sau:

Trong khi js-beautify sử dụng snake_case để cung cấp các tùy chọn, bạn nên sử dụng camelCase khi sử dụng gói của chúng tôi. Chúng tôi đã thực hiện lựa chọn này để giữ cho gói của chúng tôi nhất quán với các tùy chọn cấu hình khác. Gói của chúng tôi sẽ tự động chuyển đổi các tùy chọn camelCase thành snake_case.

Bạn có thể ghi đè bất kỳ tùy chọn nào bằng cách cung cấp một cấu hình js-beautify hợp lệ bằng cách sử dụng các phương thức sau:

Thu nhỏ

Gói của chúng tôi sẽ thu nhỏ HTML bằng cách sử dụng html-minifier-terser với các tùy chọn mặc định sau:

Bạn có thể ghi đè bất kỳ tùy chọn nào bằng cách cung cấp một cấu hình hợp lệ html-minifier-terser bằng cách sử dụng các phương thức sau:

Cấp độ xác thực

Mặc định, gói của chúng tôi sẽ xác thực MJML bằng cấp độ xác thực soft. Bạn có thể thay đổi điều này bằng cách sử dụng phương thức validationLevel(ValidationLevel $validationLevel). Có các cấp độ xác thực sau:

Đường dẫn tệp

Mặc định, gói của chúng tôi sẽ sử dụng thư mục .. Bạn có thể thay đổi điều này bằng cách gọi phương thức filePath(string $path).

Juice

Chúng tôi không cung cấp bất kỳ tùy chọn juice nào theo mặc định. Bạn có thể thêm tùy chọn juice bằng cách sử dụng các phương thức sau:

Hướng dẫn hỗ trợ

Cảm ơn bạn đã chọn gói mã nguồn mở của chúng tôi! Vui lòng dành chút thời gian để xem qua hướng dẫn hỗ trợ này. Chúng sẽ giúp bạn tận dụng tối đa dự án của chúng tôi.

Hỗ trợ từ cộng đồng

Dự án mã nguồn mở của chúng tôi được thúc đẩy bởi cộng đồng tuyệt vời của chúng tôi. Nếu bạn có câu hỏi hoặc cần sự trợ giúp, StackOverflow và các nguồn tài nguyên trực tuyến khác là lựa chọn tốt nhất của bạn.

Sửa lỗi và Ưu tiên tính năng

Thực tế của việc quản lý một dự án mã nguồn mở có nghĩa là chúng tôi không thể giải quyết ngay lập tức mọi lỗi được báo cáo hoặc yêu cầu tính năng. Chúng tôi ưu tiên các vấn đề theo thứ tự sau:

1. Lỗi ảnh hưởng đến Sản phẩm Trả phí của chúng tôi

Lỗi ảnh hưởng đến các sản phẩm trả phí của chúng tôi luôn là ưu tiên hàng đầu của chúng tôi. Trong một số trường hợp, chúng tôi chỉ giải quyết các lỗi ảnh hưởng trực tiếp đến chúng tôi.

2. Yêu cầu Pull Requests từ cộng đồng

Nếu bạn đã xác định một lỗi và có một giải pháp, vui lòng gửi một yêu cầu Pull. Sau các vấn đề ảnh hưởng đến sản phẩm của chúng tôi, chúng tôi ưu tiên cao nhất cho các sửa lỗi do cộng đồng đóng góp. Sau khi được xem xét và chấp nhận, chúng tôi sẽ hợp nhất giải pháp của bạn và ghi công đóng góp của bạn.

3. Hỗ trợ tài chính

Đối với các vấn đề nằm ngoài các danh mục đã đề cập, bạn có thể chọn tài trợ cho việc giải quyết chúng. Mỗi vấn đề mở được liên kết với một biểu mẫu đặt hàng, nơi bạn có thể đóng góp tài chính. Chúng tôi ưu tiên các vấn đề này dựa trên số tiền tài trợ được cung cấp.

Đóng góp từ cộng đồng

Mã nguồn mở phát triển khi cộng đồng của nó hoạt động tích cực. Ngay cả khi bạn không sửa lỗi, hãy xem xét đóng góp thông qua cải tiến mã nguồn, cập nhật tài liệu, hướng dẫn hoặc trợ giúp người khác trong các kênh cộng đồng. Chúng tôi rất khuyến khích mọi người, như một cộng đồng, hỗ trợ công việc mã nguồn mở.

Để nhấn mạnh, DefectiveCode sẽ ưu tiên các lỗi dựa trên cách chúng ảnh hưởng đến sản phẩm trả phí của chúng tôi, yêu cầu Pull Requests từ cộng đồng và hỗ trợ tài chính nhận được cho các vấn đề.

Giấy phép - Giấy phép MIT

Bản quyền © Defective Code, LLC. Đã đăng ký bản quyền

Được cấp phép miễn phí, cho bất kỳ cá nhân nào nhận được bản sao của phần mềm này và các tệp tài liệu liên quan (gọi là "Phần mềm"), để sử dụng Phần mềm mà không có bất kỳ hạn chế nào, bao gồm mà không giới hạn các quyền để sử dụng, sao chép, sửa đổi, hợp nhất, xuất bản, phân phối, cấp phép lại và/hoặc bán các bản sao của Phần mềm, và cho phép cá nhân nhận được Phần mềm làm như vậy, với điều kiện sau đây:

Thông báo bản quyền trên và thông báo phép này phải được bao gồm trong tất cả các bản sao hoặc phần quan trọng của Phần mềm.

PHẦN MỀM ĐƯỢC CUNG CẤP "NHƯ LÀ", KHÔNG BẢO ĐẢM BẤT KỲ LOẠI NÀO, RÕ RÀNG HOẶC NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN ĐẾN CÁC BẢO ĐẢM VỀ CHẤT LƯỢNG HÀNG HÓA, PHÙ HỢP VỚI MỤC ĐÍCH CỤ THỂ VÀ KHÔNG VI PHẠM. TRONG BẤT KỲ TRƯỜNG HỢP NÀO, TÁC GIẢ HOẶC CHỦ SỞ HỮU BẢN QUYỀN ĐỀU KHÔNG CHỊU TRÁCH NHIỆM ĐỐI VỚI BẤT KỲ YÊU CẦU, THIỆT HẠI HOẶC TRÁCH NHIỆM PHÁP LÝ KHÁC, XUẤT PHÁT TỪ, LIÊN QUAN ĐẾN HOẶC LIÊN QUAN ĐẾN PHẦN MỀM HOẶC VIỆC SỬ DỤNG HOẶC CÁC VẤN ĐỀ KHÁC.

MJML - Defective Code