san84 Posted March 3, 2008 Posted March 3, 2008 Hi everyone Everyone is familiar with the categories list on their left or right hand side of their websites. My question is, am i able to show all of the subcategories on the categories list at all times? e.g. Normal categories list is: - Armani Hugo Boss G Star the veiw which i want at ALL times - Armani -Jeans - T Shirts Hugo Boss - Jeans - T Shirts G Star - Jeans - T Shirts etc. How would i achieve this? i do not want the list collapsing like it normaly does, but i want it fully expanded at all times many thanks people
burt Posted March 3, 2008 Posted March 3, 2008 Search the contributions area, this definitely exists.
Guest Posted March 7, 2008 Posted March 7, 2008 Here is a script that shows all categories exapnded in the categories box : <?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 (c) 2002 Go�ette 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 Frsicht 1.7 Cleaned the way in which the categories are displayed - bold for the path, ">" to indicate the current category, removed link to current category, only indent subcategories (top level are flush left) Released under the GNU General Public License */ // Keep out parts category $excluded_parts_category_id = 28; // Preorder tree traversal function preorder($cid, $level, $foo, $cpath) { global $categories_string, $HTTP_GET_VARS; if ($cid != 0) { // 1.7 Get the current path info $category_path = explode('_',$HTTP_GET_VARS['cPath']); $in_path = in_array($cid, $category_path); $this_category = array_pop($category_path); for ($i=0; $i<$level; $i++) // 1.7 only indent subcategories (top level are flush left) if ($i>0) { $categories_string .= ' '; } // 1.7 indicate the current category if ($this_category == $cid) { $categories_string .= ''; } // 1.7 don't link the current category if ($this_category != $cid) { $categories_string .= '<a href="' . tep_href_link(FILENAME_DEFAULT, 'cPath=' . $cpath . $cid) . '">'; } // 1.6 Are we on the "path" to selected category? If yes, use <b> if ($in_path) { $categories_string .= '<b>'; } $categories_string .= $foo[$cid]['name']; if ($in_path) $categories_string .= '</b>'; // 1.7 don't link the current category if ($this_category != $cid) { $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>' ."\n"; } // 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> <?php ////////// // Display box heading ////////// $info_box_contents = array(); $info_box_contents[] = array('align' => 'left', 'text' => BOX_HEADING_CATEGORIES); new infoBoxHeading($info_box_contents, true, false); ////////// // 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 infoBox($info_box_contents); ?> </td> </tr> <!-- all_categories_eof //--> Just save the above code in a file, for example allcategories.php and put that file in the \includes\boxes directory. Then, in the \includes\column_left.php (or column_right.php) you can put include(DIR_WS_BOXES . 'allcategories.php'); It includes also the numbers (number of products per category). You can see it working at http://www.preclear.com/mediashop/index.php. Good luck !
Recommended Posts
Archived
This topic is now archived and is closed to further replies.