カスタムアダプティブフォームのテンプレートの作成

メモ

AEM Forms に、動的なテンプレートが導入されました。AEM サイトのテンプレートエディターを使用して、動的なテンプレートの作成や編集を行うことができます。この記事で説明するテンプレートは、静的なテンプレートです。デフォルトのインストール環境で静的なテンプレートを使用することはできません。互換性 パッケージをインストールして、お使いの環境にこれらのテンプレートを取得します。

前提条件

アダプティブフォームテンプレート

アダプティブフォームテンプレートは、アダプティブフォームの作成に使用される特定のプロパティとコンテンツ構造を持つ特殊な AEM ページテンプレートです。このテンプレートのレイアウト、スタイル、基本的な初期コンテンツ構造は事前に設定されています。

フォームを作成すると、元のテンプレートのコンテンツ構造に対する変更はフォームに反映されません。

デフォルトのアダプティブフォームテンプレート

AEM QuickStart では、次のアダプティブフォームテンプレートを提供します。

  • 調査テンプレート:複数の列が設定されたレスポンシブレイアウトを使用して、単一ページのアダプティブフォームを作成できます。 フォームを表示させる画面サイズに基づいてレイアウトは自動で調整されます。
  • シンプルな登録テンプレート:ウィザードのレイアウトを使用して複数手順のアダプティブフォームを作成できます。 このレイアウトでは、各手順の完了に必要な式を指定できます。指定した式は、次の手順にウィザードを進める前に検証されます。
  • タブ付き登録テンプレート:タブが左側にあるレイアウトを使用して複数タブのアダプティブフォームを作成し、任意の順序でタブにアクセスできるようにします。
  • 高度な登録テンプレート:複数のタブとウィザードを使用してフォームを作成します。タブが左側にあるレイアウトを使用し、任意の順序でタブにアクセスできるようにします。署名と検証には Adobe Document Cloud eSign サービスを使用します。
  • 空白のテンプレート:ヘッダー、フッター、初期コンテンツのないフォームを作成します。テキストボックス、ボタン、画像などのコンポーネントを追加できます。空白テンプレートでは、AEM サイトページに埋め込むことができるフォームを作成します。

これらのテンプレートでは、sling:resourceType プロパティが、対応するページのコンポーネントに設定されています。ページコンポーネントは、アダプティブフォームのコンテナを含む CQ ページをレンダリングすることでアダプティブフォームをレンダリングします。

次の表では、テンプレートとページコンポーネントの関係を列挙します。

テンプレート

ページコンポーネント

/libs/fd/af/templates/surveyTemplate

/libs/fd/af/components/page/survey

/libs/fd/af/templates/simpleEnrollmentTemplate

/libs/fd/af/components/page/base

/libs/fd/af/templates/tabbedEnrollmentTemplate

/libs/fd/af/components/page/tabbedenrollment

/libs/fd/afaddon/templates/advancedEnrollmentTemplate

/libs/fd/afaddon/components/page/advancedenrollment

テンプレートエディターを使用したアダプティブフォームテンプレートの作成

テンプレートエディターを使用して、アダプティブフォームの構造と初期コンテンツを指定できます。 例えば、すべての作成者が、登録フォーム内でテキストボックスを少なくし、ナビゲーションボタンと送信ボタンを設置するようにできます。作成者が他の登録フォームと統一のとれたフォームを作成できるようにするためのテンプレートを作成できます。AEM テンプレートエディターでは次のことが行えます。

  • 構造レイヤーでフォームのヘッダーおよびフッターコンポーネントを追加できます。
  • フォームの初期コンテンツを提供できます。
  • テーマを指定できます。
  • 送信、リセット、移動などの操作を指定できます。

詳しくは、テンプレートエディターを参照してください。

CRXDE からのアダプティブフォームテンプレートの作成

あらかじめ用意されたテンプレートを使う代わりに、自分でテンプレートを作成してアダプティブフォームの作成に使用することもできます。カスタムテンプレートは、アダプティブフォームのコンテナのほか、ヘッダー、フッターなど、ページ要素を参照するさまざまなページコンポーネントに基づいています。

これらのコンポーネントは Web サイト向けの基本ページコンポーネントを使用して作成することができます。または、あらかじめ用意されたテンプレートで使用されるアダプティブフォームのページコンポーネントを拡張することもできます。

simpleEnrollmentTemplate などのカスタムテンプレートを作成するには、次の手順を実行します。

  1. 自分のオーサーインスタンスで CRXDE Lite に移動します。

  2. /apps ディレクトリの下に、自分のアプリケーションのフォルダー構造を作成します。例えば、アプリケーションの名前が mycompany の場合、その名前のフォルダーを作成します。通常、アプリケーションフォルダーには components、configuration、templates、src、installation のディレクトリが含まれます。この例では、components、configuration、templates の各フォルダーを作成します。

  3. /libs/fd/af/templates フォルダーに移動します。

  4. simpleEnrollmentTemplateノードをコピーします。

  5. /apps/mycompany/templates フォルダーに移動します。右クリックして「貼り付け」を選択します。

  6. 必要に応じて、コピーしたテンプレートノードの名前を変更します。例えば、enrollment-template などに変更します。

  7. /apps/mycompany/templates/enrollment-template に移動します。

  8. jcr:contentノードのjcr:titleプロパティとjcr:descriptionプロパティを変更して、コピーしたテンプレートと区別できるようにします。

  9. 変更したテンプレートのjcr:contentノードには、guideContainerguideformtitleのコンポーネントが含まれています。 guideContainer はアダプティブフォームを格納するコンテナです。guideformtitle コンポーネントは、アプリケーション名や説明などを表示します。

    guideformtitle の代わりに、カスタムコンポーネントまたは parsys コンポーネントを含めることができます。例えば、guideformtitle を削除して、カスタムコンポーネントまたは parsys コンポーネントのノードを含めることができます。コンポーネントの sling:resourceType プロパティの参照先が、そのコンポーネントになっていることを確認してください。ページ component.jsp ファイルでも同様に定義されます。

  10. /apps/mycompany/templates/enrollment-template/jcr:content に移動します。

  11. プロパティ」タブを開き、cq:designPath プロパティの値を /etc/designs/mycompany に変更します。

  12. 次に、cq:Page タイプに /etc/designs/mycompany のノードを作成します。

