Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Displaying sub categories


PDJ.

Recommended Posts

Hi

 

I'm trying to find way to display all the sub categories for each category without having to click the relevant category first. So basically I would like to keep the categories expanded.

 

I've tried using all the contributions I could find but since I'm using a custom template which has the category information in header.php file and not categories.php I haven't had much luck.

 

Would anyone be kind enough to tell me the key bit of code that displays the sub categories all the time and not just when you click on the category?

 

Below is the bit of code in the header file that controls the categories (I think)

 

<?   // ---- CATEGORIES

 function tep_show_category($counter) {
   global $tree, $categories_string, $cPath_array;

  if(!$tree[$counter]['level']){               

   $categories_string .= $categories_string ? '<tr><td><img src=images/m22.gif width=160 height=1></td></tr><tr><td height=3></td></tr>' : '';             

   $categories_string .= '<tr><td><img src=images/m10.gif width=3 height=5 align=absmiddle>   <a class=ml2  href=';

   if ($tree[$counter]['parent'] == 0) {
     $cPath_new = 'cPath=' . $counter;
   } else {
     $cPath_new = 'cPath=' . $tree[$counter]['path'];
   }
   $categories_string .= tep_href_link('index.php', $cPath_new) . '>';
// display categry name
   $categories_string .= $tree[$counter]['name'];
   $categories_string .= '</a></td></tr><tr><td height=2></td></tr>';

  }else{  // SUBCATEGORY

   $categories_string .= '<tr><td>      ';

   for($i=0;$i<$tree[$counter]['le vel'];$i++)
    $categories_string .= '   ';

   $categories_string .= ' - <a class=ml2 style="font-weight:normal;" href=';   
   if ($tree[$counter]['parent'] == 0) {
     $cPath_new = 'cPath=' . $counter;
   } else {
     $cPath_new = 'cPath=' . $tree[$counter]['path'];
   }
   $categories_string .= tep_href_link('index.php', $cPath_new) . '>';
// display category name
   $categories_string .= $tree[$counter]['name'];
   $categories_string .= '</a></td></tr><tr><td height=2></td></tr>';
  }  

   if ($tree[$counter]['next_id'] != false) {
     tep_show_category($tree[$counter]['next_id']);
   }  
 }



 define(TABLE_CATEGORIES, "categories");
 define(TABLE_CATEGORIES_DESCRIPTION, "categories_description");
 $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 ($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;
     }
   }
 }
 $categories_string .=  '';
 tep_show_category($first_element); 
 $categories_string .=  '';

 echo $categories_string;
?>

 

 

I'm sure there's only a small piece of code that I have to insert or remove to get the sub categories to display but I have no idea how to do it.

 

Thanks very much to anyone who replies.

Link to comment
Share on other sites

  • 2 months later...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...