[Tep-j-general] Re: 「E-Mail でお知らせ」で商品名が表示されない

Back to archive index

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*****>




Tep-j-general メーリングリストの案内
Back to archive index