English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
アップグレード
以前のバージョンからアップグレードする場合は、アップグレードガイドを参照してください。破壊的な変更と移行手順が記載されています。
概要
MJMLは、レスポンシブメールのコーディングプロセスを簡素化するために特別に設計されたマークアップ言語です。 その意味論的な構文は、使いやすさとシンプルさを保証し、標準コンポーネントの広範なライブラリは 開発を加速し、メールコードベースの複雑性を軽減します。MJMLのオープンソースエンジンは、高品質で レスポンシブなHTMLを生成し、ベストプラクティスに準拠します。Outlookでの作業のフラストレーションを経験したことがあれば、この パッケージはあなたのために特別に設計されています。
私たちのMJML実装は、公式のMJML APIのラッパーとして機能します。これにより、NodeJSを 必要とせずに、MJMLをPHP内で直接HTMLに便利にコンパイルできます。NodeJSやMJML CLIのインストールの手間をかけずに MJMLを組み込みたいPHPアプリケーションに最適なパッケージです。
例
// 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(new MJML)->minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Laravelの場合MJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Laravelと縮小化されたHTMLの場合MJML::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バイナリは、Composerのインストールまたは更新中にCDNから取得され、このパッケージの "bin"フォルダに保存されます。 ローカルと本番の両方の環境のために必要なバイナリがロードされていることを確認してください。
デフォルトでは、
allはサポートするすべてのバイナリを引き出します。帯域幅とインストール時間を節約するために、 必要なオペレーティングシステムとアーキテクチャのみにスコープを絞ることを推奨します。以下は利用可能な バイナリです。オペレーティングシステム アーキテクチャ Composerポストアップデートコマンド すべて すべて 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 -
次に、以下のComposerコマンドを実行してPHPパッケージをインストールします:
composer require defectivecode/mjml -
これで完了です!Laravelを使用している場合、パッケージはLaravelのパッケージ検出を使用して自動的にインストールされます。
使用法(Laravelなし)
Laravelを使用している場合は、以下のLaravelを使用した場合の使い方を参照してください。
MJMLのレンダリング
MJMLをレンダリングするには、MJML文字列をrenderメソッドに渡してください:
use DefectiveCode\MJML\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\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>');
使用法(Laravelあり)
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\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- 出力の互換性のため、PHPでの縮小化を維持しています。ミニファイアはコメント(Outlook条件を除く)を削除し、 ホワイトスペースを圧縮し、タグ間のホワイトスペースを削除します。sanitizeStyles、templateSyntax、およびallowMixedSyntax- これらのMJML 5オプションは、 MJMLのネイティブhtmlnano/cssnanoミニファイパスに適用されます。このパッケージのPHPミニファイアでは使用されていません。
フォント
私たちのパッケージはデフォルトで以下のフォントを使用します:
- 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
フォントは以下のメソッドを使用して変更できます:
addFont(string $font, string $url)- フォントをフォントのリストに追加します。removeFont(string $font)- フォントのリストからフォントを削除します。setFonts(array $fonts)- フォントのリストを設定します。このフォーマットでフォントの配列を提供してください:['フォント名' => 'フォントURL']。
コメント
コメントはデフォルトで保持されます。コメントを削除したい場合は、removeComments()メソッドを使用できます。
removeComments()を元に戻したい場合は、keepComments()メソッドを呼び出してください。
インクルードを無視
デフォルトで、私たちのパッケージはmj-includeタグを無視します。これはMJML 5の
安全なデフォルトに一致します。ignoreIncludes(false)を呼び出してインクルードを有効にすることができます。
インクルードを有効にするときは、filePath(string $path)を基準ディレクトリとして使用し、includePath(string|array|null $path)を使って
追加のインクルードディレクトリを許可します。
ビューティファイ
私たちのパッケージは、js-beautifyを使用してHTMLをビューティファイします。MJML 5.2も
内部でjs-beautifyを使用しますが、このパッケージはラッパーレベルのビューティファイを保持し、カスタムPHP
beautifyOptionsが引き続き動作するようにしています。デフォルトオプションは以下の通りです:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
js-beautifyはオプションを提供するためにsnake_caseを使用していますが、私たちのパッケージを使用する際はcamelCaseを使用してください。この 選択は、私たちのパッケージを残りの設定オプションと一貫性のあるものにするためです。私たちのパッケージは、自動的に camelCaseオプションをsnake_caseに変換します。
以下のメソッドを使用して、これらのオプションをオーバーライドできます:
setBeautifyOptions(array $options)-js-beautifyのオプションを設定します。addBeautifyOption(string $option, mixed $value)-js-beautifyオプションを追加します。removeBeautifyOption(string $option)-js-beautifyオプションを削除します。
縮小化
私たちのパッケージは、有効にされるとHTML出力を縮小化します。縮小化は以下を実行します:
- HTMLコメントを削除します(
<!--[if mso]>のようなOutlook条件コメントは保持します) - 複数のホワイトスペース文字を単一のスペースに圧縮します
- HTMLタグ間のホワイトスペースを削除します
minify(bool $minify)メソッドを呼び出して、縮小化を有効または無効にできます。
なぜPHPベースの縮小化? MJML 5は古い脆弱な
html-minifierパッケージを使用しなくなりました。しかし、この パッケージは、2.xバージョンで導入された出力動作を保持するためにPHPでの縮小化を維持しています。MJML 5のネイティブ htmlnano/cssnanoの縮小化オプションが必要な場合は、必要なオプションの形で問題を開いてください。
バリデーションレベル
私たちのパッケージは、デフォルトでsoftバリデーションレベルを使用してMJMLをバリデートします。この設定は、validationLevel(ValidationLevel $validationLevel)メソッドを使用して変更できます。以下のバリデーションレベルが利用可能です:
strict- ドキュメントはバリデーションを通過し、エラーがある場合はレンダリングされませんsoft- ドキュメントはバリデーションを通過し、エラーがあってもレンダリングされますskip- ドキュメントはバリデーションを通過せずにレンダリングされます。
ファイルパス
私たちのパッケージはデフォルトで.ディレクトリを使用します。これは、filePath(string $path)メソッドを呼び出して変更できます。
MJML 5はfilePathをインクルードサンドボックスの基準として扱います。インクルードが有効な場合、filePathの外のパスは
明示的にincludePath(string|array|null $path)で許可されない限り、拒否されます。
ジュース
私たちはデフォルトでは、juiceオプションを提供していません。以下のメソッドを使用して ジュースオプションを追加できます:
setJuiceOptions(array $options)- ジュースオプションを設定します。addJuiceOption(string $option, mixed $value)- ジュースオプションを追加します。removeJuiceOption(string $option)- ジュースオプションを削除します。setJuicePreserveTags(array $tags)- ジュースの保持タグを設定します。addJuicePreserveTag(string $tag, mixed $value)- ジュースの保持タグを追加します。removeJuicePreserveTag(string $tag)- ジュースの保持タグを削除します。
サポートガイドライン
私たちのオープンソースパッケージを選んでいただきありがとうございます!これらのサポートガイドラインを確認するための時間を取ってください。プロジェクトを最大限に活用する助けになるでしょう。
コミュニティ主導のサポート
私たちのオープンソースプロジェクトは、素晴らしいコミュニティによって支えられています。質問がある場合や支援が必要な場合は、StackOverflowやその他のオンラインリソースが最良の選択です。
バグと機能の優先順位付け
オープンソースプロジェクトを管理する現実として、報告されたすべてのバグや機能リクエストに即座に対応することはできません。以下の順序で問題を優先します。
1. 有料製品に影響を与えるバグ
有料製品に影響を与えるバグは常に最優先事項となります。場合によっては、私たちに直接影響を与えるバグのみを扱うことがあります。
2. コミュニティのプルリクエスト
バグを特定し、解決策を持っている場合は、プルリクエストを提出してください。私たちの製品に影響を与える問題の次に、これらのコミュニティ主導の修正に対して最も高い優先順位を与えます。レビューと承認が行われた後、あなたの解決策をマージし、貢献を認めます。
3. 財政的サポート
上記のカテゴリー以外の問題については、その解決に資金を提供することができます。各オープンイシューには、財政的に貢献できる注文フォームへのリンクがあります。提供された資金額に基づいて、これらの問題を優先します。
コミュニティの貢献
オープンソースは、そのコミュニティが活発であるときに栄えます。バグを修正していない場合でも、コード改善、ドキュメントの更新、チュートリアルの作成、またはコミュニティチャネルで他の人を支援することで貢献を考えてください。私たちは、コミュニティとしてオープンソースの仕事を支援することを皆さんに強く奨励します。
繰り返しになりますが、DefectiveCodeは、有料製品にどのように影響を与えるか、コミュニティのプルリクエスト、そして問題に対して受け取った財政的サポートに基づいてバグを優先します.
ライセンス - MITライセンス
著作権 © Defective Code, LLC. 全著作権を保有します。
本ソフトウェア及び関連する文書ファイル(以下「ソフトウェア」)のコピーを取得したすべての人に対して、無償で本ソフトウェアを制限なく利用する権利、使用、複製、修正、統合、出版、配布、サブライセンス、及び/またはソフトウェアのコピーを販売する権利を許可し、ソフトウェアが提供される人々にもそれを行うことを許可します。ただし、以下の条件に従います:
上記の著作権表示とこの許可通知は、ソフトウェアのすべてのコピーまたは重要な部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、いかなる種類の保証もなく、明示または暗示を問わず、商業性、特定の目的への適合性および非侵害の保証を含むが、これに限定されない保証はありません。著作者または著作権者は、契約、不法行為、またはその他の方法によるいかなる請求、損害、またはその他の責任についても、ソフトウェアまたはソフトウェアの使用またはその他の取り扱いに起因する場合において、一切の責任を負わないものとします。