Jump to content



Latest News: (loading..)

- - - - -

Products Sorting by ID not Name - How To Change?

sorting

This topic has been archived. This means that you cannot reply to this topic.
20 replies to this topic

#1   NavCopy

NavCopy
  • Members
  • 76 posts

Posted 04 May 2012 - 11:25 AM

Products are sorted by ID and I would like to have them sort by name, does anyone know how I can do this?  

It's a template and I have made changes by adding other contributions.  The 'Display Products Name' is set to 1 in Product Listings (admin) and I've read up on other posts about making modification to index.php but it looks like it is set to sort by name.  

Any ideas where else I can look?
Nav

#2   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 04 May 2012 - 12:48 PM

Are you talking about sorting the products by Name on the products_listing.php page?

If so I believe those table are sortable just by clicking the table header..

#3   NavCopy

NavCopy
  • Members
  • 76 posts

Posted 04 May 2012 - 01:34 PM

Don,

I'm not sue I understand what you refer to as 'just by clickingthe table header'.  Can you elaborate?

I am trying to find a way that will display the products (sorted by name) once you click on a category.   I don't know alot about coding and have left it as is for awhile but yesterday I spent some time trying to figure it out and noticed the order they are displayed on the webpage is determined by the product ID assigned.  

Nav

#4   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 04 May 2012 - 01:45 PM

I'm referring to a page like this..http://www.rubberstore.com/catalog/as568-nitrile-c-33_39_43.html click on the Text that says Model # or Product Name+ or Price and they should sort accordingly. Is this the type of page you are asking about?

Edited by NodsDorf, 04 May 2012 - 01:46 PM.


#5   NavCopy

NavCopy
  • Members
  • 76 posts

Posted 04 May 2012 - 01:58 PM

Don,

My page does not look like this at all, I should have provided a link so you can see as it shows it better (www.novasport.ca)

Nav

#6   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 04 May 2012 - 02:23 PM

Are you referring to your index page (the link you provided) or a category page like http://www.novasport.ca/index.php?cPath=5 that you would like to sort?

#7   NavCopy

NavCopy
  • Members
  • 76 posts

Posted 04 May 2012 - 02:55 PM

Yes the category page.

Nav

#8   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 04 May 2012 - 03:10 PM

Okay, can you post your includes/modules/product_listing.php page please wrap it in code tags.

I can't say I for sure can help, since it is a template but I will see what I can do.

#9   NavCopy

NavCopy
  • Members
  • 76 posts

Posted 04 May 2012 - 03:25 PM

includes/modules/product_listing.php:



<?php
/*
  $Id: product_listing.php 1739 2007-12-20 00:52:16Z hpdl $
  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com
  Copyright (c) 2003 osCommerce
  Released under the GNU General Public License
*/
?>
<?php echo tep_draw_title_top();?>
	<?php echo $breadcrumb->trail(' &raquo; ')?>
  
<?php echo tep_draw_title_bottom();?>
<?php
  $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');
  if ( ($listing_split->number_of_rows > 0) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) {
?>
<?php echo tep_draw_result1_top(); ?>
	  
  <table border="0" cellspacing="0" cellpadding="0" class="result result_top_padd">
		  <tr>
			<td><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
			<td class="result_right" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
		  </tr>
		</table>
<?php echo tep_draw_result1_bottom();  ?>
	  
<?php
  }
	  
echo tep_draw3_top();

$info_box_contents = array();
  $list_box_contents = array();
