Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Recommended Posts

Posted

I was wondering if anyone with a larger store has come up with a hack to re order the menu to show the main category you are in at the top, my main problem is customers must scroll every time to sellect a new subcategory :(

 

At the moment I'm running a mod to have all sub categories showing so it looks like (red shows selected category) :

 

category 1

Subcategory 1 (1)

Subcategory 1 (2)

Subcategory 1 (3)

category 2

Subcategory 2 (1)

Subcategory 2 (2)

Subcategory 2 (3)

category 3

Subcategory 3 (1)

Subcategory 3 (2)

Subcategory 3 (3)

 

I want it to look like this :

 

category 3

Subcategory 3 (1)

Subcategory 3 (2)

Subcategory 3 (3)

category 1

Subcategory 1 (1)

Subcategory 1 (2)

Subcategory 1 (3)

category 2

Subcategory 2 (1)

Subcategory 2 (2)

Subcategory 2 (3)

 

Basically pushing what ever category (including subcategory) that the customer is in to the top of the list

 

Please help :(

 

As always thank you in advance for your time/help :thumbsup:

 

My Categories.php file :

 

<?php
/*
 $Id: show_subcategories.php,v 1.0 2003/01/08 10:37:00 Exp $

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com/

 Based on: main_categories.php Ver. 1.0 by Gustavo Barreto

 History: 1.0 Creation

 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- this is for older snapshots pre-November 2002
/*	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 . '_' : ''))
;
  } */
// Function used for post November 2002 snapshots
 function tep_show_category($counter) {
global $foo, $categories_string, $id;

for ($a=0; $a<$foo[$counter]['level']; $a++) {
  $categories_string .= "  ";
}
}
 }

?>
<!-- show_subcategories //-->
	  <tr>
		<td class="infoBox_left">

<?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, false, true);

//////////
// 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')); used for older snapshots
$status = tep_db_num_rows(tep_db_query('describe ' .  TABLE_CATEGORIES . ' status'));


 $query = "select c.categories_id, cd.categories_name, c.parent_id, c.categories_image
		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);


// Initiate tree traverse
 $categories_string = '';
 preorder(0, 0, $foo, '');

//////////
// Display box contents
//////////
 $info_box_contents = array();
 $row = 0;
 $col = 0;
 while ($categories = tep_db_fetch_array($categories_query)) {
  if ($categories['parent_id'] == 0) 
  {
		$temp_cPath_array = $cPath_array;  //Johan's solution - kill the array but save it for the rest of the site
	 unset($cPath_array);

		$cPath_new = tep_get_path($categories['categories_id']);

	 $text_subcategories = '';
 $subcategories_query = tep_db_query($query);
 while ($subcategories = tep_db_fetch_array($subcategories_query)) 
	 {

			if ($subcategories['parent_id'] == $categories['categories_id'])
			{

									$cPath_new_sub = "cPath="  . $categories['categories_id'] . "_" . $subcategories['categories_id'];

				$text_subcategories .= '' . '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new_sub, 'NONSSL') . '" class="menusubcateg">' . '   ' . tep_image(DIR_WS_IMAGES . 'pointer_blue_light.gif', '') . $subcategories['categories_name'] . '</a>' . " ";
			} // if
 } // While Interno
$info_box_contents[$row] = array('align' => 'left',
									   'params' => 'class="smallText" width="125" valign="top"',
									   'text' => '' . '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '" class="menucateg"><b>' . ' ' . tep_image(DIR_WS_IMAGES . 'pointer_blue.gif', '') . $categories['categories_name'] . '</b></a>' . $text_subcategories);
$col ++;
if ($col > 0) 
	{
			$col = 0;
			$row ++;
}
$cPath_array = $temp_cPath_array; //Re-enable the array for the rest of the code
  }
 }
new noborderBox2($info_box_contents, true);


?>
		</td>
	  </tr>
<!-- show_subcategories_eof //-->

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...