最終更新日: 2025年9月12日
‘アセットマーケットプレイスにテーマを提出する際に満たす必要がある要件について説明します。’; HubSpotテンプレートマーケットプレイスへの提出のために、テーマが満たす必要のある要件について、詳しくご確認ください。 テーマ作成の取り組みを始めたばかりの場合は、HubSpotの無料のCMSテーマボイラープレートを利用することを強くお勧めします。このテンプレートは、HubSpotのGitリポジトリーからダウンロードすることも、アカウントのデザインマネージャーUI内でインポートすることもできます。 また、テンプレートをHubSpotテンプレートマーケットプレイスに提出する際は、テンプレート掲載ページの要件をご確認ください。

テーマの制限

テーマごとに以下の制限が適用されます。
  • 無料のCMS Hubアカウントでは、サイト検索、CTA機能、ネイティブHubSpot動画を使用できません。CMS Hubサブスクリプションでご利用可能な機能の詳細については、HubSpot製品・サービスカタログをご覧ください。
  • テーマに含めるコンポーネントの数の上限は次のとおりです。
  • テーマに次のコンポーネントを含めることはできません

全体的なテーマの要件

  • 提出される全てのテーマは、明確に区別できるオリジナルのものでなければなりません。例えば、コピーやプレースホルダーの内容が異なるだけのテーマは、別のテーマとは見なされません。詳細はHubSpotテンプレートマーケットプレイスのコンプライアンスをご確認ください。
  • テーマの作成には、HTMLおよびHubLテンプレートと、dnd_areaタグを使用する必要があります。
  • テーマは、12列グリッドに準拠する必要があります。

テーマファイルの構造

全てのテーマは、適切なフォルダー構造を持ち、製品掲載情報を表す単一の親フォルダーにまとめられている必要があります。例えば、マーケットプレイス用に「SuperAwesome」というテーマを作成する場合は、以下の図のような構造になります。詳細はテーマファイルの構造をご確認ください。

テンプレートの相対ローカルファイルパス

テーマアセットを参照する際には、相対ローカルファイルパスを使用する必要があります。相対パスを含める際の最善の方法は、get_asset_url関数を使用することです。この関数は、アセット、ファイル、テンプレートの公開URLを返します。また、ファイルを右クリックして公開URLをコピーを選択するか、アクションをクリックして公開URLをコピーを選択することで、この関数を生成することもできます。 例えば、require_cssget_asset_urlで参照されるスタイルシートを次のように書式設定する必要があります。
{{require_css(get_asset_url('../../css/main.css')) }}
以下の動画で、開発者アカウント内のファイルとマーケットプレイスの顧客に配信されるファイルとのファイル構造の違いをご確認ください。

テーマのパフォーマンス

Google Lighthouseを使用する場合は、テーマのスコアが次のしきい値を上回る必要があります。
  • デスクトップのアクセシビリティー: 65
  • デスクトップのベストプラクティス: 80
  • デスクトップのパフォーマンス: 70
  • モバイルのパフォーマンス: 40
詳しくはCLIを使用してテーマのGoogle Lighthouseレポートを生成する方法をご確認ください。
  • テーマファイルはミニフィケーション可能でなければなりません。
  • 全ての画像ファイルはサイズが1MB未満である必要があります。
  • 全ての画像タグはalt属性を持つ必要があります(値""は使用可能です)。
  • 全ての画像タグはloading属性を持つ必要があります(値""は使用可能です)。

テーマのプレビューURL

プレビューURLを作成する場合は、独自のドメイン名を使用する必要があります。次のような構造を持つHubSpot提供のドメインを使用することはできません:[AccountID].hs-sites.com デモサイトの画像ではなく、公開中のウェブサイトを使用する必要があります。 ライブデモにアクセスできなくなった場合、HubSpotはプロバイダーに通知した上で、再びアクセスできるようになるまでテーマの掲載を停止または削除する権利を留保します。

jQueryの使用

