2010年8月21日

カートに入れるボタンを商品詳細ページ以外に設置する

以前、「Color Me Shop! pro - 助け合い掲示板」 に興味深い記事がありましたので、ちょこっと修正してサンプルのご紹介を。橙色部分は各自修正。
内容は表題どおり、「カートに入れるボタンを商品詳細ページ以外に設置する」。
<form name="product_form" method="post" action="http://secure.shop-pro.jp/?mode=cart_inn">
  購入数:<input type="text" name="product_num" value="1" />
  <input type="submit" value="カートに入れる" />
  <input type="hidden" name="product_id" value="12345678" />
  <input type="hidden" name="user_hash" value="<{$smarty.request.PHPSESSID}>" />
  <input type="hidden" name="members_hash" value="<{$smarty.request.PHPSESSID}>" />
  <input type="hidden" name="shop_id" value="PA01234567" />
  <input type="hidden" name="members_id" value="<{$smarty.session.PA01234567.MembersInfo.customer_id}>" />
  <input type="hidden" name="back_url" value="/" />
</form>
・product_numは、購入数。valueは初期購入数。商品詳細ページ内では独自タグ<{$product.init_num}>が使用可能ですが、他のページでは使用できませんので、直接数字を入れます。
・product_idは、商品詳細ページURLに表示されているとおり、「pid=」以下の数字。
・user_hash、members_hashは、そのままでOK。サーバーがユーザーを認識するための一連のやりとり、というくらいのイメージで。
・shop_idは、カラーミーショップ!プロのメニュー「オーナー情報」内にある「アカウントID」。

実際に試してみると、たしかに機能してそうです。
商品一覧ページに「カートに入れる」ボタンがあると便利よさそうと、思っていたので、これはつかえるかもしれません。それにしても、こんなことができるとは……勉強になりました。


【追記】 input type="hidden"としてサーバに送っているパラメータは、formタグ内の <{$product.info}> を展開したもの。 それゆえに、この独自タグがないと、カートが動かないのです。
【追記】オプションがある場合について、匿名さんが下にコメントを残してくれています。商品詳細ページに飛ばすという方法がシンプルでよいと思います。
カラーミー以外では、モーダルウィンドウで入力させる画面を表示している、カートもあります。

【関連記事】
カラーミーにできること、できないこと

11 コメント:

匿名 さんのコメント...

こんにちは、私も過去ログを見て商品一覧にカートをいれようとしていますが、一覧の場合商品IDの数字入力ができないため、過去ログにあったproduct-idを入れましたがカーとがうまく動きません。一覧ページへの入れ方を教えていただけないでしょうか

管理人 さんのコメント...

商品一覧ページの商品IDの独自タグは、<{$productlist[num].id}>です。

現在では、「カートJS機能」というのがありますので、こっちを使う方が一般的だと思います(やっていることは同じですが、JavaScriptをすこし使えないとダメです)。
参考にどうぞ。 http://shop-pro.blogspot.jp/2011/08/js.html

匿名 さんのコメント...

こんにちは、TOPページお薦め商品にご記載のHTMLタグを設置しましたが、商品によってカート内ページでエラーが出ます。エラーメッセージは「商品情報に誤りがあります。こちらより商品を選び直してください。 」です。
私が見る限りでは正常にカートに入る商品とエラーになる商品に差異はないように思うのですが。。。

product idのvalueは<{$recommend[num].id}>、他はショップidのみ変更してコピペしました。
考えられる要因でも教えて頂ければ助かります。

匿名 さんのコメント...

追伸です。半分だけ自己解決しました。

option設定がある商品でエラーが出ていました。考えれば当たり前のことですね。
TOPページのお薦め商品だと、オプションの選択をも付けると見た目ごちゃごちゃになって逆に改悪になってしまうかな、等どうしようか悩んでいます。

とりあえずご連絡まで。

管理人 さんのコメント...

補足ありがとうございました。
おっしゃるとおり、購入数やオプション選択が必要になるような場合は、向いていないかもしれませんよね。

カートJS機能の中身を読むと、オプションを追加したときに渡しているものが分かると思います。

匿名 さんのコメント...

コメントありがとうございます。
結局、オプションの有無を分岐して、オプション設定の有る商品には商品ページにジャンプするボタンを、無いものはカートに入れるボタンを表示するようにしようかなと編集しています。
カートJSも良く読んでみます。
ありがとうございます。

匿名 さんのコメント...

今晩は。いつもお世話になっています。

上記タグで商品一覧ページにカートボタンを設置しました。back_urlのvalueに
$productlist_prev_page を入れて、前ページにリンクさせようとしましたが
「買い物を続ける」ボタンをクリックでTOPページにリンクしてしまいます。
何が原因か教えて頂ければ幸いです。よろしくお願いします。

管理人 さんのコメント...

以前、助け合い掲示板で似たような質問をみたような気が。回答があるかは分かりませんが。
興味あるので、自分でも調べてみようと思います。

https://shop-pro.jp/wbbs/wbbs.php

追記:私が以前作ったお店のは、back_urlにセットしてきちんと戻ってきてました。
ということは、最初にあやしいのは $productlist_prev_page の中身でしょうかねぇ。
何が入っているか確認されたらどうでしょうか。

匿名 さんのコメント...

レスありがとうございます。
助け合い掲示板は、一応探して待見たのですが。。。。

商品一覧ページに設置のカートボタン経由では $productlist_prev_pageで、TOPページに、そしてなぜか"/"では移動しません。
ちなみに前のページでカートに入れる商品は、どれを入れても変化ありません。

ひょっとして前後のパスが影響している事はあるんでしょうか。前後含めてもう一度見直してみます。

管理人 さんのコメント...

相対パスではなく絶対パスでURLを入れると動いてますよ。

匿名 さんのコメント...

"/"に関しては、現在TOPページの絶対パスを入れてしのいでいますが、前述したように、一覧ページからカートに入れた場合のバックリンクは、当該の一覧ページに戻すようにしたいのですが、今のところ出来ていません。
引き続き、色々探って試してみます。
ありがとうございます。

コメントを投稿