カスタムモジュールは、ウェブサイト全体で使用できる再利用可能な要素です。速度、ユーザーエクスペリエンス、アクセシビリティーに関するベストプラクティスを考慮しながら構築します。
module.css
とmodule.js
が1回だけ読み込まれます。既定では、module.css
とmodule.js
が非同期的に読み込まれることはありませんが、モジュールのmeta.jsonにcss_render_options and js_render_optionsを含めることで、この動作を変更できます。
モジュールはデザインマネージャー内で作成するか、またはHubSpot CLIを使用してローカル環境で作成できます。モジュールファイルは、デザインマネージャー上ではマルチペインエディターに表示されます。
ローカルでモジュールを確認すると、ファイルはmodule-name.moduleフォルダーに格納されます。
module.css
ファイルを使用します。
一般に、module.css
ではHubLのごく一部のサブセットのみがサポートされます。ただし、モジュールとリンクされたアセットとして画像を追加する場合にmodule_asset_url("my-image.png")
を使用できます。これにより、画像などのアセットをモジュール自体にパッケージ化できます。例:
module.css
ファイルのCSSクラスに対応するクラスをmodule.html
ファイル内で設定することができます。
例えば、画像とテキストの1つのモジュールがある状況が考えられます。選択フィールドに基づいてテキストの右または左に画像を制作担当者が配置できるようにする必要がありします。このためには、module.html
とmodule.css
ファイルを次のように設定できます。
require_css
ブロックにスタイルタグを使用する方法が最適です。
クラスを使用することなく制作担当者が特定のプロパティーを直接制御できるようにするには、require_css
タグ内にmodule.html
ファイルにスタイルを追加できます。例:
module.html
ではHubLをレンダリングできるので、モジュールフィールド値をCSS変数として使用できます。制作担当者がページエディター上でフィールドを更新すると、該当するCSSが更新されます。このようなブロックによって、<style>
タグがstandard_header_includes
ステートメント内のページの<head>
に移されます。
CSSをscope_css
タグで囲むことにより、CSSをモジュールインスタンスにのみ適用することもできます。例えば、上記のモジュールコードは次のように変更できます。
require_css
ブロック手法への切り替えを検討してください。
require_css
は、module.htmlに追加することで、特定のモジュールまたはテンプレートの表示に特定のCSSファイルが必要なことをHubSpotに示すためのHubL関数です。cssファイルを指すリンクタグが、standard_header_includes
内でページの<head>
に追加されます。
require_css
関数では、特定のページ上のモジュールやテンプレートで同じCSSファイルが何回必要とされるかにかかわらず、そのCSSファイルが1回だけ読み込まれます。複数のモジュール間でスタイルが共有される可能性があっても、サイトの全ページで使われるメインのスタイルシートにCSSを直接追加することが望ましくない状況では、この方法が優れています。
require_css
もリンクによるCSSファイルも同じ目的で利用できますが、require_css
はフィールド値に基づく条件付きで使用できます。これにより、不要なコードの読み込みが防止されます。
module.js
ファイルを使用します。
module.css
ファイルと同様にmodule.js
ファイルでもHubLはサポートされません。
class="yourClassName"
と同じように、data-your-attribute="yourValue"
が全ての要素でサポートされます。
require_js
ブロックで囲んだスクリプトタグを使用します。
require_js
は、特定のモジュールまたはテンプレートの正常な読み込みに特定のJavaScriptファイルが必要であることを、HubSpotに示すためのHubL関数です。この関数には、ファイルへのパスと、ファイルの追加先となる位置(“head”または“footer”)の2つの入力パラメーターがあります。
モジュール内では、require_js
をmodule.htmlにのみ追加できます。require_js
ステートメントで参照されるJavaScriptファイルは、ページ内のモジュールやテンプレートで何回必要とされるかにかかわらず、ページごとに1回だけ読み込まれます。これによりHTTPリクエスト数が減少し、コードの重複も防止できます。
これは次のような状況で役立ちます。
require_js
を使用することでモジュール間でスクリプトを共有できます。require_js
を使用すると、JavaScriptをモジュールに関連付けることができます。require_js
もリンクによるJavaScriptファイルも同じ目的で利用できますが、require_js
にはフィールド値に基づく条件を付けることができます。これにより、不要なコードの読み込みが防止されます。さらに、必要な場合にはJavaScriptをheadに読み込む方法もあります。
require_js
がJavaScriptを配置する位置は既定でfooterになっています。パフォーマンスの最適化に関する詳細をご覧ください。