English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
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
.
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.
// 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 LaravelMJML::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ảnMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
Đầ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 |
Tiếp theo, cài đặt gói PHP bằng cách chạy lệnh composer sau:
composer require defectivecode/mjml
Đó 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.
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, 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, 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>');
Để 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, 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>');
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.
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:
preprocessors
- Tùy chọn này không khả dụng. 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 sử dụng html-minifier-terser
trong khi gói chính thức sử dụng html-minifier
để thu nhỏ. Chúng
tôi quyết định chuyển đổi bộ xử lý vì html-minifer
không còn được bảo trì và có một số vấn đề bảo mật liên quan
với nó.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:
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ữ trong định dạng này:
['tên-phông-chữ' => 'url-phông-chữ']
.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()
.
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)
.
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:
setBeautifyOptions(array $options)
- Đặt các tùy chọn js-beautify
.addBeautifyOption(string $option, mixed $value)
- Thêm một tùy chọn js-beautify
.removeBeautifyOption(string $option)
- Xóa một tùy chọn js-beautify
.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:
setMinifyOptions(array $options)
- Đặt các tùy chọn html-minifier-terser
.addMinifyOption(string $option, mixed $value)
- Thêm một tùy chọn html-minifier-terser
.removeMinifyOption(string $option)
- Xóa một tùy chọn html-minifier-terser
.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:
strict
- Tài liệu của bạn đang trải qua xác thực và 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à được hiển thị, ngay cả nếu 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.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)
.
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:
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ẻ juice cần bảo tồn.addJuicePreserveTag(string $tag, mixed $value)
- Thêm một thẻ juice cần bảo tồn.removeJuicePreserveTag(string $tag)
- Xóa một thẻ juice cần bảo tồn.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.
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.
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:
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.
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.
Đố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.
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 đề.
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.