$my_row = 0;
$my_col = 0;

  for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
	switch ($column_list[$col]) {
	  case 'PRODUCT_LIST_MODEL':
		$lc_text = TABLE_HEADING_MODEL;
		$lc_align = '';
		break;
	  case 'PRODUCT_LIST_NAME':
		$lc_text = TABLE_HEADING_PRODUCTS;
		$lc_align = '';
		break;
	  case 'PRODUCT_LIST_MANUFACTURER':
		$lc_text = TABLE_HEADING_MANUFACTURER;
		$lc_align = '';
		break;
	  case 'PRODUCT_LIST_PRICE':
		$lc_text = TABLE_HEADING_PRICE;
		$lc_align = 'right';
		break;
	  case 'PRODUCT_LIST_QUANTITY':
		$lc_text = TABLE_HEADING_QUANTITY;
		$lc_align = 'right';
		break;
	  case 'PRODUCT_LIST_WEIGHT':
		$lc_text = TABLE_HEADING_WEIGHT;
		$lc_align = 'right';
		break;
	  case 'PRODUCT_LIST_IMAGE':
		$lc_text = TABLE_HEADING_IMAGE;
		$lc_align = 'center';
		break;
	  case 'PRODUCT_LIST_BUY_NOW':
		$lc_text = TABLE_HEADING_BUY_NOW;
		$lc_align = 'center';
		break;
	}
	if ( ($column_list[$col] != 'PRODUCT_LIST_BUY_NOW') && ($column_list[$col] != 'PRODUCT_LIST_IMAGE') ) {
	  $lc_text = tep_create_sort_heading($HTTP_GET_VARS['sort'], $col+1, $lc_text);
	}
	$list_box_contents[0][] = array('align' => $lc_align,
									'params' => 'class="productListing-heading"',
									'text' => '&nbsp;' . $lc_text . '&nbsp;');
  }
  if ($listing_split->number_of_rows > 0) {
	$rows = 0;
	$listing_query = tep_db_query($listing_split->sql_query);
	while ($listing = tep_db_fetch_array($listing_query)) {
	  $rows++;
	  if (($rows/2) == floor($rows/2)) {
		$list_box_contents[] = array('params' => 'class="productListing-even"');
	  } else {
		$list_box_contents[] = array('params' => 'class="productListing-odd"');
	  }
	  $cur_row = sizeof($list_box_contents) - 1;
	  for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
		$lc_align = '';
		switch ($column_list[$col]) {
		  case 'PRODUCT_LIST_NAME':
			$lc_align = '';
	
			/*** Begin Header Tags SEO ***/
			$lc_add = '';
			$hts_listing_query = tep_db_query("select products_head_listing_text, products_description from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = " . (int)$listing['products_id'] . " and language_id = " . (int)$languages_id);
			if (tep_db_num_rows($hts_listing_query) > 0) {			
				$hts_listing = tep_db_fetch_array($hts_listing_query);
				if (tep_not_null($hts_listing['products_head_listing_text'])) {
					$lc_add .= '<div class="hts_listing_text">' . $hts_listing['products_head_listing_text'] . '...<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '"><span style="color:red;">' . TEXT_SEE_MORE . '</span></a></div>';
				} else if (HEADER_TAGS_ENABLE_AUTOFILL_LISTING_TEXT == 'true') {
					$text = sprintf("%s...%s", substr(stripslashes($hts_listing['products_description']), 0, 100), '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . (int)$listing['products_id']) . '"><span style="color:red;">' . TEXT_SEE_MORE . '</span></a>');
					$lc_add .= '<div class="hts_listing_text">' . $text . '</div>';
				}
			}  

			if (isset($HTTP_GET_VARS['manufacturers_id'])) {
			  $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a>';
			  $lc_text .= $lc_add;
			} else {
			  $lc_text = '&nbsp;<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a>&nbsp;';
			  $lc_text .= $lc_add;
			}
			/*** End Header Tags SEO ***/
			break;
		  case 'PRODUCT_LIST_MANUFACTURER':
			$lc_align = '';
			$p_manufact = '<tr>
	   <td><b><font>'.TABLE_HEADING_MANUFACTURER.'&nbsp;:</font></b></td>
	   <td align="right"><font><a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing['manufacturers_id']) . '">' . $listing['manufacturers_name'] . '</a></font></td>
	  </tr>';
			break;
		  case 'PRODUCT_LIST_PRICE':
			$lc_align = 'right';
			if (tep_not_null($listing['specials_new_products_price'])) {
		   $p_price = $lc_text = '<s>' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
			} else {
		   $p_price = $lc_text = '<span class="productSpecialPrice">' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
			}
			break;
		  case 'PRODUCT_LIST_QUANTITY':
			$lc_align = 'right';
			$p_qty = '<tr>
	   <td><b><font>'.TABLE_HEADING_QUANTITY.'&nbsp;:</font></b></td>
	   <td align="right"><font>' . $listing['products_quantity'] . '</font></td>
	  </tr>';
			break;
		  case 'PRODUCT_LIST_WEIGHT':
			$lc_align = 'right';
			$p_weight = '<tr>
	   <td><b><font>'.TABLE_HEADING_WEIGHT.'&nbsp;:</font></b></td>
	   <td align="right"><font>' . $listing['products_weight'] . '</font></td>
	  </tr>';
			break;
		  case 'PRODUCT_LIST_IMAGE':
			$lc_align = 'center';
			if (isset($HTTP_GET_VARS['manufacturers_id'])) {
			  $p_pic = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>';
			} else {
			  $p_pic = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>';
			}
			break;
		  case 'PRODUCT_LIST_BUY_NOW':
			$lc_align = 'center';
			$p_button =  $lc_text = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_buy_now1.gif', IMAGE_BUTTON_BUY_NOW) . '</a>';
			break;
		}

$product_query = tep_db_query("select products_description, products_id from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$listing['products_id'] . "' and language_id = '" . (int)$languages_id . "'");
	  $product = tep_db_fetch_array($product_query);
		$p_desc = substr(strip_tags($product['products_description']), 0, MAX_DESCR_1).'...<br>';

   if (PRODUCT_LIST_MODEL != 0 || PRODUCT_LIST_MANUFACTURER != 0 || PRODUCT_LIST_QUANTITY != 0 || PRODUCT_LIST_WEIGHT != 0) {
  $p_listing = '<table cellpadding="0" cellspacing="0" border="0" class="listing">'.$p_model.''.$p_manufact.'' . ''.$p_qty.'' . ''.$p_weight.'</table>';
  }

		$p_id = $product['products_id'];

/*  $list_box_contents[$cur_row][] = array('align' => $lc_align,
											   'params' => '',
											   'text'  => $lc_text); */
}
  $p_details = '<a href="' . tep_href_link('product_info.php?products_id='.$p_id) . '">'.tep_image_button('button_details.gif', '', ' class="btn1"').'</a>';


$info_box_contents[$my_row][$my_col] = array('align' => 'center',
										   'params' => ' style="width:50%;"',
										   'text' => ''.tep_draw_prod2_top().'
<table cellpadding="0" cellspacing="0" border="0"><tr><td class="new2">		  
<table cellpadding="0" cellspacing="0" border="0">
  <tr><td class="name name2_padd">'.$p_name.'</td></tr>
  <tr><td class="pic2_padd">'.tep_draw_prod_pic_top().''.$p_pic.''.tep_draw_prod_pic_bottom().'</td></tr>
  <tr><td class="listing2_padd">'.$p_listing.'</td></tr>
  <tr><td class="desc desc2_padd">'.$p_desc.'</td></tr>
  <tr><td>'.tep_draw_name_top().'
   <table cellpadding="0" cellspacing="0" border="0">
	<tr>
	 <td class="price2_padd"><b>'.PRICE.'</b>'.$p_price.'</td>
	 <td class="button2_padd button2_marg">
	  <table cellpadding="0" cellspacing="0" border="0">
	   <tr><td>'.$p_details.' '.$p_buy_now.'</td></tr>
	  </table>
	 </td>
	</tr>
   </table>
  '.tep_draw_name_bottom().'</td></tr>
</table>
</td></tr></table>		  
'.tep_draw_prod2_bottom().'');
	$my_col ++;
	if ($my_col > 1) {
	  $my_col = 0;
  $my_row ++;
	  }
	}
new contentBox($info_box_contents);
//	new productListingBox($list_box_contents);
} else {  ?>
<?php	/*  echo tep_draw1_top();  */  ?>
	<table cellpadding="0" cellspacing="0" class="main">
	 <tr><td><?php echo TEXT_NO_PRODUCTS ?></td></tr>
	</table>
<?php   /*  echo tep_draw1_bottom();  */	?>			  
			  
<?php  
}
  if ( ($listing_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3')) ) {
?>
<?php echo tep_draw_result2_top(); ?>
	  
  <table border="0" cellspacing="0" cellpadding="0" class="result result_bottom_padd">
		  <tr>
			<td><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
			<td class="result_right" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
		  </tr>
		</table>
<?php echo tep_draw_result2_bottom(); ?>
<?php
  }
?>


#10   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 04 May 2012 - 06:14 PM

Okay not 100% sure here so be prepared to change it back if this don't work.

Change:
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');
to
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'pd.products_name');

I'm not sure if the function splitPageResults is using the p.products_id as the sorting or not, nor am I sure if products_description table is part of that query
but its worth a try.

Edited by NodsDorf, 04 May 2012 - 06:14 PM.


#11   NavCopy

NavCopy
  • Members
  • 76 posts

Posted 04 May 2012 - 07:08 PM

Here is the error when I make the change:

1054 - Unknown column 'p.products_name' in 'field list'

select count(p.products_name) as total from products_description pd, products p left join manufacturers m on p.manufacturers_id = m.manufacturers_id left join specials s on p.products_id = s.products_id, products_to_categories p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '1' and p2c.categories_id = '5'


#12   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 05 May 2012 - 08:19 AM

Okay, so that appears to be the wrong sql statement to mess with. I'll do some digging on my site and see if I can find where the statement is...

#13   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 05 May 2012 - 10:23 AM

Okay Nav, it looks like those sort orders maybe set in the index.php file.

I'm just not sure what to edit

This is the default:
   if ( (!isset($HTTP_GET_VARS['sort'])) || (!preg_match('/^[1-8][ad]$/', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
	  for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
		if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
		  $HTTP_GET_VARS['sort'] = $i+1 . 'a';
		  $listing_sql .= " order by pd.products_name";
		  break;
		}
	  }
	} else {
	  $sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);
	  $sort_order = substr($HTTP_GET_VARS['sort'], 1);
	  switch ($column_list[$sort_col-1]) {
		case 'PRODUCT_LIST_MODEL':
		  $listing_sql .= " order by p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
		case 'PRODUCT_LIST_NAME':
		  $listing_sql .= " order by pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
		  break;
		case 'PRODUCT_LIST_MANUFACTURER':
		  $listing_sql .= " order by m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
		case 'PRODUCT_LIST_QUANTITY':
		  $listing_sql .= " order by p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
		case 'PRODUCT_LIST_IMAGE':
		  $listing_sql .= " order by pd.products_name";
		  break;
		case 'PRODUCT_LIST_WEIGHT':
		  $listing_sql .= " order by p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
		case 'PRODUCT_LIST_PRICE':
		  $listing_sql .= " order by final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
	  }
	}


