Future ShopというCMSを使用したECサイトのLPを制作する案件があり、
そのLPの中で、特定の商品について、商品ページに飛ばさずに、ボタンを押したら直接カートインする仕様を実現することに。
Future Shopでは、CMSの管理画面の商品一覧ページにて、商品のSKU単位でダイレクトカートインのHTMLコードが発行できる。
しかし、このHTMLコードが、
<form action="https://[ストア名]/fs/[ディレクトリ名]/ToCart.html" method="post">
<input type="hidden" name="goodsNo" value="A1WW-0265">【予約限定12%off】オーガニッククッションコンパクト カラーベース (リフィル&限定ケースセット)※制作中使用不可
<table cellspacing="4" cellpadding="0">
<tr>
<td>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td>カラー</td>
<td> </td>
</tr>
<tr>
<td>ピンク(トーンアップ)</td>
<td>
<input type="radio" name="variation_A1WW-0265" value="17_0"/></td>
</tr>
<tr>
<td>グリーン(ニキビ跡・赤みに)</td>
<td>
<input type="radio" name="variation_A1WW-0265" value="18_0"/></td>
</tr>
<tr>
<td>イエロー(シミ・年齢肌に)</td>
<td>
<input type="radio" name="variation_A1WW-0265" value="19_0"/></td>
</tr>
<tr>
<td>グロー(ツヤ肌を叶える)</td>
<td>
<input type="radio" name="variation_A1WW-0265" value="20_0"/></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>数量<input name="cnt_A1WW-0265" type="text" value="" size="5"></td>
</tr>
</table>
<input type="submit" value="カートへ">
</form>
のようにFORMタグを使う仕様になっており、
LPのボタンデザインに適用するためには、Aタグで置き換えできないかと思い、検索すると、やはりあった。
(2023年2月、上記の記事のやり方をちょっとだけ変えて、管理しやすいコードで以下を更新しました)
<a class="conversion_btn" href="javascript:lp01_01.submit();">購入する<img src="/wp-content/themes/aqua-c/assets/img/2023ss/lp01/cart.png" alt=""></a>
<form method="post" name="lp01_01" action="https://aqua-cosme.com/fs/aquaaqua/ToCart.html">
<input type="hidden" name="goodsNo" value="A1MS-0"><!--商品の品番のデータ-->
<input type="hidden" name="variation_A1MS-0" value="1_0"/><!--商品の持つSKUのバリエーションのデータ-->
<input name="cnt_A1MS-0" type="hidden" value="1"><!--数量-->
</form>
このように、Aタグのリンク指定でJavascriptを呼び、Javascriptのnameで指定したidのFORMタグの情報をPOSTできる。
もし、上記コードで動かない場合は、formタグのidが重複している可能性がある。formのidは重複していると正常に機能しない。
また、コード4行目の、inputタグ内のvalueの指定にも注意が必要だ。
ここのvalueの値が、冒頭で挙げた、futureshopから出力されるコードと違った値や、存在しない値にしても、正常に機能しない。
javascript:form1.submit()
の部分で、FORMタグのNAME情報で指定した”form1″(任意の名前でよい)を呼び出すことで実行できる。
このLPの中の、以下のボタンがその実装部分。