この記事は A-Form Advent Calendar 2019 参加記事です。
A-Formを簡易ショッピングカートのように扱い、複数の商品をカートに入れてフォームでお問い合わせをする、というちょっとトリッキーな機能を実装してみたので、その話を書きたいと思います。
まず、全体的にどのような動きになるかを確認します。
図にしたものは下記から確認できます。
クリックで拡大
AFormCartプラグインを作りましたので、そのインストールをします。
A-Formは既にインストールしてある前提として、
MTインストールディレクトリ/plugins/AFormCart/ および、mt-static/plugins/AFormCart/ へのファイルアップロードをします。
フォームを新規に作成します。今回はフォームの内容は極単純にしておきます。
| 項目 | パーツ | 必須 | 備考 |
|---|---|---|---|
| 氏名 | 氏名 | Yes | |
| メールアドレス | メールアドレス | Yes | |
| 電話番号 | 電話番号 | Yes | |
| 個人情報保護方針 | 個人情報保護方針 | Yes | |
| CSRFトークン | 外部パラメータ | Yes | パラメータ名=token |
クリックで拡大
詳細設定タブからフォームの状態を有効にして、「簡易カートで利用する」フラグをONにしておきます。
クリックで拡大
(2)~(4)はいつものMT実装で用意します。
商品情報は下記のようにコンテンツタイプ(もしくはカスタムフィールド)で用意したとします。
| 項目 | 名前 | 型 | 必須? |
|---|---|---|---|
| 商品名 | Title | テキスト | Yes |
| 商品説明文 | Body | テキスト(複数行) | |
| 概要 | Summary | テキスト(複数行) | |
| 画像 | image | 画像アセット | |
| カテゴリ | Folders | カテゴリ | |
| 金額 | Price | 数値 | Yes |
※今回はMT7のコンテンツタイプで作ったので商品IDは「データ識別ラベル」を使いました。
実際に入れた内容の例:クリックで拡大
ちなみに、この画像は 自分で作ったプラモデルに塗装してデカールを貼り付けたもの です:)
あとは、商品詳細で「cart_btn.js」のJSファイルを読み込んでおきます。"#js-cart"の data-id には商品IDを、data-backend には _backend へのURLを指定します。
バックエンドではSlim3フレームワークを使った小さいPHPプログラムが入ります。AFromCartから提供します。
カートには商品IDと数量のみが入ります。それ以外の商品情報は、MTから出力したJSONを使ってカートの中身を表示します。
クリックで拡大
[[aform002]]にて、個人情報入力画面を表示します。
確認画面でカートに入っている商品一覧を表示することができます。
クリックで拡大
メール文中には「外部パラメータ」パーツとして組み込んだ位置に、カートの商品情報が入ります。
テスト様 この度は、ご利用頂きまして誠にありがとうございます。 お客様からのメールは確かに受信致しました。 氏名:竹村テスト メールアドレス:takemura@ark-web.jp 電話番号:0352503221 個人情報保護方針:同意する ご注文内容: --------------------------- 商品名: サンプル商品1 税抜き価格: 5,000 円 税込み価格: 5,400 円 注文数: 1 ---------------------------- 合計 : 5,400 円(税込み価格) ※上記の商品代金には送料・代引き手数料は含まれておりません。 -- テスト オンラインストア
フォームでお問い合わせを受け付ける機能+αで色々なことができると思います。今回は複雑にしないよう絡めませんでしたが、クレジットカード決済なども組み込めば実現できます。
「A-Formでこういうことできますか?」などのご質問がありましたら、弊社ウェブサイトのMTプラグイン お問い合わせフォームにて受け付けています。
A-シリーズに関するご相談・お問い合わせ: https://www.ark-web.jp/movabletype/contact/