#14 ONLINE   multimixer

multimixer

    Lemons or Melons ?

  • Partner
  • 4,389 posts

Posted 05 May 2012 - 10:44 AM

Replace this
$listing_sql .= " order by pd.products_name";
by this
$listing_sql .= " order by p.products_id";

You could remove also the condition
if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
but since you'll have the name in the list, just leave it as is

#15   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 05 May 2012 - 10:59 AM

Hey George thanks for the help,

He is actually using a template, and wants to sort by Name not ID which I think is what your change would do. We probably need to see his index.php to make suggestions. What do you think?

#16 ONLINE   multimixer

multimixer

    Lemons or Melons ?

  • Partner
  • 4,389 posts

Posted 05 May 2012 - 11:35 AM

Ah, I didn't read carefully then, just saw the topic title (sorting by id not name)

However, the query for product listing is usually in index.php, that's the first place to look what's going on

#17   NavCopy

NavCopy
  • Members
  • 76 posts

Posted 07 May 2012 - 11:14 AM

Looks like I am back looking into the index file that originally started with.  I just can't seem to figure it out so if anyone else has ideas pass them along.

Nav

#18   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 07 May 2012 - 12:54 PM

Nav we'll need to see the index.php file to see how the sorting is being called.

#19   NavCopy

NavCopy
  • Members
  • 76 posts

