カート機能を使ってカタログ請求作成

商品をカートに入れて注文をするカート機能を利用して、無料の資料請求が行えるフォームを作成します。ユーザーが欲しい資料の部数を選んでリクエストします。


事前準備


小ブログを作成し、その中で実装します。
作成した小ブログのテーマを用意する必要があります。標準で用意されているテーマ /themes/cart@blog2016/を継承した、xxx@cart@blog2016(xxxは任意に)フォルダを用意しておきます。
テーマ設定にて、xxx@cart@blog2016を設定します。

カート機能を有効にする


作成した小ブログの管理ページ > カート よりカート機能を有効に設定します。
今回の例では、実際に印刷されている資料には部数があるものとして、部数以上のリクエストには応えられないようにします。そのため、在庫管理を有効にしておきます。
無料の資料請求にしますので、送料、手数料がある項目は全て0にします。消費税率はそのままで問題ありません。


フォームIDを設定する


cart@blog2016ではテンプレートファイルにフォームIDとして「order」を記述しています。そのまま試す場合はorderの名前でフォームIDを作成しておきます。
メールテンプレートは/mail/order/の中に用意してあります。下記のように設定します。


SubjectTpl /mail/order/subject.txt
BodyTpl /mail/order/body.txt
From 任意のメールアドレス
AdminSubjectTpl /mail/order/adminSubject.txt
AdminBodyTpl /mail/order/adminBody.txt
AdminTo 任意のメールアドレス

エントリーを作成する

会社案内、製品パンフレットなど、扱う資料ごとにエントリーを作成します。
注意点として、カート機能を流用している関係上総額が0円だと決済にならないため正常に資料請求ができません。ダミーの価格を記入して登録してください。

カート用のカスタムフィールドは次の場所にファイルが用意されています。
/themes/cart@blog2016/admin/entry/field_foot.html
色選択、サイズは不要です。価格(item_price)は1円(ダミー価格)、在庫数は任意の数字(1以上)、規定外の送料(item_except)は空欄とします。

    <table class="entryFormTable acms-form">
    	<tr>
    		<th>商品名(必須)</th>
    		<td>
    			<input type="text" name="item_name" value="{item_name}" size="40" />
    			<input type="hidden" name="field[]" value="item_name" />
    			<input type="hidden" name="item_name:v#required" id="validator-item_name-required" />
    			<label for="validator-item_name-required" class="validator-result-{item_name:validator#required}">
    				商品名を入力してください。
    			</label>
    		</td>
    	</tr>
    	<tr>
    		<th>在庫数</th>
    		<td>
    			<input type="text" name="item_stock" value="{item_stock}" size="14" />
    			<input type="hidden" name="field[]" value="item_stock" />
    		</td>
    	</tr>
    </table>
    <input type="hidden" name="item_price" value="1" />
    <input type="hidden" name="field[]" value="item_price" />
    <input type="hidden" name="item_except" value="" />
    <input type="hidden" name="field[]" value="item_except" />

フォームのテンプレート調整

  • 入力をさせる必要がないフォーム項目はinput type="hidden"にしてデフォルト値をPOSTするように修正する
  • 記入者=発送先でよいため「お届け先のご住所」は「お客様のご住所と同じ」の値にし、項目自体を非表示にする
  • 価格や発送方法の項目は見た目に不要なので非表示にする

注意点

カートのフォームでは、商品と数の登録 → 住所の登録 → 配送支払い方法の選択 → 確認 → 完了 とページ遷移をしてお買い物のフローが流れます。今回の資料請求では「配送支払い方法の選択」のステップが不要になります。このページでは個人情報の同意をもとめるページとしてページを使用してください。

課題

「会社案内」「製品パンフレット」のエントリーを作成しておきます。「会社案内」を1部、「製品パンフレット」5部を資料請求フォームから送信し、メールを受信して注文内容が確認できるところまで実施してください。

URLコンテキストの表示制御

URLの例を上げて実際の動きをご紹介します。

コンテンツを指定するコンテキスト