アダプティブフォームのページコンポーネントの作成

テンプレートの参照先は /libs/fd/af/components/page/base のページコンポーネントに設定されているため、カスタムテンプレートはデフォルトのテンプレートと同じスタイルを持ちます。コンポーネントの参照は、/apps/mycompany/templates/enrollment-template/jcr:content ノードで定義された sling:resourceType プロパティで検索できます。baseはコア製品コンポーネントなので、このコンポーネントを変更しないでください。

  1. /apps/mycompany/templates/enrollment-template/jcr:contentノードに移動し、プロパティsling:resourceTypeの値を/apps/mycompany/components/page/enrollmentpageに変更します。

  2. /libs/fd/af/components/page/base のノードを /apps/mycompany/components/page フォルダーにコピーします。

  3. コピーしたコンポーネントの名前を enrollmentpage に変更します。

  4. (コンテンツページを既に持っている場合のみ)Webサイトの既存の コンポーネントがある場合は、次の手順(a ~ d)を contentpage実行します。自分の Web サイトに contentpage コンポーネントが存在しない場合は、resourceSuperType プロパティを OOTB の基本ページにポイントしたままにすることができます。

    1. enrollmentpageノードの場合、プロパティsling:resourceSuperTypeの値をmycompany/components/page/contentpageに設定します。 contentpage コンポーネントは、自分のサイトの基本ページコンポーネントです。他のページコンポーネントで拡張することができます。enrollmentpageの下にあるhead.jspcontent.jsplibrary.jspを除くスクリプトファイルを削除します。 sling:resourceSuperTypeコンポーネント(この場合はcontentpage)には、このようなスクリプトがすべて含まれます。 ナビゲーションバーやフッターなどを含むヘッダー類は、contentpage コンポーネントから継承されます。

    2. head.jsp ファイルを開きます。

      JSPファイルには<cq.include script="library.jsp"/%3E%60%E8%A1%8C%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%20%20%20%20%20%20%60library.jsp%60%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%81%AF%E3%80%81%60guide.theme.simpleEnrollment%60%20%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%80%81%E3%81%9D%E3%81%AE%E4%B8%AD%E3%81%AB%E3%82%A2%E3%83%80%E3%83%97%E3%83%86%E3%82%A3%E3%83%96%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%20%20%20%20%20%20%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%60enrollmentpage%60%E3%81%AB%E3%81%AF%E6%8E%92%E4%BB%96%E7%9A%84%E3%81%AA%60head.jsp%60%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E3%81%82%E3%82%8A%E3%80%81%E3%81%93%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AF%60contentpage%60%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%60head.jsp%60%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%B8%8A%E6%9B%B8%E3%81%8D%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20%20%201.%20%60contentpage%60%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%60head.jsp%60%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%86%85%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%60enrollmentpage%60%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%60head.jsp%60%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E5%90%AB%E3%82%81%E3%81%BE%E3%81%99%E3%80%82%20%20%201.%20%60content.jsp%60%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E4%B8%AD%E3%81%AB%E3%80%81%E8%BF%BD%E5%8A%A0%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%BE%E3%81%9F%E3%81%AF%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%8C%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%95%E3%82%8C%E3%82%8B%E9%9A%9B%E3%81%AB%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E4%BB%96%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%B8%E3%81%AE%E5%8F%82%E7%85%A7%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%E4%BE%8B%E3%81%88%E3%81%B0%E3%80%81%60applicationformheader%60%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81JSP%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AB%E6%AC%A1%E3%81%AE%E5%8F%82%E7%85%A7%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20%20%20%20%20%20%60%3Ccq:include%20path=?lang=ja"applicationformheader" resourceType="mycompany/components/applicationformheader"/>

      同様に、テンプレートのノード構造に parsys コンポーネントを追加する場合、カスタムコンポーネントも含めます。

アダプティブフォームのクライアントライブラリの作成

新しいテンプレートのenrollmentpageコンポーネントのhead.jspファイルには、クライアントライブラリguide.theme.simpleEnrollmentが含まれています。 デフォルトのテンプレートは、このクライアントライブラリも使用します。これらの方法のいずれかを使用して、新しいテンプレートのスタイルを変更します。

  • カスタムテーマを定義し、デフォルトのテーマ guide.theme.simpleEnrollment をカスタムテーマで置き換えます。
  • /etc/designs/mycompany の下に新しいクライアントライブラリを定義します。JSP ページで、デフォルトのテーマのエントリの後にクライアントライブラリを含めます。このクライアントライブラリに、上書きされたすべてのスタイルと追加のJava Scriptファイルを含めます。
メモ

アダプティブフォームのレンダリングに使用されるページコンポーネントに含まれるクライアントライブラリが、テーマによって参照されます。クライアントライブラリは、主にアダプティブフォームの外観を管理します。

このページ