Posted 07 May 2012 - 03:41 PM

Here is the index file:

<?php
/*
  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com
  Copyright (c) 2003 osCommerce
  Released under the GNU General Public License
*/
  require('includes/application_top.php');
// the following cPath references come from application_top.php
  $category_depth = 'top';
  if (isset($cPath) && tep_not_null($cPath)) {
	$categories_products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
	$cateqories_products = tep_db_fetch_array($categories_products_query);
	if ($cateqories_products['total'] > 0) {
	  $category_depth = 'products'; // display products
	} else {
	  $category_parent_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$current_category_id . "'");
	  $category_parent = tep_db_fetch_array($category_parent_query);
	  if ($category_parent['total'] > 0) {
		$category_depth = 'nested'; // navigate through the categories
	  } else {
		$category_depth = 'products'; // category has no products, but display the 'no products' message
	  }
	}
  }
  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_DEFAULT);
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<?php
/*** Begin Header Tags SEO ***/
if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {
  require(DIR_WS_INCLUDES . 'header_tags.php');
} else {
?>
  <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
  <title><?php echo TITLE; ?></title>
<?php
}
/*** End Header Tags SEO ***/
?>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
<script type="text/javascript" src="iepngfix_tilebg.js"></script>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<style type="text/css">
.ie6_png	{behavior: url("iepngfix.htc") }
.ie6_png img  {behavior: url("iepngfix.htc") }
.ie6_png input  {behavior: url("iepngfix.htc") }
</style>
<!--[if IE]>
   <script type="text/javascript" src="ie_png.js"></script>
   <script type="text/javascript">
	   ie_png.fix('.png');
   </script>