ブログコード、カテゴリーコード、エントリーコードなどの情報(=コンテンツの情報)から、どの情報を表示するか指示が可能です。指示した内容に合わせて、テンプレートに設置しているモジュールの表示結果を制御します。

http://www.example.com/というドメインで、「appleple」というブログコードのトップページを表示するためには以下のようなURLになります。

<!-- トップのテンプレートが使用される -->
http://www.example.com/appleple/

http://www.example.com/というドメインで、「appleple」というブログコードかつ、「news」というカテゴリーの一覧を表示するためには以下のようなURLになります。

<!-- 一覧のテンプレートが使用される -->
http://www.example.com/appleple/news/

http://www.example.com/というドメインで、「appleple」というブログコードかつ、「news」というカテゴリーに存在する「entry-1.html」という一記事を表示するためには以下のようなURLになります。

<!-- 詳細のテンプレートが使用される -->
http://www.example.com/appleple/news/entry-1.html

http://www.example.com/というドメインで、ルートブログ内に存在する「news」というカテゴリーの「campaign」という子カテゴリーの一覧を表示するためには以下のようなURLになります。

<!-- 一覧のテンプレートが使用される -->
http://www.example.com/news/campaign/

状況を指定するコンテキスト

キーワードやタグによる検索、日付、ページなどの情報(=状況の情報)が含まれていた場合にも、モジュールの表示結果に影響し、絞り込んだ情報を表示できます。

2ページ目を表示する場合には以下のようなURLになります。

<!-- 一覧のテンプレートが使用される -->
http://www.example.com/news/campaign/page/2/

「2014年1月」を表示する場合には以下のようなURLになります。

<!-- 一覧のテンプレートが使用される -->
http://www.example.com/news/campaign/2014/01/

Mautic と a-blog cms の連携についての実装

2015年くらいから a-blog cms のサイト上で Mixpanel を利用していることもあり、勉強会で何度か紹介をしてきましたが、この秋くらいからオープンソースの Mautic の注目度が上がってきています。

そこで、今回は a-blog cms site2016 のテーマに実装する方法を紹介します。お問い合わせフォームを使ったハンズオンになりますので、SMTP等の設定が必要です。したがって、このハンズオンは自分のブログや自社サイト等でお試しいただくことをお勧めします。

1. Mautic のユーザー登録をする

Mautic Cloud Free であれば無料で利用が可能です。

Mautic Cloud Free を申し込む

2. 全てのページに以下のタグを追加する

テスト環境か、ご自身のサイトに以下のようなタグを </ body> の前に追加します。

<script>
(function(w,d,t,u,n,a,m){w['MauticTrackingObject']=n;
    w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)},a=d.createElement(t),
    m=d.getElementsByTagName(t)[0];a.async=1;a.src=u;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://@@server@@.mautic.net/mtc.js','mt');
mt('send', 'pageview');
</script>

3. contact のページのみ タグを改良する

thanks.html の記述のみ以下のようにカスタマイズします。

<script>
(function(w,d,t,u,n,a,m){w['MauticTrackingObject']=n;
    w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)},a=d.createElement(t),
    m=d.getElementsByTagName(t)[0];a.async=1;a.src=u;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://@@server@@.mautic.net/mtc.js','mt');
mt('send', 'pageview'<!-- BEGIN_MODULE Form --><!-- BEGIN step#result -->, {
    'email': '{email}',
    'firstname': '{name}[split(" ",1)]',
    'lastname': '{name}[split(" ",0)]',
    'zipcode': '{postal-code}',
    'state': '{address-level1}[ken]',
    'city': '',
    'address1': '{address}[split("\n",0)|delnl]',
    'address2': '{address}[split("\n",1)|delnl]',
    'phone': '{tel}',
    'company': '{organization}',
    'contactdate': '%{NOW_DATE}',
    'contacttitle': '{description}',
    'contactinquiry': '{inquiry}[delnl]'
    }
<!-- END step#result --><!-- END_MODULE Form -->);
</script>

4. 校正オプションを追加します

都道府県が a-blog cms site2016 では、日本語で保存されていますが、Mautic ではアルファベットになっています。この部分を変換する校正オプションを作ってみましょう。

