[Tep-j-general] 商品を検索後の移動ができない(管理画面)

Zurück zum Archiv-Index

Mineaki Gotoh gij****@peak*****
2002年 11月 10日 (日) 21:05:23 JST


自己レスですが、ちょっとだけ補足しておきます。

まず、diffについて、対象となるファイル名を書き忘れましたが、
admin/categories.php です。


それと、本家のコードでも、まだ不具合があり、検索でカテゴリーもヒット
した場合、一番上のカテゴリーの操作がうまく行きません。(大した不具合
でもないんですが)

本来、本家に投稿すべき種類のものですが、一応、それも含めた修正コード
を、-cオプション付きで載せておきます。(admin/categories.php は、カス
タマイズされている可能性が高いスクリプトなので、あえて-c付にしました)

簡単な動作確認だけしてあります。



*** tamura/admin/categories.php	Fri Jul 19 15:19:02 2002
--- peak/admin/categories.php	Sun Nov 10 20:47:50 2002
***************
*** 660,665 ****
--- 661,670 ----
        $categories_count++;
        $rows++;
  
+ // Get parent_id for subcategories if search 
+       if ($HTTP_GET_VARS['search']) $cPath= $categories['parent_id'];
+       if ( ! isset( $tmp_top_cPath ) ) $tmp_top_cPath = $cPath ;
+ 
        if ( ((!$HTTP_GET_VARS['cID']) && (!$HTTP_GET_VARS['pID']) || (@$HTTP_GET_VARS['cID'] == $categories['categories_id'])) && (!$cInfo) && (substr($HTTP_GET_VARS['action'], 0, 4) != 'new_') ) {
          $category_childs = array('childs_count' => tep_childs_in_category_count($categories['categories_id']));
          $category_products = array('products_count' => tep_products_in_category_count($categories['categories_id']));
***************
*** 691,697 ****
  
      $products_count = 0;
      if ($HTTP_GET_VARS['search']) {
!   	  $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . $languages_id . "' and p.products_id = p2c.products_id and pd.products_name like '%" . $HTTP_GET_VARS['search'] . "%' order by pd.products_name");
      } else {
        $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . $languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = '" . $current_category_id . "' order by pd.products_name");
      }
--- 688,694 ----
  
      $products_count = 0;
      if ($HTTP_GET_VARS['search']) {
!   	  $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . $languages_id . "' and p.products_id = p2c.products_id and pd.products_name like '%" . $HTTP_GET_VARS['search'] . "%' order by pd.products_name");
      } else {
        $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . $languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = '" . $current_category_id . "' order by pd.products_name");
      }
***************
*** 699,704 ****
--- 696,704 ----
        $products_count++;
        $rows++;
  
+ // Get categories_id for product if search 
+       if ($HTTP_GET_VARS['search']) $cPath=$products['categories_id'];
+ 
        if ( ((!$HTTP_GET_VARS['pID']) && (!$HTTP_GET_VARS['cID']) || (@$HTTP_GET_VARS['pID'] == $products['products_id'])) && (!$pInfo) && (!$cInfo) && (substr($HTTP_GET_VARS['action'], 0, 4) != 'new_') ) {
  // find out the rating average from customer reviews
          $reviews_query = tep_db_query("select (avg(reviews_rating) / 5 * 100) as average_rating from " . TABLE_REVIEWS . " where products_id = '" . $products['products_id'] . "'");
***************
*** 850,855 ****
--- 850,856 ----
        default:
          if ($rows > 0) {
            if (is_object($cInfo)) { // category info box contents
+             if ($HTTP_GET_VARS['search'] && isset( $tmp_top_cPath ) ) $cPath= $tmp_top_cPath ;
              $heading[] = array('text' => '<b>' . $cInfo->categories_name . '</b>');
  
              $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=edit_category') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=delete_category') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=move_category') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a>');



-cオプション付きだから、とてつもなく大きいように見えますが、修正点は
ごく僅かです。

なお、実際に使ってみれば判りますが、本家のコードでも、私が修正した
コードでも、検索結果画面での直接的な操作は出来ません。

これは、もともとcategories.php自体が、操作対象カテゴリーというものを
強く意識した作りであるためです。理想は、検索結果画面でそのまま操作で
きることですが、そこまで作ろうとすると相当大変ですので、多少手間では
ありますが、ブラウザで2回戻る、という操作で満足しておく方が無難でしょ
う。

-- 
株式会社PEAK  ネットワーク技術担当 後藤 <gij****@peak*****>




Tep-j-general メーリングリストの案内
Zurück zum Archiv-Index