<![endif]-->
</head>
<body>
<!-- header //-->
<?php $tab_sel = 2; ?>
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->
<!-- body //-->
<table border="0" class="<?php echo MAIN_TABLE; ?>" cellspacing="0" cellpadding="0">
<tr>
	<td class="<?php echo BOX_WIDTH_TD_LEFT; ?>"><table border="0" class="<?php echo BOX_WIDTH_LEFT; ?>" cellspacing="0" cellpadding="0">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
	</table></td>
<!-- body_text //-->
<?php
	if ($category_depth == 'nested') {
	/*** Begin Header Tags SEO ***/
	$category_query = tep_db_query("select cd.categories_name, c.categories_image, cd.categories_htc_title_tag, cd.categories_htc_description from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$current_category_id . "' and cd.categories_id = '" . (int)$current_category_id . "' and cd.language_id = '" . (int)$languages_id . "'");
	/*** end Header Tags SEO ***/
	$category = tep_db_fetch_array($category_query);
?>
	<td class="<?php echo CONTENT_WIDTH_TD; ?>"><?php echo panel_top(); ?>

<?php echo tep_draw_top();?>
  
	<?php new contentBoxHeading_ProdNew($info_box_contents);?>
<?php echo tep_draw3_top();?>

  <table border="0" width="100%" cellspacing="0" cellpadding="0" class="main">
			  <tr>
<?php
	if (isset($cPath) && strpos('_', $cPath)) {
// check to see if there are deeper categories within the current category
	  $category_links = array_reverse($cPath_array);
	  for($i=0, $n=sizeof($category_links); $i<$n; $i++) {
		$categories_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$category_links[$i] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'");
		$categories = tep_db_fetch_array($categories_query);
		if ($categories['total'] < 1) {
		  // do nothing, go through the loop
		} else {
		  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$category_links[$i] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by sort_order, cd.categories_name");
		  break; // we've found the deepest category the customer is in
		}
	  }
	} else {
	  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by sort_order, cd.categories_name");
	}
	$number_of_categories = tep_db_num_rows($categories_query);
	$rows = 0;
	while ($categories = tep_db_fetch_array($categories_query)) {
	  $rows++;
	  $cPath_new = tep_get_path($categories['categories_id']);
  
$p_pic_sub = '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">' . tep_image(DIR_WS_IMAGES . $categories['categories_image'], $categories['categories_name'], SUBCATEGORY_IMAGE_WIDTH, SUBCATEGORY_IMAGE_HEIGHT) . '</a>';
$p_name_sub = '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">' . $categories['categories_name'] . '</a>';
  
   $width = (int)(100 / MAX_DISPLAY_CATEGORIES_PER_ROW) . '%';
   echo '<td align="center" width="' . $width . '">'.tep_draw_prod_top().'
	<table cellpadding="0" cellspacing="0" border="0">
	 <tr><td class="pic4_padd">'.tep_draw_prod_pic_top().''.$p_pic_sub.''.tep_draw_prod_pic_bottom().'</td></tr>
	 <tr><td class="name name4_padd">'.$p_name_sub.'</td></tr>
	</table>'.tep_draw_prod_bottom().'
   </td>'."\n";
  
	if ($col!=(MAX_DISPLAY_CATEGORIES_PER_ROW-1)){
	echo '
	<td class="prod_line_y padd_vv">'.tep_draw_separator('spacer.gif', '1', '1').'</td>	
	';
	}else{
			
	if ((($rows / MAX_DISPLAY_CATEGORIES_PER_ROW) == floor($rows / MAX_DISPLAY_CATEGORIES_PER_ROW)) && ($rows != $number_of_categories)) {
   echo '			 
  </tr><tr><td class="prod_line_x" colspan="'.(MAX_DISPLAY_CATEGORIES_PER_ROW + MAX_DISPLAY_CATEGORIES_PER_ROW -1).'">'.tep_draw_separator('spacer.gif', '1', '18').'</td></tr>' . "\n";
   echo '<tr>' . "\n";
   }
}
if ($col==MAX_DISPLAY_CATEGORIES_PER_ROW-1){
$col=0;
}else{
$col++;
}
}
// needed for the new products module shown below
	$new_products_category_id = $current_category_id;
?>
			  </tr>
			</table>

<?php echo tep_draw3_bottom();?>
<?php /*  echo tep_draw_bottom();  */?>
<?php echo tep_draw_result1_bottom(); ?>
<?php /*  echo tep_draw_top();  */?>
  
  
<?php echo tep_draw3_top();?>
 
  
	   
<?php echo tep_draw3_bottom();?>
<?php echo tep_draw_bottom();?>
</td>
<?php
  } elseif ($category_depth == 'products' || isset($HTTP_GET_VARS['manufacturers_id'])) {
// create column list
	$define_list = array('PRODUCT_LIST_MODEL' => PRODUCT_LIST_NAME,
						 'PRODUCT_LIST_IMAGE' => PRODUCT_LIST_IMAGE,
						 'PRODUCT_LIST_BUY_NOW' => PRODUCT_LIST_BUY_NOW);
	asort($define_list);
	$column_list = array();
	reset($define_list);
	while (list($key, $value) = each($define_list)) {
	  if ($value > 0) $column_list[] = $key;
	}
	$select_column_list = '';
	for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
	  switch ($column_list[$i]) {
		case 'PRODUCT_LIST_MODEL':
		  $select_column_list .= 'p.products_model, ';
		  break;
		case 'PRODUCT_LIST_NAME':
		  $select_column_list .= 'pd.products_name, ';
		  break;
		case 'PRODUCT_LIST_MANUFACTURER':
		  $select_column_list .= 'm.manufacturers_name, ';
		  break;
		case 'PRODUCT_LIST_QUANTITY':
		  $select_column_list .= 'p.products_quantity, ';
		  break;
		case 'PRODUCT_LIST_IMAGE':
		  $select_column_list .= 'p.products_image, ';
		  break;
		case 'PRODUCT_LIST_WEIGHT':
		  $select_column_list .= 'p.products_weight, ';
		  break;
	  }
	}
// show the products of a specified manufacturer
	if (isset($HTTP_GET_VARS['manufacturers_id'])) {
	  if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
// We are asked to show only a specific category
		$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "'";
	  } else {
// We show them all
		$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'";
	  }
	} else {
// show the products in a given categorie
	  if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
// We are asked to show only specific catgeory
		$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
	  } else {
// We show them all
		$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
	  }
	}
	if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('^[1-8][ad]$', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
	  for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
		if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
		  $HTTP_GET_VARS['sort'] = $i+1 . 'a';
		  $listing_sql .= "order by pd.products_name";
		  break;
		}
	  }
	} else {
	  $sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);
	  $sort_order = substr($HTTP_GET_VARS['sort'], 1);
	  switch ($column_list[$sort_col-1]) {
		case 'PRODUCT_LIST_MODEL':
		  $listing_sql .= " order by p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
		case 'PRODUCT_LIST_NAME':
		  $listing_sql .= " order by pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
		  break;
		case 'PRODUCT_LIST_MANUFACTURER':
		  $listing_sql .= " order by m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
		case 'PRODUCT_LIST_QUANTITY':
		  $listing_sql .= " order by p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
		case 'PRODUCT_LIST_IMAGE':
		  $listing_sql .= " order by pd.products_name";
		  break;
		case 'PRODUCT_LIST_WEIGHT':
		  $listing_sql .= " order by p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
		case 'PRODUCT_LIST_PRICE':
		  $listing_sql .= " order by final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
		  break;
	  }
	}