/php/ACMS/User/Corrector.php に以下を追加します。

    public static function ken($txt)
    {
        $ken['北海道'] = "Hokkaido";
        $ken['青森県'] = "Aomori";
        $ken['岩手県'] = "Iwate";
        $ken['宮城県'] = "Miyagi";
        $ken['秋田県'] = "Akita";
        $ken['山形県'] = "Yamagata";
        $ken['福島県'] = "Fukushima";
        $ken['茨城県'] = "Ibaraki";
        $ken['栃木県'] = "Tochigi";
        $ken['群馬県'] = "Gunma";
        $ken['埼玉県'] = "Saitama";
        $ken['千葉県'] = "Chiba";
        $ken['東京都'] = "Tokyo";
        $ken['神奈川県'] = "Kanagawa";
        $ken['新潟県'] = "Niigata";
        $ken['富山県'] = "Toyama";
        $ken['福井県'] = "Fukui";
        $ken['山梨県'] = "Yamanashi";
        $ken['長野県'] = "Nagano";
        $ken['岐阜県'] = "Gifu";
        $ken['静岡県'] = "Shizuoka";
        $ken['愛知県'] = "Aichi";
        $ken['三重県'] = "Mie";
        $ken['滋賀県'] = "Shiga";
        $ken['京都府'] = "Kyoto";
        $ken['大阪府'] = "Osaka";
        $ken['兵庫県'] = "Hyogo";
        $ken['奈良県'] = "Nara";
        $ken['和歌山県'] = "Wakayama";
        $ken['鳥取県'] = "Tottori";
        $ken['島根県'] = "Simane";
        $ken['岡山県'] = "Okayama";
        $ken['広島県'] = "Hiroshima";
        $ken['山口県'] = "Yamaguchi";
        $ken['徳島県'] = "Tokushima";
        $ken['香川県'] = "Kagawa";
        $ken['愛媛県'] = "Ehime";
        $ken['高知県'] = "Kochi";
        $ken['福岡県'] = "Fukuoka";
        $ken['佐賀県'] = "Saga";
        $ken['長崎県'] = "Nagasaki";
        $ken['熊本県'] = "Kumamoto";
        $ken['大分県'] = "Oita";
        $ken['宮崎県'] = "Miyazaki";
        $ken['鹿児島県'] = "Kagoshima";
        $ken['沖縄県'] = "Okinawa";

        return $ken[$txt];
    }

5. 日本語化しましょう


ログインすると初期段階では画面は英語で表示されます。


画面の右上の歯車アイコンをクリックすると「Congifguration」という項目があります。クリックして設定を変更しましょう。


以下の2つを変更してください。そして、一度ログアウトしてから、再度ログインしてみてください。これで画面が日本語化されます。


Default language Japanese
Default timezone Tokyo

6. Mautic のカスタムフィールドの設定を変更する

画面の右上の歯車アイコンをクリックすると「カスタムフィールド」という項目があります。ここから上記のサイトからの情報で上書きしていい項目について「パブリックに変更可能」を(はい)に設定してください。

3. の thanks.html で追加した項目が対象です。 この作業をしないとデータが書き込まれませんので、注意してください。


7. あとは Mautic で何ができるのかを勉強しましょう

連携部分は、これだけの作業で完了になります。

あとの活用については、皆さん次第です。

モジュールが出力する変数の表示を加工したい

説明

a-blog cmsでは、各モジュールがそれぞれ出力する変数(情報)の内容を、指定した規則にしたがって加工・編集することができます。

回答

校正オプション:リファレンス」を参考に、表示する変数の後ろに校正オプションの記述を追加してください。

校正オプションは変数の内容を、最終的に出力する前に指定した内容で変換します。以下に例として一部を示します。

数字のカンマ区切り : [number_format] 数字を千位毎にカンマ区切りにします

改行をHTMLに変換 : [nl2br] 改行コードを <br /> に変換します

一行をリストのHTMLに変換 : [list] 一行ごとに <li> ~ </li> に変換します