Guest Posted March 15, 2004 Share Posted March 15, 2004 Hi all- How do I get the categories infobox to be a drop down menu rather than a list. I have tried a contribution, but it is quite buggy. Is there an easy way to do this? -dan Link to comment Share on other sites More sharing options...
betty Posted March 15, 2004 Share Posted March 15, 2004 Hi Dan, I was having the same problem last week. One of the contributions I found didn't work, but then I found another which works fine. I can't remember which one it is, but I've pasted the code below. Stick this in as your /boxes/categories file you should be alright! Betty <?php /* $Id: all_categories.php,v 1.6 2002/04/22 20:34:00 clescuyer Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com/ Copyright © 2002 Go?lette Christian Lescuyer <[email protected]> http://www.goelette.net/ http://oscommerce.goelette.net/ History: 1.1 Creation 1.2 Modified query for compatibility with older databases 1.3 Query in 1.2 was wrong for older databases 1.4 SHOW_COUNTS test corrected 1.5 Added COMPACT_CATEGORIES option to display all sub-categories on one line 1.6 Removed COMPACT_CATEGORIES option Corrected the cpath generation Bold categories "path" to selected category, an idea from Peter F?rsicht Released under the GNU General Public License */ // Preorder tree traversal function preorder($cid, $level, $foo, $cpath) { global $categories_string, $HTTP_GET_VARS; // Display link if ($cid != 0) { for ($i=0; $i<$level; $i++) $categories_string .= ''; $categories_string .= '<a href="' . tep_href_link(FILENAME_DEFAULT, 'cPath=' . $cpath . $cid) . '">'; // 1.6 Are we on the "path" to selected category? $bold = strstr($HTTP_GET_VARS['cPath'], $cpath . $cid . '_') || $HTTP_GET_VARS['cPath'] == $cpath . $cid; // 1.6 If yes, use <b> if ($bold) $categories_string .= '<b>'; $categories_string .= $foo[$cid]['name']; if ($bold) $categories_string .= '</b>'; $categories_string .= '</a>'; // 1.4 SHOW_COUNTS is 'true' or 'false', not true or false if (SHOW_COUNTS == 'true') { $products_in_category = tep_count_products_in_category($cid); if ($products_in_category > 0) { $categories_string .= '(' . $products_in_category . ')'; } } $categories_string .= '<br>'; } // Traverse category tree foreach ($foo as $key => $value) { if ($foo[$key]['parent'] == $cid) { // print "$key, $level, $cid, $cpath<br>"; preorder($key, $level+1, $foo, ($level != 0 ? $cpath . $cid . '_' : '')); } } } ?> <!-- all_categories //--> <tr> <td valign="top"> <br> <br> <?php ////////// // Get categories list ////////// // 1.2 Test for presence of status field for compatibility with older versions $status = tep_db_num_rows(tep_db_query('describe categories status')); $query = "select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = cd.categories_id"; // 1.3 Can't have 'where' in an if statement! if ($status >0) $query.= " and c.status = '1'"; $query.= " and cd.language_id='" . $languages_id ."' order by sort_order, cd.categories_name"; $categories_query = tep_db_query($query); // Stuff in an array while ($categories = tep_db_fetch_array($categories_query)) { $foo[$categories['categories_id']] = array('name' => $categories['categories_name'], 'parent' => $categories['parent_id']); } // Initiate tree traverse $categories_string = ''; preorder(0, 0, $foo, ''); ////////// // Display box contents ////////// $info_box_contents = array(); $info_box_contents[] = array('align' => 'left', 'text' => $categories_string); new index($info_box_contents); ?> </td> </tr> <!-- all_categories_eof //--> Link to comment Share on other sites More sharing options...
betty Posted March 15, 2004 Share Posted March 15, 2004 Hang on Dan - stop! I've just reread your post. I thought you were looking for a list instead of a drop down, not vice versa....sorry! maybe you need to look in your admin board. i think you can fill in a minimum number, over which the list will become a drop down list. if you set that to 1 then it should work.... betty Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.