?>
	<td class="<?php echo CONTENT_WIDTH_TD; ?>"><?php echo panel_top(); ?>
<?php echo tep_draw_top();?>
<?php
// optional Product List Filter
if (PRODUCT_LIST_FILTER > 0) {
	  if (isset($HTTP_GET_VARS['manufacturers_id'])) {
		$filterlist_sql = "select distinct c.categories_id as id, cd.categories_name as name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where p.products_status = '1' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and p2c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' order by cd.categories_name";
	  } else {
		$filterlist_sql= "select distinct m.manufacturers_id as id, m.manufacturers_name as name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_MANUFACTURERS . " m where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$current_category_id . "' order by m.manufacturers_name";
	  }
	  $filterlist_query = tep_db_query($filterlist_sql);
	  if (tep_db_num_rows($filterlist_query) > 1) {
	echo tep_draw_side_top();
		echo '
  <table cellpadding="0" cellspacing="0" border="0" class="select2">
   <tr><td align="right" class="main">' . tep_draw_form('filter', FILENAME_DEFAULT, 'get') . '<b>'.TEXT_SHOW . '</b>&nbsp;&nbsp;';
		if (isset($HTTP_GET_VARS['manufacturers_id'])) {
		  echo tep_draw_hidden_field('manufacturers_id', $HTTP_GET_VARS['manufacturers_id']);
		  $options = array(array('id' => '', 'text' => TEXT_ALL_CATEGORIES));
		} else {
		  echo tep_draw_hidden_field('cPath', $cPath);
		  $options = array(array('id' => '', 'text' => TEXT_ALL_MANUFACTURERS));
		}
		echo tep_draw_hidden_field('sort', $HTTP_GET_VARS['sort']);
		while ($filterlist = tep_db_fetch_array($filterlist_query)) {
		  $options[] = array('id' => $filterlist['id'], 'text' => $filterlist['name']);
		}
		echo tep_draw_pull_down_menu('filter_id', $options, (isset($HTTP_GET_VARS['filter_id']) ? $HTTP_GET_VARS['filter_id'] : ''), 'onchange="this.form.submit()"');
		echo tep_hide_session_id() . '</form></td></tr>
  </table>' . "\n";
  echo tep_draw_side_bottom();
	  }
	}
 
