English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
本文档已经自动翻译。如果有翻译错误,请在项目中打开一个拉取请求,并将翻译后的文件添加到docs/{ISO 639-1 Code}.md
。
MJML 是一种专门设计用于简化编写响应式电子邮件的标记语言。 它的语义化语法确保易用和简单,而其丰富的标准组件库加快了开发速度,减少了电子邮件代码库的复杂性。MJML 的开源引擎生成符合最佳实践的高质量响应式 HTML。如果您曾经遇到过使用 Outlook 的困扰,那么这个包就是为您量身定制的。
我们的 MJML 实现是官方 MJML API 的一个封装。它可以方便地将 MJML 编译为 HTML,直接在 PHP 中使用,无需安装 NodeJS。这个包非常适合希望在 PHP 应用程序中集成 MJML,而又不想麻烦地安装 NodeJS 和 MJML CLI 的用户。
// Without Laravel(new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Minified 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>'); // With LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // With Laravel and minified HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
首先将以下内容添加到您的 composer.json
文件中,以便在安装我们的包时从正确的操作系统中获取二进制文件。在运行 install
、update
或 dump-autoload
后,二进制文件将会下载。
{ "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}
MJML 二进制文件将从我们的 CDN 获取,并在 composer 的安装或更新期间保存在此包的 "bin" 文件夹中。请确保您已加载了所需的二进制文件,以供本地和生产环境使用。
默认情况下,all
将获取我们支持的所有二进制文件。我们建议将其限定为您需要的操作系统和架构系统,以节省带宽和安装时间。以下是可用的二进制文件。
操作系统 | 架构 | Composer 后更新命令 |
---|---|---|
所有 | 所有 | 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 |
接下来,通过运行以下 composer 命令来安装 PHP 包:
composer require defectivecode/mjml
就这样!如果使用 Laravel,我们的包将会自动安装,使用 Laravel 的包发现功能。
如果您使用Laravel,请参阅下面的使用方法。
要渲染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字符串传递给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
方法:
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
方法:
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包的相同配置,除了以下几点:
preprocessors
- 此选项不可用。如果您想要添加此选项,请提交拉取请求。minifyOptions
- 我们使用html-minifier-terser
,而官方包使用html-minifier
进行压缩。我们决定切换处理器,因为html-minifer
不再维护,并且与之相关的一些安全问题。我们的包默认使用以下字体:
您可以使用以下方法更改字体:
addFont(string $font, string $url)
- 将字体添加到字体列表中。removeFont(string$font)
- 从字体列表中删除字体。setFonts(array $fonts)
- 设置字体列表。您应该以以下格式提供一个字体数组:['font-name' => 'font-url']
。默认情况下保留注释。如果您希望删除注释,可以使用removeComments()
方法。
您还可以通过调用keepComments()
方法来恢复removeComments()
。
默认情况下,我们的包将包括任何mj-include
标签。您可以通过调用ignoreIncludes(bool $ignore)
方法来调整此行为。
我们的包将使用js-beautify
对HTML进行美化,默认选项如下:
虽然
js-beautify
使用snake_case提供选项,但在使用我们的包时,应使用camelCase。我们做出了这个选择,以使我们的包与其他配置选项保持一致。我们的包将自动将camelCase选项转换为snake_case。
您可以通过使用以下方法之一提供有效的js-beautify
配置来覆盖这些选项:
setBeautifyOptions(array $options)
- 设置js-beautify
选项。addBeautifyOption(string $option, mixed $value)
- 添加js-beautify
选项。removeBeautifyOption(string $option)
- 删除js-beautify
选项。我们的包将使用html-minifier-terser
对HTML进行压缩,默认选项如下:
您可以通过使用以下方法之一提供有效的html-minifier-terser
配置来覆盖这些选项:
setMinifyOptions(array $options)
- 设置html-minifier-terser
选项。addMinifyOption(string $option, mixed $value)
- 添加html-minifier-terser
选项。removeMinifyOption(string $option)
- 删除html-minifier-terser
选项。默认情况下,我们的包将使用soft
验证级别对MJML进行验证。您可以使用validationLevel(ValidationLevel $validationLevel)
方法更改此设置。可用的验证级别如下:
strict
- 您的文档正在进行验证,如果有任何错误,将不会呈现。soft
- 您的文档正在进行验证,即使有错误也会呈现。skip
- 您的文档在不进行验证的情况下呈现。默认情况下,我们的包将使用.
目录。您可以通过调用filePath(string $path)
方法更改此设置。
我们默认不提供任何juice选项。您可以通过使用以下方法之一添加juice选项:
setJuiceOptions(array $options)
- 设置juice选项。addJuiceOption(string $option, mixed $value)
- 添加juice选项。removeJuiceOption(string $option)
- 删除juice选项。setJuicePreserveTags(array $tags)
- 设置juice保留标签。addJuicePreserveTag(string $tag, mixed $value)
- 添加juice保留标签。removeJuicePreserveTag(string $tag)
- 删除juice保留标签。感谢您选择我们的开源软件包!请花点时间阅读这些支持指南。它们将帮助您充分利用我们的项目。
我们的开源项目得益于我们强大的社区。如果您有问题或需要帮助,StackOverflow和其他在线资源是您最好的选择。
管理开源项目的现实意味着我们无法立即解决每个报告的缺陷或功能请求。我们按照以下顺序优先处理问题:
影响我们付费产品的缺陷始终是我们的首要任务。在某些情况下,我们可能只解决直接影响我们的缺陷。
如果您发现了一个缺陷并且有解决方案,请提交一个拉取请求。在解决影响我们产品的问题之后,我们将优先处理这些社区驱动的修复。一旦审核并批准,我们将合并您的解决方案并给予您的贡献认可。
对于不属于上述类别的问题,您可以选择为其解决提供资金支持。每个开放的问题都链接到一个订单表单,您可以在其中进行财务贡献。我们根据提供的资金金额优先处理这些问题。
开源在其社区活跃时才能繁荣。即使您不修复缺陷,也可以通过代码改进、文档更新、教程或在社区渠道中帮助他人来做出贡献。我们强烈鼓励每个人作为一个社区来支持开源工作。
再次强调,DefectiveCode将根据缺陷对我们付费产品的影响、社区贡献的拉取请求以及收到的财务支持来优先处理缺陷。
版权所有 © Defective Code, LLC。保留所有权利。
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人,无偿使用本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许获得本软件的人这样做,但须遵守以下条件:
在所有副本或实质部分的软件中必须包含上述版权声明和本许可声明。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。无论是在合同、侵权行为或其他情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,与本软件或使用或其他方式有关。