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をHTMLに簡単にコンパイルできます。NodeJSのインストールやMJML CLIの面倒が不要です。このパッケージは、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; $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; $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; $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)- フォントリストを設定します。このフォーマットの配列を提供する必要があります:['font-name' => 'font-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パッケージを使用していません。このパッケージは出力の動作を保持するために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)によって明示的に許可されない限り拒否されます。
ジュース
私たちはデフォルトではジュースオプションを提供していません。以下のメソッドを使用してジュースオプションを追加できます:
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. 全著作権を保有します。
本ソフトウェア及び関連する文書ファイル(以下「ソフトウェア」)のコピーを取得したすべての人に対して、無償で本ソフトウェアを制限なく利用する権利、使用、複製、修正、統合、出版、配布、サブライセンス、及び/またはソフトウェアのコピーを販売する権利を許可し、ソフトウェアが提供される人々にもそれを行うことを許可します。ただし、以下の条件に従います:
上記の著作権表示とこの許可通知は、ソフトウェアのすべてのコピーまたは重要な部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、いかなる種類の保証もなく、明示または暗示を問わず、商業性、特定の目的への適合性および非侵害の保証を含むが、これに限定されない保証はありません。著作者または著作権者は、契約、不法行為、またはその他の方法によるいかなる請求、損害、またはその他の責任についても、ソフトウェアまたはソフトウェアの使用またはその他の取り扱いに起因する場合において、一切の責任を負わないものとします。