// Get the right image for the top-right
	$image = DIR_WS_IMAGES . 'table_background_list.gif';
	if (isset($HTTP_GET_VARS['manufacturers_id'])) {
	  $image = tep_db_query("select manufacturers_image from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'");
	  $image = tep_db_fetch_array($image);
	  $image = $image['manufacturers_image'];
	} elseif ($current_category_id) {
	  $image = tep_db_query("select categories_image from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
	  $image = tep_db_fetch_array($image);
	  $image = $image['categories_image'];
	}
?>
	<?php include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?>

 
<?php echo tep_draw3_bottom();?>
<?php echo tep_draw_bottom();?> 

</td>
<?php
  } else { // default page
?>
	<td class="<?php echo CONTENT_WIDTH_TD; ?>"><?php echo panel_top(); ?><?php include(DIR_WS_BOXES . 'panel_top2.php');?>
<?php echo tep_draw_top();?>

<!-- Welcome_box_start -->
<?php /*  tep_draw_heading_top();  */?>
<?php /*  tep_draw_heading_top_3();  */?>
<?php   /*  echo tep_draw_prod_top();  */  ?>
	 <!--   <table border="0" width="100%" cellspacing="0" cellpadding="0">
		  <tr><td class="main"><?php /*  echo tep_customer_greeting();  */	?></td></tr>
		  <tr><td><?php	/*  echo tep_draw_separator('pixel_trans.gif', '100%', '10');  */   ?></td></tr>
		  <tr><td class="main"><?php	/*   echo TEXT_MAIN;  */	?></td></tr>
		</table>  -->
		
<?php   /*  echo tep_draw_prod_bottom();  */   ?>
<?php /*  tep_draw_heading_bottom_3();  */?>
<?php  /*   echo tep_draw_separate();	*/   ?>
<!-- Welcome_box_end -->
	 
	<?php /*  new contentBoxHeading_ProdNew($info_box_contents);  */?>
<?php echo tep_draw3_top();?>
 
	<?php include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS); ?>
