Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Customising categories infobox


Guest

Recommended Posts

Hi all!

 

I'm in need of your help once again!

 

I would like to have all the categories display in my category box ... which i have manged to achieve by installing the contribution "show all categories" See here

 

This worked well but.... i think there was a bit of dificulty distinguishing the main categories from the subcategories....SO....

 

I went looking for another contribution to add one type of bullet for main categories and another type of bullet for subcategories... this way making the categories box look something like this:

 

CatBoxEnh.gif

 

So i tried to integrate these two great contributions Show all categories and Category Box Enhancement

 

Unfortunatly it doesn't seem to be working as you can see in my attempt here (PLEASE NOTE THIS IS A LIVE SITE):

http://www.imtechnology.com.au

 

as you can see all categories have the same image regardless if they are a main category or a subcategory....

 

I was hoping for a little guidance from others as to what might be going wrong.... hopefully when its all sorted I can release this as a contribution for others to use too.

I thought another alternative would be to simply make main categories permanently bold but again dont even know where to start.

 

I have included my includes/boxes/categories.php file below...

 

Thanks for your help,

Edwin.

 

<?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?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) {
// BoF - Contribution Category Box Enhancement 1.1
   global $tree, $categories_string, $cPath_array, $cat_name;
     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>
$cPath_new = 'cPath=' . $foo[$cid]['name'];
     if ($bold) {
     $categories_string .= tep_image(DIR_WS_IMAGES . 'pointer_blue.gif', '');
   }
   else {
     $categories_string .= tep_image(DIR_WS_IMAGES . 'pointer_blue_light.gif', '');
   }

   if (isset($cPath_array) && in_array($counter, $cPath_array)) {
     $categories_string .= '<b>';
   }
   
   if ($cat_name == $foo[$cid]['name']) {
     $categories_string .= '<span class="errorText">';
   }

// display category name
     $categories_string .=  $foo[$cid]['name'];

 if ($cat_name == $foo[$cid]['name']) {
	 $categories_string .= '</span>';
   }

     if ($bold){
     $categories_string .= '</b>';
   }
//  EoF Category Box Enhancement
     $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>
<table width=205 border=0 cellpadding=0 cellspacing=0>
<tr>
 <td class="catagories" colspan=3>
	 </td>
</tr>
<tr>
<td class="catagories">
<?php
//////////
// BoF - Contribution Category Box Enhancement 1.1
if (isset($cPath_array)) {
 for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) {
   $categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'");
   if (tep_db_num_rows($categories_query) > 0)
   $categories = tep_db_fetch_array($categories_query);
 }
$cat_name = $categories['categories_name']; 
}
// EoF Category Box Enhancement
// 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>

</table>
           </td>
         </tr>
<!-- all_categories_eof //-->

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...