English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Nâng cấp
- Giới thiệu
- Cài đặt
- Cách sử dụng (Không có Laravel)
- Cách sử dụng (Với Laravel)
- Cấu hình
- Hướng Dẫn Hỗ Trợ
- Giấy phép - Giấy phép MIT
Nâng cấp
Nếu bạn đang nâng cấp từ phiên bản trước, vui lòng xem Hướng dẫn Nâng cấp để biết những thay đổi lớn và các bước di chuyển.
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 quy trình lập trình 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 phong phú các thành phần tiêu chuẩn của nó 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. Engine mã nguồn mở của MJML tạo ra HTML chất lượng cao, phản hồi theo các tiêu chuẩn tốt nhất. Nếu bạn đã từng trải qua những thất vọng khi làm việc với Outlook, gói này được tạo ra dành cho bạn.
Triển khai MJML của chúng tôi hoạt động như một lớp bao quanh cho API MJML chính thức. Nó cho phép biên dịch MJML thành HTML một cách thuận tiện ngay trong PHP, 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 phải lo lắng về việc cài đặt NodeJS và MJML CLI.
Ví dụ
// Không có 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 né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>'); // Với LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Với Laravel và HTML đã được nénMJML::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
-
Đầu tiên thêm những dòng sau vào tệp
composer.jsoncủa bạn để hướng dẫn gói của chúng tôi tải các nhị phân chính xác 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 nhị phân sẽ được tải xuống sau khi bạn chạyinstall,update, hoặcdump-autoload.{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}Nhị phân MJML sẽ được lấy từ CDN của chúng tôi và lưu vào thư mục "bin" của gói này trong quá trình cài đặt hoặc cập nhật composer. Hãy đảm bảo rằng bạn đã tải các nhị phân cần thiết cho cả môi trường cục bộ và sản xuất.
Theo mặc định,
allsẽ tải tất cả các nhị phân mà chúng tôi hỗ trợ. Chúng tôi khuyến nghị chỉ định nó cho các hệ điều hành và kiến trúc mà 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 nhị phân có sẵn.Hệ điều hành Kiến trúc Lệnh sau cập nhật Composer Tất cả Tất cả 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 -
Tiếp theo, cài đặt gói PHP bằng cách chạy lệnh composer sau:
composer require defectivecode/mjml -
Chỉ vậy thôi! Nếu sử dụng Laravel, gói của chúng tôi sẽ tự động cài đặt thông qua tính năng phát hiện gói của Laravel.
Cách 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 truyề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>');
Kiểm tra tính hợp lệ của MJML
Để kiểm tra tính hợp lệ của MJML, chỉ cần truyề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>');
Cách sử dụng (Với Laravel)
Hiện thị MJML
Để hiện thị MJML, chỉ cần truyề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>');
Kiểm tra tính hợp lệ của MJML
Để kiểm tra tính hợp lệ của MJML, chỉ cần truyề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ể phát hành tệp cấu hình bằng cách sử dụ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. Tất cả các tùy chọn được liệt kê trong tệp cấu hình
được truyề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 thiết lập bằng cách gọi các phương thức sau trực tiếp 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ấu hình giống như gói MJML chính thức ngoại trừ các điểm sau:
preprocessors- Tùy chọn này không có sẵn. Vui lòng mở một yêu cầu kéo nếu bạn muốn thêm tùy chọn này.minifyOptions- Chúng tôi giữ minification trong PHP để tương thích với đầu ra. Trình nén sẽ loại bỏ các nhận xét (trừ các điều kiện Outlook), thu gọn khoảng trắng và loại bỏ khoảng trắng giữa các thẻ.sanitizeStyles,templateSyntax, vàallowMixedSyntax- Những tùy chọn MJML 5 này áp dụng cho con đường nén htmlnano/cssnano gốc của MJML. Chúng không được sử dụng bởi trình nén PHP của gói này.
Phông chữ
Gói của chúng tôi sử dụng các phông chữ sau theo mặc định:
- 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
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:
addFont(string $font, string $url)- Thêm một phông chữ vào danh sách các phông chữ.removeFont(string $font)- Xóa một phông chữ khỏi danh sách các phông chữ.setFonts(array $fonts)- Đặt danh sách các phông chữ. Bạn nên cung cấp một mảng các phông chữ theo định dạng:['font-name' => 'font-url'].
Nhận xét
Nhận xét được giữ lại theo mặc định. Nếu bạn muốn loại bỏ nhận xét, bạn có thể sử dụng phương thức removeComments().
Bạn cũng có thể khôi phục removeComments() bằng cách gọi phương thức keepComments().
Bỏ qua các tệp bao gồm
Theo mặc định, gói của chúng tôi sẽ bỏ qua các thẻ mj-include. Điều này tương ứng với mặc định an toàn hơn của MJML 5. Bạn có thể kích hoạt các tệp bao gồm bằng cách gọi ignoreIncludes(false).
Khi kích hoạt các tệp bao gồm, hãy sử dụng filePath(string $path) làm thư mục gốc và includePath(string|array|null $path) để cho phép thêm các thư mục bao gồm.
Làm đẹp
Gói của chúng tôi sẽ làm đẹp HTML bằng js-beautify. MJML 5.2 cũng sử dụng
js-beautify nội bộ, nhưng gói này giữ lại quá trình làm đẹp ở cấp độ lớp bao và vì vậy các beautifyOptions tùy chỉnh PHP tiếp tục
hoạt động. Các tùy chọn mặc định là:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
Trong khi
js-beautifysử 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 đã chọ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 trong số này bằng cách cung cấp một cấu hình hợp lệ của js-beautify bằng cách sử dụng các phương thức sau:
setBeautifyOptions(array $options)- Đặt các tùy chọnjs-beautify.addBeautifyOption(string $option, mixed $value)- Thêm một tùy chọnjs-beautify.removeBeautifyOption(string $option)- Xóa một tùy chọnjs-beautify.
Nén
Gói của chúng tôi sẽ nén đầu ra HTML khi được kích hoạt. Quy trình nén thực hiện các bước sau:
- Loại bỏ các nhận xét HTML (bảo tồn các nhận xét điều kiện Outlook như
<!--[if mso]>) - Thu gọn nhiều ký tự khoảng trắng thành một khoảng trắng đơn
- Loại bỏ khoảng trắng giữa các thẻ HTML
Bạn có thể kích hoạt hoặc vô hiệu hóa quá trình nén bằng cách gọi phương thức minify(bool $minify).
Tại sao nén dựa trên PHP? MJML 5 không còn sử dụng gói
html-minifiercũ dễ bị tổn thương. Gói này vẫn giữ nén trong PHP để bảo tồn hành vi đầu ra được giới thiệu trong phiên bản 2.x. Nếu bạn cần các tùy chọn nén gốc htmlnano/cssnano của MJML 5, hãy mở một vấn đề với hình dạng tùy chọn cần thiết.
Cấp độ xác thực
Gói của chúng tôi sẽ xác thực MJML bằng cấp độ xác thực soft theo mặc định. 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ấp độ xác thực sau đây có sẵn:
strict- Tài liệu của bạn đang trải qua xác thực và sẽ không được hiển thị nếu nó có bất kỳ lỗi nàosoft- Tài liệu của bạn đang trải qua xác thực và sẽ được hiển thị, ngay cả khi nó có lỗiskip- Tài liệu của bạn được hiển thị mà không cần trải qua xác thực.
Đường dẫn tệp
Gói của chúng tôi sẽ sử dụng thư mục . theo mặc định. Bạn có thể thay đổi điều này bằng cách gọi phương thức filePath(string $path).
MJML 5 xem filePath như là cơ sở của sandbox bao gồm. Nếu các tệp bao gồm được kích hoạt, các đường dẫn bên ngoài filePath sẽ bị từ chối trừ khi
chúng được cho phép một cách rõ ràng với includePath(string|array|null $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 các tùy chọn juice bằng cách sử dụng các phương thức sau:
setJuiceOptions(array $options)- Đặt các tùy chọn juice.addJuiceOption(string $option, mixed $value)- Thêm một tùy chọn juice.removeJuiceOption(string $option)- Xóa một tùy chọn juice.setJuicePreserveTags(array $tags)- Đặt các thẻ bảo tồn juice.addJuicePreserveTag(string $tag, mixed $value)- Thêm một thẻ bảo tồn juice.removeJuicePreserveTag(string $tag)- Xóa một thẻ bảo tồn juice.
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 các 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ợ Được Điều Hành Bởi 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 trợ giúp, StackOverflow và các tài nguyên trực tuyến khác là lựa chọn tốt nhất của bạn.
Lỗi và Ưu Tiên Tính Năng
Thực tế khi 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 hoặc yêu cầu tính năng được báo cáo. 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
Các lỗi ảnh hưởng đến sản phẩm trả phí của chúng tôi luôn là ưu tiên hàng đầu. Trong một số trường hợp, chúng tôi có thể 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 Kéo Của Cộng Đồng
Nếu bạn đã xác định một lỗi và có giải pháp, vui lòng gửi yêu cầu kéo. Sau các vấn đề ảnh hưởng đến sản phẩm của chúng tôi, chúng tôi dành ưu tiên cao nhất tiếp theo cho các sửa lỗi do cộng đồng thực hiện. Sau khi được xem xét và phê duyệt, chúng tôi sẽ hợp nhất giải pháp của bạn và ghi nhận đóng góp của bạn.
3. Hỗ Trợ Tài Chính
Đối với các vấn đề ngoài các danh mục đã nêu, bạn có thể chọn tài trợ cho việc giải quyết của chúng. Mỗi vấn đề mở đều liên kết với một mẫu đơn đặ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 Của Cộng Đồng
Mã nguồn mở phát triển mạnh 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 cân nhắc đóng góp thông qua cải tiến mã, cập nhật tài liệu, hướng dẫn, hoặc bằng cách hỗ trợ những 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, với tư cách là một cộng đồng, giúp đỡ trong công việc mã nguồn mở.
Nhấn mạnh lại, DefectiveCode sẽ ưu tiên các lỗi dựa trên cách chúng ảnh hưởng đến các sản phẩm trả phí của chúng tôi, yêu cầu kéo của cộng đồng và sự 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. Tất cả các quyền được bảo lưu
Permission là được cấp miễn phí, cho bất kỳ người nào nhận được một bản sao của phần mềm này và các tài liệu liên quan (gọi là "Phần mềm"), được phép sử dụng Phần mềm mà không có hạn chế, bao gồm nhưng không giới hạn các quyền sử dụng, sao chép, chỉnh sửa, hợp nhất, công bố, 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 những người mà Phần mềm được cung cấp có thể làm như vậy, với điều kiện là:
Thông báo bản quyền ở trên và thông báo phép này sẽ được bao gồm trong tất cả các bản sao hoặc phần đáng kể của Phần mềm.
PHẦN MỀM ĐƯỢC CUNG CẤP "NHƯ THẾ", KHÔNG CÓ BẢO ĐẢM DƯỚI BẤT KỲ HÌNH THỨC NÀO, RÕ RÀNG HAY NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN ĐẾN CÁC BẢO ĐẢM VỀ THƯƠNG MẠI, PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ VÀ KHÔNG XÂM PHẠM. TRONG BẤT KỲ TRƯỜNG HỢP NÀO, CÁC TÁC GIẢ HOẶC CÁC CHỦ SỞ HỮU BẢN QUYỀN KHÔNG CHỊU TRÁCH NHIỆM VỀ BẤT KỲ KHIẾU NẠI, THIỆT HẠI HOẶC TRÁCH NHIỆM KHÁC, DÙ TRONG MỘT HÀNH ĐỘNG HỢP ĐỒNG, LỖI HOẶC CÁC HÌNH THỨC KHÁC, PHÁT SINH TỪ, RA HOẶC LIÊN QUAN ĐẾN PHẦN MỀM HOẶC VIỆC SỬ DỤNG HAY CÁC GIAO DỊCH KHÁC LIÊN QUAN ĐẾN PHẦN MỀM.