最終更新日: 2025年8月28日
ページ、ブログ、見積もり(英語)のモジュールを作成する場合は、モジュールのコンテンツ、スタイル設定、機能を制御するための3つのフロントエンド関連ファイルがモジュール内にあります。
- module.html
- module.css
- module.js
Eメールモジュールは、module.cssとmodule.jsに対応していません。理由としては、EメールクライアントではJavaScriptがサポートされないことと、リンクされたCSSファイルのサポートが限られていることが挙げられます。
module.css
とmodule.js
が1回だけ読み込まれます。既定では、module.css
とmodule.js
が非同期的に読み込まれることはありませんが、モジュールのmeta.jsonにcss_render_options and js_render_optionsを含めることで、この動作を変更できます。
モジュールはデザインマネージャー内で作成するか、またはHubSpot CLIを使用してローカル環境で作成できます。モジュールファイルは、デザインマネージャー上ではマルチペインエディターに表示されます。
ローカルでモジュールを確認すると、ファイルはmodule-name.moduleフォルダーに格納されます。


HTML + HubL(module.html)
module.htmlファイルはHTMLおよびHubLを対象としています。一般に、モジュールがページエディターまたはテンプレートファイルのどこに配置されているかに応じて、module.htmlファイルの内容がどこにレンダリングされるかが決まります。 このファイルは、モジュールがどこに配置されていても、ページ内でHubL includeと同じように動作します。module.htmlファイルからは、HubLを使ってモジュールのフィールド値にアクセスできます。CSS(module.css)
モジュールにCSSを追加するには、module.css
ファイルを使用します。
一般に、module.css
ではHubLのごく一部のサブセットのみがサポートされます。ただし、モジュールとリンクされたアセットとして画像を追加する場合にmodule_asset_url("my-image.png")
を使用できます。これにより、画像などのアセットをモジュール自体にパッケージ化できます。例:
モジュールフィールド値に基づくスタイル
モジュールのフィールドに基づいてモジュールのスタイルに効果を与えるには、いくつかの方法があります。特定の用途に応じて最適な方法を選択してください。CSSクラス
編集時に選択可能なオプションをモジュールのスタイルにあらかじめ設定しておくには、モジュールフィールドを追加して、module.css
ファイルのCSSクラスに対応するクラスをmodule.html
ファイル内で設定することができます。
例えば、画像とテキストの1つのモジュールがある状況が考えられます。選択フィールドに基づいてテキストの右または左に画像を制作担当者が配置できるようにする必要がありします。このためには、module.html
とmodule.css
ファイルを次のように設定できます。
require_cssブロック
特定のプロパティーを制作担当者が直接制御できる必要があり、クラスが適切でない場合は、require_css
ブロックにスタイルタグを使用する方法が最適です。
クラスを使用することなく制作担当者が特定のプロパティーを直接制御できるようにするには、require_css
タグ内にmodule.html
ファイルにスタイルを追加できます。例:
module.html
ではHubLをレンダリングできるので、モジュールフィールド値をCSS変数として使用できます。制作担当者がページエディター上でフィールドを更新すると、該当するCSSが更新されます。このようなブロックによって、<style>
タグがstandard_header_includes
ステートメント内のページの<head>
に移されます。
CSSをscope_css
タグで囲むことにより、CSSをモジュールインスタンスにのみ適用することもできます。例えば、上記のモジュールコードは次のように変更できます。
インラインスタイルを追加する
わずかな数のプロパティーを制作担当者が細かく制御できる必要があり、クラスが適切でない場合は、HTMLのスタイル属性に値を直接追加することができます。require_css
ブロック手法への切り替えを検討してください。
特定のCSSファイルをインポートする
require_css
は、module.htmlに追加することで、特定のモジュールまたはテンプレートの表示に特定のCSSファイルが必要なことをHubSpotに示すためのHubL関数です。cssファイルを指すリンクタグが、standard_header_includes
内でページの<head>
に追加されます。
require_css
関数では、特定のページ上のモジュールやテンプレートで同じCSSファイルが何回必要とされるかにかかわらず、そのCSSファイルが1回だけ読み込まれます。複数のモジュール間でスタイルが共有される可能性があっても、サイトの全ページで使われるメインのスタイルシートにCSSを直接追加することが望ましくない状況では、この方法が優れています。
require_css
もリンクによるCSSファイルも同じ目的で利用できますが、require_css
はフィールド値に基づく条件付きで使用できます。これにより、不要なコードの読み込みが防止されます。
JavaScript(module.js)
JavaScriptをモジュールに追加するには、module.js
ファイルを使用します。
module.css
ファイルと同様にmodule.js
ファイルでもHubLはサポートされません。
フィールド値に基づくスクリプト記述
モジュールにはいくつかの作成方法があり、フィールド値に基づくJavaScriptの動作が異なります。どの方法をどのような状況で使用するかを理解しておくことで、モジュールが使用される全てのページでパフォーマンス面でのメリットが得られます。 例えば、カスタム画像モジュールがあり、Lightboxで画像が開くように制作担当者が設定できる必要があるとします。制作担当者がこの設定を必要とするのは特定の画像のみで、全てのモジュールインスタンスとは限りません。データ属性
データ属性は、開発者が要素に追加するHTML 5標準のカスタム属性です。class="yourClassName"
と同じように、data-your-attribute="yourValue"
が全ての要素でサポートされます。
require_jsブロック
JavaScriptテンプレートライブラリーや、Vue.jsまたはReact.jsなどのリアクティブフレームワークを使用する高度なケースでは、データの出力だけを自分で対応し、レンダリングはフレームワーク側で処理する方が望ましい場合があります。 この場合、テンプレートスクリプトからアクセス可能な変数を提供するには、require_js
ブロックで囲んだスクリプトタグを使用します。
require_js
require_js
は、特定のモジュールまたはテンプレートの正常な読み込みに特定のJavaScriptファイルが必要であることを、HubSpotに示すためのHubL関数です。この関数には、ファイルへのパスと、ファイルの追加先となる位置(“head”または“footer”)の2つの入力パラメーターがあります。
モジュール内では、require_js
をmodule.htmlにのみ追加できます。require_js
ステートメントで参照されるJavaScriptファイルは、ページ内のモジュールやテンプレートで何回必要とされるかにかかわらず、ページごとに1回だけ読み込まれます。これによりHTTPリクエスト数が減少し、コードの重複も防止できます。
これは次のような状況で役立ちます。
- 同じJavaScriptを必要とする複数のモジュールまたはテンプレートがある場合、
require_js
を使用することでモジュール間でスクリプトを共有できます。 - webpackのようなJavaScriptバンドラーを使用する場合、jsファイルを特定の1つの位置に出力する方が簡単なことがあります。
require_js
を使用すると、JavaScriptをモジュールに関連付けることができます。
require_js
もリンクによるJavaScriptファイルも同じ目的で利用できますが、require_js
にはフィールド値に基づく条件を付けることができます。これにより、不要なコードの読み込みが防止されます。さらに、必要な場合にはJavaScriptをheadに読み込む方法もあります。
JavaScriptはレンダリングの妨げになるので、
require_js
がJavaScriptを配置する位置は既定でfooterになっています。パフォーマンスの最適化に関する詳細をご覧ください。