<!--- BEGIN Header Tags SEO Social Bookmarks -->
		  <?php if (HEADER_TAGS_DISPLAY_SOCIAL_BOOKMARKS == 'true')
		   include(DIR_WS_MODULES . 'header_tags_social_bookmarks.php');
		  ?>
		  <!--- END Header Tags SEO Social Bookmarks --> 
	  
<?php echo tep_draw3_bottom();?>
   
<?php echo tep_draw_bottom();?> 
 
</td>
<?php
  }
?>
<!-- body_text_eof //-->
<td class="<?php echo BOX_WIDTH_TD_RIGHT; ?>"><table border="0" class="<?php echo BOX_WIDTH_RIGHT; ?>" cellspacing="0" cellpadding="0">
<!-- right_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
<!-- right_navigation_eof //-->
	</table></td>
  </tr>
</table>
<!-- body_eof //-->
<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>


#20   NodsDorf

NodsDorf
  • Members
  • 1,274 posts

Posted 07 May 2012 - 05:49 PM

well as far as I can see it seems to say to sort by products_name
REF:
 if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('^[1-8][ad]$', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
		  for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
			if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
				  $HTTP_GET_VARS['sort'] = $i+1 . 'a';
				  $listing_sql .= "order by pd.products_name";
				  break;
			}
		  }
	} else {
		  $sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);
		  $sort_order = substr($HTTP_GET_VARS['sort'], 1);
		  switch ($column_list[$sort_col-1]) {
			case 'PRODUCT_LIST_MODEL':
				  $listing_sql .= " order by p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
				  break;
			case 'PRODUCT_LIST_NAME':
				  $listing_sql .= " order by pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
				  break;
			case 'PRODUCT_LIST_MANUFACTURER':
				  $listing_sql .= " order by m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
				  break;
			case 'PRODUCT_LIST_QUANTITY':
				  $listing_sql .= " order by p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
				  break;
			case 'PRODUCT_LIST_IMAGE':
				  $listing_sql .= " order by pd.products_name";
				  break;
			case 'PRODUCT_LIST_WEIGHT':
				  $listing_sql .= " order by p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
				  break;
			case 'PRODUCT_LIST_PRICE':
				  $listing_sql .= " order by final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
				  break;
		  }
	}
Why it wouldn't be I don't know. I do see an !ereg('^[1-8][ad]$' function in there which should be changed to !preg_match('/^[1-8][ad]$/' since its not
php 5.3 compatible.