Mineaki Gotoh
gij****@peak*****
2002年 11月 14日 (木) 10:39:36 JST
永田さん、おはようございます。ご指名にあずかりましたので(笑)、ちょっ とやってみました。 今回は、どこにバグがあるのかが、非常に見つけづらく、1時間以上かかっ てしまったのですが、意外なところで見つかりました。ボックス表示の制御 なんかを見てたら、いつまでも見つからなかったでしょう。 まあ、そのついでに、他のバグ(?)も潰せたので、ラッキーという感じです。 具体的に言うと、buy_now という action の動作不良です。buy_nowそのもの がおかしかったので、実は、レビューからだけでなく、商品リストに表示し た「今すぐ購入」ボタンからのカート表示でも、右のボックスはおかしくなっ ていました。もちろん、下の修正で、こっちも自動的に直ります。 catalog/includes/application_top.php 277行目付近 旧) if ($HTTP_GET_VARS['action']) { if (DISPLAY_CART == 'true') { $goto = FILENAME_SHOPPING_CART; $parameters = array('action', 'cPath', 'products_id', 'pid'); } else { $goto = basename($PHP_SELF); $parameters = array('action', 'pid'); } 新) if ($HTTP_GET_VARS['action']) { if (DISPLAY_CART == 'true') { $goto = FILENAME_SHOPPING_CART; $parameters = array('action', 'cPath', 'products_id', 'pid'); } else { $goto = basename($PHP_SELF); if ($HTTP_GET_VARS['action'] == 'buy_now') { $parameters = array('action', 'pid', 'products_id'); } else { $parameters = array('action', 'pid'); } } 319行目付近 旧) case 'buy_now' : if (tep_has_product_attributes($HTTP_GET_VARS['products_id'])) { tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id'], 'NONSSL')); } else { $cart->add_cart($HTTP_GET_VARS['products_id'], 1); tep_redirect(tep_href_link($goto, tep_get_all_get_params(array('action')), 'NONSSL')); } break; 新) case 'buy_now' : if (tep_has_product_attributes($HTTP_GET_VARS['products_id'])) { tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id'], 'NONSSL')); } else { $cart->add_cart($HTTP_GET_VARS['products_id'], $cart->get_quantity($HTTP_GET_VARS['products_id'])+1); tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters), 'NONSSL')); } break; いずれも、本家のコードを移植しただけです。 パラメータ(products_id)の渡し方の問題でしたね。 これで、右側のボックスそのものの表示が変更になります。 ついでに、カートに追加するときに、個数が+1されるようになってます。私 自身、変な動作だと思っていたので、修正されて納得です。そうなると、当 然、buy_now だけでなく、add_productも修正する必要があり、 旧) case 'add_product' : if (ereg('^[0-9]+$', $HTTP_POST_VARS['products_id'])) { $cart->add_cart($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['cart_quantity'], $HTTP_POST_VARS['id']); GIJ Patched from 本家 } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters), 'NONSSL')); break; 新) case 'add_product' : if (ereg('^[0-9]+$', $HTTP_POST_VARS['products_id'])) { $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+1, $HTTP_POST_VARS['id']); } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters), 'NONSSL')); break; としておいた方が良いでしょう。 -- 株式会社PEAK ネットワーク技術担当 後藤 <gij****@peak*****>