Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Products Sorting by ID not Name - How To Change?


NavCopy

Recommended Posts

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

Link to comment
Share on other sites

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..

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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(' » ')?>

<?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' => ' ' . $lc_text . ' ');
 }
 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 = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a> ';
		  $lc_text .= $lc_add;
		}
		/*** End Header Tags SEO ***/
		break;
	  case 'PRODUCT_LIST_MANUFACTURER':
		$lc_align = '';
		$p_manufact = '<tr>
   <td><b><font>'.TABLE_HEADING_MANUFACTURER.' :</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.' :</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.' :</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
 }
?>

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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'

Link to comment
Share on other sites

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;
  }
   }

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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>  ';
    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'); ?>

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

The index file is where I started looking but found no solution. Looks like no easy fix so I will have to just accept this is what it is and move on.

 

Thanks for all the help,

Nav

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...