jQueryは、お客さまのHubSpotアカウントでデフォルトでは有効になっていません。テーマがjQueryに依存している場合は、テーマが想定通りに機能するように、jQueryのバージョンを含める必要があります。 例えば、jQueryを必要とするモジュールを組み込むが、サイトの他の部分ではJQueryが不要な場合、次のコードを使ってjQueryを読み込む必要があります。
{# this checks if the "Include jQuery" option in Settings > CMS > Pages is checked #}
{% if not site_settings.include_jquery %}
  {{ require_js("../jquery-3.4.1.js", "footer") }}
{% endif %}

テーマ構成(teme.json)

theme.jsonファイルには、次のパラメーターを含める必要があります。
// theme.json
{
  "label": "Cool Theme",
  "preview_path": "./templates/home-page.html",
  "screenshot_path": "./images/templates/homepage.jpg",
  "enable_domain_stylesheets": false,
  "version": "1.0",
  "author": {
    "name": "Jon McLaren",
    "email": "noreply@hubspot.com",
    "url": "https://theme-provider.com/"
  },
  "documentation_url": "https://theme-provider.com/cool-theme/documentation",
  "license": "./license.txt",
  "example_url": "https://theme-provider.com/cool-theme/demo",
  "is_available_for_new_content": true
}
theme.jsonファイルをチェックして、次のことを確認してください。
  • ラベル名が、テーマ掲載情報での名前と一致していること。
  • HubSpotの無料のCMSテーマボイラープレートを使用している場合は、ボイラープレートの値が存在していないこと。これには、作成者情報、ドキュメントURL、サンプルURLなどが含まれます。
  • ドキュメントURLが解決され、このURLにテーマの使い方に関するドキュメントが用意されていること。
  • プレビューパスがテーマ内の有効なファイルを指していること。
  • スクリーンショットパスが有効なファイルを指していて、テーマに関連していること。
  • サンプルURLが正しく解決され、テーマのデモページが表示されること。サンプルURLでpreview.hs-sites.comサブドメインや[AccountID].hs-sites.comサブドメインが使用されていないこと。
詳細はTheme.jsonのパラメーターをご確認ください。

テーマ設定(fields.json)

fields.jsonファイルは、テーマエディターで利用可能なフィールドとフィールドグループ(スタイルフィールドを含む)を制御します。含めるフィールドは、ページエディターでの制作担当者による制御をどの程度可能にするかに応じて異なります。
  • fields.jsonファイルに少なくとも3つの色フィールドが含まれている必要があります。
  • テーマと独立したモジュールの互換性を確保するには、テーマにフォントおよび色の標準命名規則として、primary_colorsecondary_colorheading_fontbody_fontを含める必要があります。詳細はモジュールとテーマの互換性をご確認ください。
テーマフィールドにprimary_colorsecondary_colorheading_fontbody_fontフィールドがない場合は、alternate_namesフィールドを使用できます。 詳細は、fields.jsonのパラメーターと、HubSpot CMSボイラープレートのサンプルfields.jsonファイルをご確認ください。 テーマ設定には次の要件も適用されます。
  • エディタースタイルまたはモジュールを通じて設定されたスタイルと競合しないこと。例えば、CSSスタイルシートでは!importantを使用しないでください。このプロパティーを使用すると、エンドユーザーによる上書きが困難になり、競合の原因となる可能性があります。
  • コンテンツ制作者が更新内容を把握できるよう、テーマ設定では各設定に分かりやすい説明ラベルを使用すること。
  • テーマ設定を、テーマに含まれる全てのテンプレートに適用すること(ただし、追加のスタイルに特定の用途がある場合を除きます)。例えば、テーマ設定でh1見出しのスタイルとサイズを変更した場合は、テーマに含まれる全てのh1タグにその変更を適用する必要があります。
テーマには、少なくとも次のテーマフィールドを含める必要があります タイポグラフィーフィールド:
  • 本文テキストのフォントフィールド(pタグ)
  • h1h6のフォントフィールド
  • ホバースタイルの設定を含むハイパーリンクの色(aタグ)
フォームフィールド:
  • フォームの背景色
  • フォーム境界線の色
  • フォームラベルの色
  • フォームフィールドの境界線の色
  • フォームボタン(ボタンテキスト、背景色、ホバースタイルの設定を含む)
さらに、次の要件も適用されます。
  • テーマ内のフィールドは、必要に応じて論理的にグループ化する必要があります。例えば、タイポグラフィーに関連する複数のフィールドをTypographyグループとしてグループ化します。
  • テーマフィールドには、ボタンとフォーム用の個別の色とフォントの制御設定に加えて、ヘッダーとフッター用の個別の色、ロゴ、フォントの制御設定が必要です。
  • テーマ内のモジュールでロゴが使用されている場合、少なくとも1つのロゴフィールドは、アカウントのブランド設定を継承する必要があります。画像フィールドを使用してロゴをレンダリングする場合、画像フィールドはブランド設定を継承する必要はありません。

テンプレート(CSS、セクション、ページテンプレートなど)

セクション

  • 適用可能な場合は常にセクションを使用する必要があります。テーマにはそれぞれ少なくとも5個のセクションが必要です
  • セクションには固有の実用的なスクリーンショットが必要です。
  • セクションとモジュールを冗長にしないでください。

ページテンプレート

テーマには、少なくとも次のテンプレートタイプを含める必要があります
  • ウェブサイトページテンプレートまたはランディングページテンプレート。
    • 複数のページテンプレートを含める場合、各テンプレートは別個の目的を持つ必要があります。例えばホームページ、会社概要__ページ、全幅ランディングページ、右サイドバー付きランディングページなどです。
    • 1つのテーマに少なくとも8個のページテンプレートを含めることをお勧めします。
  • 別個のブログリストテンプレートとブログ記事テンプレート。
    • ブログリストテンプレート: リスト形式で全てのブログ記事を表示するページ(「ブログロール」と呼ばれる)。テンプレートのタイトルは、リストページ用であることを示す必要があります。
    • ブログ記事テンプレート: 個々のブログ記事を表示する、ブログ記事の詳細ページ。テンプレートのタイトルは、ブログ記事ページ用であることを示す必要があります。
    • さらに、ブログコメント欄とブログ執筆者欄のスタイルを、テーマに合わせて設定する必要があります。
  • 次のシステムページテンプレート:
    • 404エラーテンプレート: 存在しないページに訪問者がアクセスしようとしたときに表示されます。
    • 500エラーテンプレート: ウェブサイトで内部エラーが発生したときに表示されます。
    • パスワード プロンプト テンプレート: ページがパスワードで保護されているときに表示されます。
    • サブスクリプションテンプレート: 配信(サブスクリプション)設定ページ。このページで、Eメール受信者は配信登録するEメールの種類を管理できます。
    • サブスクリプション更新テンプレート: Eメール受信者が配信設定を更新したときに表示される確認ページ。
    • 配信登録解除バックアップテンプレート: 配信登録を解除しようとしているEメール受信者に対し、HubSpotがそのEメールアドレスを判断できない場合に表示されるページ。
    • 検索結果テンプレート: サイト検索を使用したときに返される検索結果を表示します。有料のCMS Hubアカウントでのみご利用いただけます。

ページテンプレートの命名

  • 類似した名前のテンプレートがある場合は、それぞれの違いが分かる説明的な単語を名前に追加します。
  • 大文字と小文字の一貫性を保ち、ハイフンを削除し、短縮形を使用しないようにします(例えば、「bg」を使用する代わりに「background」とスペルアウトします)。
  • 会社名やテーマ名をテンプレート名に含める必要はありません。

モジュール

テーマモジュールと個々のモジュールの要件については、こちらで詳細をご確認ください。

グローバルコンテンツ

グローバルパーシャル

グローバルパーシャルは、HTMLとHubLを使用して作成されたテンプレートの一種であり、ウェブサイト全体で再利用できます。典型的なパーシャルは、ウェブサイトのヘッダー、ページのサイドバー、ウェブサイトのフッターです。詳しくはグローバルパーシャルを作成する方法をご確認ください。
  • テーマにはグローバルパーシャルが含まれている必要があります
  • グローバルパーシャルには、使用可能なドラッグ&ドロップエリアを含める必要があります。例えば、ドラッグ&ドロップエリアを「非表示」クラスで非表示にすることはできません。
  • 使用可能なドラッグアンドドロップエリアをヘッダーとフッターに組み込む必要があります
  • また、サイト全体でグローバルに使用されるメニューについては、ユーザーがアカウント設定で作成したHubSpotナビゲーションメニューを選択できるようにする必要もあります。

多言語サポート

テーマは複数の言語バージョンに対応できる必要があり、対応可能な言語も明記する必要があります。グローバルヘッダー内で言語切り替えモジュールを追加すると、顧客が簡単に言語のオプションを見つけて目的の言語を選択できるようになります。
  • 1度に表示できる言語は1つのみにしてください。例えば、UIに英語とスペイン語の両方が同時に表示されないようにしてください。
  • ハードコーディングされたテキストを使用しないでください。例えば、ブログリストボタンのテキストを「続きを読む」とハードコーディングするのではなく、エンドユーザーがコードに触れずにテキストを更新できるように、フィールド内でテキストを設定します。

モバイルおよびレスポンシブ要素

テーマでは、コンテンツの閲覧に使用されるデバイスに合わせたコンテンツの適応に対応できる必要があります。また、さまざまなデバイスで一貫して優れたユーザーエクスペリエンスを提供できるテーマである必要もあります。これに該当する要素には以下のものが含まれますが、これらに限定されません。
  • メインナビゲーション
  • スライダーとタブ
  • 大きな画像
  • 水平スクロールは使用しないようにします(意図的な場合を除く)