複数ステップのフォーム作成とHTMLメールを送ってみよう

このハンズオンでは、複数ステップのフォーム作成と、Ver.2.9よりSite2018テーマのお問い合わせフォームのデフォルト設定になったHTMLメールについて学習していきます。

このハンズオンで行うこと

  • 複数ステップフォームの作成では、現在すでにテーマ内に用意されている「お問い合わせ情報」と「お客様情報」を分割して複数ステップのフォームを作成する
  • HTMLメールでは必要な設定をしてすこしHTMLとスタイルを修正する

HTMLメールのテンプレートはsite2018テーマにありますので、このハンズオンではsite2018テーマをベースに解説していきます。(beginner2018テーマをお使いの方はテーマの変更をしなくてもファイルがあれば同じ手順でできます。site2018テーマの中から移動する必要があるファイルについては手順と合わせて順番に解説していきます)

複数ステップフォームの作成

以下の流れで複数ステップフォームを作成する方法についてお伝えしていきます。

  • input.htmlの分割
  • step.htmlでステップを追加
  • main.htmlでステップを追加
  • takeoverの記述を追加

完成図


a-blog cms Ver. 2.1.0 public βを公開しました

a-blog cms Ver. 2.1.0 public β

a-blog cmsの時期バージョンであるa-blog cms Ver. 2.1.0のパブリックベータをダウンロード出来るようにしました。 このバージョンは開発版になりますので、運用中のサイトにはインストールしないで下さい。

ブログのカスタムフィールド

ブログの管理画面にカスタムフィールドを作って、独自の情報を持たせることができます。テキスト、画像、ファイルなどブログ毎に項目が作れます。


ブログのカスタムフィールド画面

ブログのカスタムフィールド画面


ブログのカスタムフィールドはブログ管理のカスタム設定タブにあります。カスタムフィールドを追加するには以下のファイルを利用中のテーマフォルダに置いてください。

/themes/利用中のテーマ/admin/blog/field.html

ブログのカスタムフィールドを作る

/themes/利用中のテーマ/admin/blog/field.html にサイトの説明を入力するカスタムフィールドを追加してみましょう。

<input type="text" name="siteDescription" value="{siteDescription}" class="acms-form-width-full" />
<input type="hidden" name="field[]" value="siteDescription" />

サイトに表示させる

ブログのカスタムフィールドはBlog_Fieldモジュール、Entry_BodyやEntry_SummaryモジュールのblogFieldブロック内で使うことができます。

Blog_Fieldモジュールで表示

<!-- BEGIN_MODULE Blog_Field -->
<p>{siteDescription}</p>
<!-- END_MODULE Blog_Field -->

Entry_BodyやEntry_SummaryモジュールのblogFieldブロック内で表示

モジュールIDの設定して、entry:loop内にblogFieldブロックを記述してください。

<!-- BEGIN_MODULE Entry_Summary id="testID" -->
<!-- BEGIN unit:loop -->
<!-- BEGIN entry:loop -->

<!-- BEGIN blogField -->
<p>{siteDescription}</p>
<!-- END blogField -->

<!-- END entry:loop -->
<!-- END unit:loop -->
<!-- END_MODULE Entry_Summary -->

Entry_BodyやEntry_Summaryモジュールでブログのカスタムフィールドの情報を出すときはモジュールIDの表示設定にカスタムフィールド ブログフィールドにチェックをしてください。


モジュールのブログフィールド出力設定

モジュールのブログフィールド出力設定

@extendsを使った管理画面のカスタマイズ

Ver.2.9より、@extends機能がさらに拡張され、@sectionの入れ子ができるようになりました。このハンズオンでは、この入れ子を利用して普段記事を書く時に利用するエントリーの編集画面を拡張してみましょう。ハンズオンにはsite2018テーマを使用します。

このハンズオンで行うこと

  1. エントリー編集画面の余分な項目を取り除く
  2. エントリー編集画面の時刻選択にTimepickerを導入する
  3. 管理メニューからいらない項目を取り除く

1. エントリー編集の余分な項目を取り除く

エントリーを作成する場合、カテゴリーの登録やタグの登録が必要ない場合があります。そういった余計なUIを編集画面から取り除いてみましょう。 site2018テーマに /admin/entry/edit.htmlを作成し、以下のように記述します。エントリーの新規追加はapplyブロック、既存のエントリーの編集はreapplyブロックに記述されているので、それにあわせて@sectionもapplyとreapplyに分けて記述する必要があります。

@extends("/admin/_layouts/entry/edit.html")

@section("apply-category")
@endsection

@section("apply-sub-category")
@endsection

@section("apply-tag")
@endsection

@section("reapply-category")
@endsection

@section("reapply-sub-category")
@endsection

@section("reapply-tag")
@endsection

以下のように、カテゴリーとタグなどの登録UIが編集画面からなくなっていれば成功です。

2. エントリー編集画面の時刻選択にTimepickerを導入する

エントリー編集画面のデフォルトの時刻登録はhh:mm:ss形式で手入力で入力する必要があり、Webに不慣れなユーザーにとっては入力のハードルが少し高めです。そこで、管理画面のhtmlを拡張して、ここにjQueryのTimepickerプラグインを以下の手順で導入してみましょう。

  1. Timepickerプラグインの利用
  2. site2018テーマの直下にadmin.htmlを追加し編集
  3. site2018テーマで読み込まれるCSSとJavaScriptを編集

1. Timepickerプラグインの利用

site2018/js/timepicker.jsを用意し、以下のように記述します。

$(function() {
  $('#entryTime').timepicker({
    timeFormat: 'hh:mm:ss',
    interval: 30,
    minTime: '10',
    maxTime: '6:00pm',
    startTime: '10:00:00',
    dynamic: false,
    dropdown: true,
    scrollbar: true
  })
});

2. site2018テーマの直下にadmin.htmlを追加し編集

@extends("/_layouts/admin.html")

@section("admin-css")
@parent
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.css">
@endsection

@section("admin-js")
@parent
<script src="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js"></script>
<script src="/js/timepicker.js"></script>
@endsection

3. site2018テーマで読み込まれるCSSとJavaScriptを編集

次に、include/head/js.htmlに以下の記述し必要なscriptを追加します。

<script src="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js"></script>
<script src="/js/timepicker.js"></script>

include/head/link.htmlも追記して必要なlinkを追加しましょう

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.css">

下のような結果になっていれば成功です。

3. 管理メニューからいらない項目を取り除く

管理画面のバーティカルメニューにも運用しているサイトによってはいくつかいらない項目があると思います。例えばタグの項目がいらなかったり、カートの項目がいらなかったり。いらない項目を減らして、利用しているユーザーに必要なメニューだけを表示してみましょう。

site2018テーマの直下にadmin.htmlを設置して以下のように記述します。

@extends("/_layouts/admin.html")

@section("admin-menu-others-publish")
@endsection

@section("admin-menu-others-app")
@endsection

@section("admin-menu-entry-tag")
@endsection

@section("admin-menu-entry-approval")
@endsection

@section("admin-menu-site-approval")
@endsection

@section("admin-menu-site-schedule")
@endsection

@section("admin-menu-site-cart")
@endsection

@section("admin-menu-site-shop")
@endsection

@section("admin-menu-site-comment")
@endsection

余談

@sectionを使ってカスタマイズできる管理画面のテンプレートはこの限りではありません。 systemテーマの、/_layouts/直下と、/admin/_layouts/直下に拡張元のテンプレートがいくつか設置していますので、必要に応じて、管理画面を拡張してみてくださいね。