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