質問 > フロント機能 > 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tonton |
投稿日時: 2009/5/7 19:22
対応状況: −−−
|
仙人 登録日: 2008/8/14 居住地: 投稿: 437 |
商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? いつもお世話になり、ありがとうございます。
すみません、また1つ質問させてください。 商品の注文ページから注文フォームにユーザーの入力欄をいくつか追加したいのですが、どのようにしたらいいでしょうか? 商品ページで、個数や規格のほかに、ユーザーから、サイズとコメントをテキスト入力してもらい、それを注文情報の他の項目と一緒に引き連れて、確認メールで送信したい(つまり通常の注文処理で送るデータに、詳細ページで項目追加し入力されたフォームの情報も持って行きたい)のですが、いくつか試行錯誤してみたものの、お問い合わせフォームのように簡単にはいかず、ずっと悩んでします・・・ 実装された方のアドバイス、フォーラムのこの辺にあったよ、などの情報などいただけると、大変うれしいです。(フォーラム検索もかなりしてみたのですが、見つけられなかったので、ほとほと困り中です;) よろしくお願いします。 バージョンは、2.4RC1、ポスグレ8、php5.2です。 |
seasoft |
投稿日時: 2009/5/7 19:35
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? 私どもでは、名入れ商品を扱う企業サイトで、同様の仕様を取り扱いました。
基本的に既存項目を使いまわすと楽して実装できますよ。私どもでは、規格2を拡張して実装しました。管理画面でも表示できます(編集対応は少々面倒です)。
|
tonton |
投稿日時: 2009/5/12 23:28
対応状況: −−−
|
仙人 登録日: 2008/8/14 居住地: 投稿: 437 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? seasoft様
いつもアドバイスありがとうございます。 色々試してみたのですが、やはり私の手にはおえそうにありませんでした。 もう少し時間ができたら、また、再トライしてみようと思います。 それで、仕方なく、規格の登録で対応しようとしたら、新たな問題に見舞われました。 ユーザーに入力してもらおうとしていたサイズを縦横それぞれ規格にしたのですが、そうすると結構な数の規格になりました。 で、何とか登録を終え、さて、商品に適用、と思ったら、IEでは、6も7も読み出しで詰まって、フリーズしてしまい、規格情報を読み出せないバグ(?)に遭遇してしまいました。 WINDOWSでFIREFOXやoperaでは大丈夫のようです。 IEは管理画面のヘッダーを読み出したところで完全に固まってしまい、黒い背景のみの状態です。 う〜ん。。。困りました。 |
seasoft |
投稿日時: 2009/5/12 23:33
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? どの画面から、どの画面を開いたときに、その症状が発生しますか?
たとえば、商品マスタから[規格]を押下したときなど。
|
seasoft |
投稿日時: 2009/5/12 23:36
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? あと、ざっくりとした規模を知りたいので、下記 SQL の結果を教えていただけますか?
SELECT count( * ) FROM dtb_class UNION SELECT count( * ) FROM dtb_classcategory
|
tonton |
投稿日時: 2009/5/13 1:11
対応状況: −−−
|
仙人 登録日: 2008/8/14 居住地: 投稿: 437 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? seasoft様
>あと、ざっくりとした規模を知りたいので、下記 SQL の結果を教えていただけますか? クラスが2、クラスカテゴリーが198です。 今回実装したかったのは、縦×横のサイズ入力で、20mmずつを2メーターほどにわたってサイズ展開する必要があるので、結構な数になりました。いくつくらいから読み出しできないのかは、ちょっと不明ですが・・・FIREFOXでは読み出しできるとはいうものの、かなり動作は重いです。 規格登録でやってみたものの、処理の重さなども考えると、やはりサイズをテキストエリアで入力してもらい、カートへ引き回していくのが、一番現実的かな、、、と痛感しました。 (しかし、できない・・・ううっ。。。T_T) 数量の入力処理から数の増減と在庫の連動処理を除いたような処理イメージでいるのですが、detail.phpからcart/index.phpへフォームの入力データを渡すルートと処理内容がどうしても追いきれないのです。 かなり手詰まりになってしまい、弱りました。 何かもう少し実用的な方法があればいいのですが・・・はぁ。 |
seasoft |
投稿日時: 2009/5/13 1:42
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? > クラスが2、クラスカテゴリーが198です。
思ったより少ないなぁ・・・ と一瞬思いましたが、ちがう。 掛け合わせだから、約1万通りですね。 たしかに、キツイかも。 管理画面は隠しフィールドを使って誤魔化すことは出来そうですが、いずれフロントの読み込み時間に影響がありそうです。 ちなみに、モバイル対応ですか?
|
tonton |
投稿日時: 2009/5/13 14:31
対応状況: −−−
|
仙人 登録日: 2008/8/14 居住地: 投稿: 437 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? seasoft様
>ちなみに、モバイル対応ですか? モバイル対応です。 規格でやるには現実的ではないので、再度フォームに挑戦しています。 ですが、 1) /data/class/pages/products/LC_Page_Products_Detail.php の $objCartSess->addProduct(array($_POST['product_id'], $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity')); ここへ、detail.tplにinputで設けたフォームのテキスト入力欄に設定した変数($size)をセットして、 2) /data/class/SC_CartSession.php の // カートへの商品追加 function addProduct($id, $quantity, $campaign_id = "") { (省略) } ここへ、その変数($size) を追加してみました。また、そのあと、cart/index.tplに、quantityと同じように、値がカートの一覧で表示されるように<!--{$arrProductsClass[cnt].size}-->と記載してみましたが、cart/index.phpを読み出しても、追加したフォームの値は読み出されておらず、cart/index.phpでは、var_dump($size);としても、nullが返されてきてしまいました。 この間で、フォームの値がどうやって引き継いで持ってこれるのかが、色々試してみてもわかりません。 何か良い方法はありませんでしょうか・・・? お力をお貸しいただけると本当に助かります。 いつもお世話ばかりお掛けして恐縮ですが、よろしくお願いします。 |
seasoft |
投稿日時: 2009/5/13 14:39
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? > モバイル対応です。
なるほど。なかなか大変そうですね。 私は、SC_CartSession#addProduct の第一引数 $id の次元数を拡張する方法で実装しました。 属性のような形で、ぶら下げるのも考えたのですが、それだと商品の追加処理に支障がありました。 重要なのは、セッション変数を意識することだと思います。
|
tonton |
投稿日時: 2009/5/14 11:01
対応状況: −−−
|
仙人 登録日: 2008/8/14 居住地: 投稿: 437 |
Re: 商品詳細ページの注文フォームに入力欄を追加するにはどうしたらいいでしょうか? 色々教えていただいているのに、自身の力が付いていかず、恐縮です。
ほとほと、困ってしまいました; seasoftさんからのアドバイスを元に、 再度ソースを見直し、やってみたことを記します。 下記の部分の変更を行いましたが、商品詳細ページから追加入力したフォーム情報のカートのページへの持越しができません。 間で何か抜けているのか、記述位置内容が悪いのか、原因が分からず詰まっています。 1)detai.tplに フォームの規格入力を参考に、サイズ指定用のinputを追加。 <input type="text" name="size_width" style="<!--{$arrErr.size_width|sfGetErrorColor}-->" class="box54" /> <input type="text" name="size_height" style="<!--{$arrErr.size_height|sfGetErrorColor}-->" class="box54" /> 2)LC_Page_Products_detail.php L182あたり case 'cart': // 入力値の変換 $this->objFormParam->convParam(); $this->arrErr = $this->lfCheckError(); if(count($this->arrErr) == 0) { $objCartSess = new SC_CartSession(); $classcategory_id1 = $_POST['classcategory_id1']; $classcategory_id2 = $_POST['classcategory_id2']; この下に、 $size_width = $_POST['size_width']; $size_height = $_POST['size_height']; 2行追加。その6行ほどしたの、L202あたり、 $objCartSess->addProduct(array($_POST['product_id'], $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity')); に$size_width, $size_heightを追加。 $objCartSess->addProduct(array($_POST['product_id'], $classcategory_id1, $classcategory_id2, $size_width, $size_height), $this->objFormParam->getValue('quantity')); 3)SC_Helper_DB.php L339あたり $objPage->arrProductsClass[$cnt] = $arrData; $objPage->arrProductsClass[$cnt]['quantity'] = $quantity; この下に、 $objPage->arrProductsClass[$cnt]['size_width'] = $size_width; $objPage->arrProductsClass[$cnt]['size_height'] = $size_height; を追加。 4)cart/indec.tplには、 表示用にL65あたりに、 <td><!--{$arrProductsClass[cnt].size_width}--><br /><!--{$arrProductsClass[cnt].size_height}--></td> を追加。(THなどは、あとで調整予定) $_POSTを追いかけて、この4点を追加・変更してみたのですが、何か間違いor抜けがありますでしょうか? |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |