smallville06 Posted December 7, 2008 Share Posted December 7, 2008 Would anybody have an idea as to what code I need to add to my categories.php so as when a customer clicks on a category it will indent the subcategories instead of displaying them under the parent category. It looks confusing on the website. P.S. My website is www.stellaraccessories.com if anybody would like to give some feedback on improvments. Thanks everybody! <?php /* $Id: categories.php 1739 2007-12-20 00:52:16Z hpdl $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2003 osCommerce Released under the GNU General Public License */ function tep_show_category($counter) { global $tree, $categories_string, $cPath_array; if ($tree[$counter]['parent'] == 0) { $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } for ($i=0; $i<$tree[$counter]['level']; $i++) { $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } $categories_string .= '<a class="whitea" href="'; if ($tree[$counter]['parent'] == 0) { $cPath_new = 'cPath=' . $counter; } else { $cPath_new = 'cPath=' . $tree[$counter]['path']; } $categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">'; if (isset($cPath_array) && in_array($counter, $cPath_array)) { $categories_string .= '<b>'; } // display category name $categories_string .= $tree[$counter]['name']; if (isset($cPath_array) && in_array($counter, $cPath_array)) { $categories_string .= '</b>'; } if (tep_has_category_subcategories($counter)) { $categories_string .= ''; } $categories_string .= '</a>'; if (SHOW_COUNTS == 'true') { $products_in_category = tep_count_products_in_category($counter); if ($products_in_category > 0) { // $categories_string .= ' (' . $products_in_category . ')'; } } //$categories_string .= '<br>'; if ($tree[$counter]['next_id'] != false) { tep_show_category($tree[$counter]['next_id']); } } ?> <!-- categories //--> <tr> <td class="center"><span class="whiteheddin"><? echo BOX_HEADING_CATEGORIES;?></span></td> </tr> <tr> <td class="topline"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <?php $categories_string = ''; $tree = array(); $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name"); while ($categories = tep_db_fetch_array($categories_query)) { $tree[$categories['categories_id']] = array('name' => $categories['categories_name'], 'parent' => $categories['parent_id'], 'level' => 0, 'path' => $categories['categories_id'], 'next_id' => false); if (isset($parent_id)) { $tree[$parent_id]['next_id'] = $categories['categories_id']; } $parent_id = $categories['categories_id']; if (!isset($first_element)) { $first_element = $categories['categories_id']; } } //------------------------ if (tep_not_null($cPath)) { $new_path = ''; reset($cPath_array); while (list($key, $value) = each($cPath_array)) { unset($parent_id); unset($first_id); $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$value . "' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name"); if (tep_db_num_rows($categories_query)) { $new_path .= $value; while ($row = tep_db_fetch_array($categories_query)) { $tree[$row['categories_id']] = array('name' => $row['categories_name'], 'parent' => $row['parent_id'], 'level' => $key+1, 'path' => $new_path . '_' . $row['categories_id'], 'next_id' => false); if (isset($parent_id)) { $tree[$parent_id]['next_id'] = $row['categories_id']; } $parent_id = $row['categories_id']; if (!isset($first_id)) { $first_id = $row['categories_id']; } $last_id = $row['categories_id']; } $tree[$last_id]['next_id'] = $tree[$value]['next_id']; $tree[$value]['next_id'] = $first_id; $new_path .= '_'; } else { break; } } } tep_show_category($first_element); echo $categories_string; ?> </table> </td> </tr> <tr> <td class="topline"><img src="images/blank.gif" width="1" height="1" /></td> </tr> <!-- categories_eof //--> Quote Link to comment Share on other sites More sharing options...
germ Posted December 7, 2008 Share Posted December 7, 2008 Backup all files involved before editing. In your global.css file ADD this code: .whitex { padding-left: 8px; } In the code you posted, change this code: for ($i=0; $i<$tree[$counter]['level']; $i++) { $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } To: for ($i=0; $i<$tree[$counter]['level']; $i++) { if ( $tree[$counter]['level'] != 0 ) ( $categories_string .= "<tr><td class="whitex"><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } else { $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } } I think this will do what you want. Quote If I suggest you edit any file(s) make a backup first - I'm not perfect and neither are you. "Given enough impetus a parallelogramatically shaped projectile can egress a circular orifice." - Me - "Headers already sent" - The definitive help "Cannot redeclare ..." - How to find/fix it SSL Implementation Help Like this post? "Like" it again over there > Link to comment Share on other sites More sharing options...
smallville06 Posted December 8, 2008 Author Share Posted December 8, 2008 That hasn't worked unfortunately the sub categories still remain left justified.! Backup all files involved before editing. In your global.css file ADD this code: .whitex { padding-left: 8px; } In the code you posted, change this code: for ($i=0; $i<$tree[$counter]['level']; $i++) { $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } To: for ($i=0; $i<$tree[$counter]['level']; $i++) { if ( $tree[$counter]['level'] != 0 ) ( $categories_string .= "<tr><td class="whitex"><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } else { $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } } I think this will do what you want. Quote Link to comment Share on other sites More sharing options...
germ Posted December 8, 2008 Share Posted December 8, 2008 You haven't changed the stylesheet yet. :huh: Add the code to the stylesheet, then change the code I asked you to modify back to what it was. Then change this code: if ($tree[$counter]['parent'] == 0) { $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } To: if ($tree[$counter]['parent'] == 0) { $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } else { $categories_string .= "<tr><td class="whitex"><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />"; } Sometimes after changing the stylesheet you have to hold the <Ctrl> key down while doing a page refresh in the browser to force the browser to reload all contents from the server, including the newly changed stylesheet. This works with IE and Firefox. I couldn't test the change so I just gave it my best shot. Like my signature says, I'm not perfect. Far from it actually. Quote If I suggest you edit any file(s) make a backup first - I'm not perfect and neither are you. "Given enough impetus a parallelogramatically shaped projectile can egress a circular orifice." - Me - "Headers already sent" - The definitive help "Cannot redeclare ..." - How to find/fix it SSL Implementation Help Like this post? "Like" it again over there > Link to comment Share on other sites More sharing options...
smallville06 Posted December 8, 2008 Author Share Posted December 8, 2008 No I really appreciate your help. It's hard when your a php novice!! Ill let you know how it goes. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.