Jump to content



Latest News: (loading..)

arkisaeo

Member Since 07 Sep 2010
OFFLINE Last Active Feb 01 2013 03:09 PM
-----

Topics I've Started

Special Prices not showing on Product Listing pages

28 January 2013 - 05:05 AM

Hey all,

Well, I'm putting some products up for sale (30% off) on a website.

On the invidual product pages, the special prices show up as expected.

Example 1:

$10.00 $7.00


But on the category product listing pages, the price only shows up as the original price.

Example 2:

$10.00


My question is:  How do I fix the product listing page so the special prices are also displayed (as in Example 1)?


There have been some mods done to the product_listing page, particularly this contrib:
http://addons.oscommerce.com/info/8102

This is the current code I'm working with on the product_listing page:

<?php
/*
  $Id: product_listing.php,v 2 2008/06/30 22:49:59 hpdl Exp $
  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com
  Copyright (c) 2003 osCommerce
  Released under the GNU General Public License
*/
$debug = 'no'; // set to 'yes' if there are any problems & report alert message in the forum.
$show_ratings = false; // set to true to show the products average review rating
if ($debug == 'yes') {
if (PRODUCT_THUMBNAIL_VIEW == 'PRODUCT_THUMBNAIL_VIEW') $to = 'PRODUCT_THUMBNAIL_VIEW not set\n' ;
if (PRODUCT_SHORT_DESC == 'PRODUCT_SHORT_DESC') $to .= 'PRODUCT_SHORT_DESC not set\n' ;
if (MANU_DESCRIPTION == 'MANU_DESCRIPTION') $to .= 'MANU_DESCRIPTION not set\n' ;
if (PRODUCT_IMAGE_WIDTH == 'PRODUCT_IMAGE_WIDTH') $to .= 'PRODUCT_IMAGE_WIDTH not set\n' ;
if (PRODUCT_LIST_WIDTH == 'PRODUCT_LIST_WIDTH') $to .= 'PRODUCT_LIST_WIDTH not set\n' ;
if (PRODUCT_LIST_HEIGHT == 'PRODUCT_LIST_HEIGHT') $to .= 'PRODUCT_IMAGE_WIDTH not set\n' ;
if (PRODUCT_PRICE_SIZE == 'PRODUCT_PRICE_SIZE') $to .= 'PRODUCT_PRICE_SIZE not set\n' ;
if (PRODUCTS_PER_ROW == 'PRODUCTS_PER_ROW') $to .= 'PRODUCTS_PER_ROW not set\n' ;
if (LISTING_BUTTON == 'LISTING_BUTTON') $to .= 'LISTING_BUTTON not set\n' ;
if (LISTING_HEADINGS == 'LISTING_HEADINGS') $to .= 'LISTING_HEADINGS not set\n' ;
$to .= 'PRODUCT_IMAGE_WIDTH set to: '.PRODUCT_IMAGE_WIDTH;
if ($to) print "<script>alert('$to');</script>";
  }
$thumbnail_view = (isset($HTTP_GET_VARS['list']) ? $HTTP_GET_VARS['list'] : PRODUCT_THUMBNAIL_VIEW);
$empty_list=false;
$gborders = function_exists(mws_boxHeader);
$Tborder = (!$gborders ? '<table class="infoBoxList" width="100%"><tr><td>' : mws_boxHeader ());
$Tborderend = (!$gborders ? '</td></tr></table>' : mws_boxFooter ());
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');
  if ( ($listing_split->number_of_rows > MAX_DISPLAY_SEARCH_RESULTS) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
  <tr>
	<td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
	<td class="smallText" 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
}
///////ossdescription and rating
  $data_ok = ($listing_split->number_of_rows > 0);
if ((PRODUCT_LIST_DESCRIPTION ) && $data_ok) {
  $listing_query = tep_db_query($listing_split->sql_query);
  while ($products = tep_db_fetch_array($listing_query)) $id_array[] = $products['products_id']; 
  $pid_string = implode(',', array_unique($id_array));
	$product_query = tep_db_query("select products_id, products_description from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id in (" . $pid_string . ") and language_id = '" . (int)$languages_id . "'");
  while ($products = tep_db_fetch_array($product_query)) {   
	$t_desc[$products['products_id']] = substr(strip_tags($products['products_description']), 0, PRODUCT_LIST_DESCRIPTION_MAX_LENGTH); 
   }
}
if ($show_ratings && $data_ok) {
	$rating_query = tep_db_query("select count(*) as count, products_id, sum(reviews_rating) as total from " . TABLE_REVIEWS . " where products_id in (" . $pid_string . ") group by products_id");
  while ($rating = tep_db_fetch_array($rating_query)) {   
	$review[$rating['products_id']] = ceil($rating['total'] / $rating['count']); 
   }
}
function product_description($product_id,$link,$thumb=false) {
	global $head_title, $t_desc, $review;
  if ($review[$product_id]) $rating = '<span class="smallText"><br />' . sprintf(tep_image(DIR_WS_IMAGES . 'stars_' . $review[$product_id] . '.gif',sprintf(TEXT_AVERAGE_REVIEW,$review[$product_id]))) . '</span>';
   if (PRODUCT_LIST_DESCRIPTION) {
	 return ($head_title || $thumb ? '' : '<br />') . '<span class="productListing-short">' . $t_desc[$product_id] . $link . '<b>...' . TEXT_VIEW . '</b></a></span>' . $rating;
  } else {
  return $rating;
  }
  }
///////eof ossdescription
if ($thumbnail_view == 'thumbnails') {  //thumbnail
 
  $row = 0;
  $col = 0;
  $border = '<table class="infoBoxProducts" cellpadding="4" width="'.PRODUCT_LIST_WIDTH.'" height="'.PRODUCT_LIST_HEIGHT.'"><tr><td>';
$borderend = '</td></tr></table>';
$info_box_contents = array();
if ($listing_split->number_of_rows > 0) { $rows = 0;  $listing_query = tep_db_query($listing_split->sql_query);} else {
		$listing_query = tep_db_query($listing_sql); }
while ($products = tep_db_fetch_array($listing_query)) {
	if ($row == 0) {
	if (!$gborders) $info_box_contents[$row][$col] = array('align' => 'center',
										   'params' => 'class="smallText" width="'.(100/PRODUCTS_PER_ROW).'%" valign="top"',
										   'text' =>  '&nbsp;'); 
					  echo $Tborder;$row ++;
				 }
  $image = $products['products_image'];
  if (file_exists(DIR_WS_CLASSES . 'displayimages.php')) {  // Additional Images Present
  $image_query = tep_db_query( "SELECT medium_images FROM " . TABLE_ADDITIONAL_IMAGES . " WHERE products_id = '".(int)$products['products_id']."'");
	$selected_image = tep_db_fetch_array($image_query);$image = ($selected_image['medium_images'] ? $selected_image['medium_images'] : ($selected_image['products_image_med'] ? $selected_image['products_image_med'] : $products['products_image'])); }
 
  $button = (LISTING_BUTTON != 'none' && PRODUCT_LIST_BUY_NOW ? (LISTING_BUTTON == 'buy now' ? '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $products['products_id']) . '">' . tep_draw_button(IMAGE_BUTTON_BUY_NOW, 'cart', null, 'primary') . '</a><br><br>' : (LISTING_BUTTON == 'small buy now' ? '<br><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $products['products_id']) . '">' . tep_draw_button(ICON_ARROW_RIGHT, 'cart', null, 'primary') . '</a><br><br>' :  (LISTING_BUTTON == 'buy now & details' ? '<br><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $products['products_id']) . '">' . tep_draw_button(ICON_ARROW_RIGHT, 'cart', null, 'primary') . '</a>&nbsp;<span class="buy_now">|</span>&nbsp;<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']) . '">' . tep_draw_button(SMALL_IMAGE_BUTTON_VIEW, 'cart', null, 'primary') . '</a><br><br>' : '<br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']) . '">' . tep_draw_button(SMALL_IMAGE_BUTTON_VIEW, 'cart', null, 'primary') . '</a><br><br>' ))) : '&nbsp;');
	
  $price = (function_exists(display_short_price)) ? $currencies->display_short_price($products['products_price'], tep_get_tax_rate($products['products_tax_class_id'])) : $currencies->display_price($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));	 
 
///////ossdescription
   
	$name = '<div class="productListing-name">' . $link . $products['products_name'] . '</a></div>'. ($products['short_desc'] && (PRODUCT_SHORT_DESC == 'true') ? '' . $products['short_desc'] . '<br />' : '') . product_description($products['products_id'],$link, true);
	
///////eof ossdescription
  $show_price = '<font size="'.PRODUCT_PRICE_SIZE.'">' . ($products['products_price'] > 0 ? $price : 'P.O.A') . '</font>';
	if (!PRODUCT_LIST_PRICE) $show_price = '';
	$model=(PRODUCT_LIST_MODEL ? $products['products_model'] . '<br><br>' :'');
	$info_box_contents[$row][$col] = array('align' => 'center',
										   'params' => 'class="smallText" width="'.(100/PRODUCTS_PER_ROW).'%" valign="top"',
										   'text' => $border . '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $image, $products['products_name'], PRODUCT_IMAGE_WIDTH, '') . '</a>' . '<br><br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']) . '">'. ($products['short_desc'] && (PRODUCT_SHORT_DESC == 'true') ? $products['short_desc'] . '<br><br>' : '') . $model . $show_price . $name . $borderend . $button);

	$col ++;
	if ($col > PRODUCTS_PER_ROW-1) {
	  $col = 0;
	  $row ++;
	}
} 
  $col = 0;$row ++;$info_box_contents[$row][$col] = array('align' => 'center',
										   'params' => 'class="smallText" width="'.(100/PRODUCTS_PER_ROW).'%" ',
										   'text' =>  '&nbsp;');
   if ($gborders) new noborderBox($info_box_contents); else new contentBox($info_box_contents);
 
  echo $Tborderend;
 
 
				
} else {$empty_list=true; }  // no manufacturers!!
if (($thumbnail_view == 'empty_list') || $empty_list) {   //default

  $list_box_contents = array();
  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 = 'center';
		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 = '';
		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 = '';
		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($_GET['sort'], $col+1, $lc_text);   }
	if (LISTING_HEADINGS == 'true') $list_box_contents[0][] = array('align' => $lc_align, 'params' => '<div class="ui-widget-header ui-corner-top infoBoxHeading">', '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_MODEL':
			$lc_align = 'center';
			$lc_text = '&nbsp;' . $listing['products_model'] . '&nbsp;';
			break;
		  case 'PRODUCT_LIST_NAME':
			$lc_align = '';
///////ossdescription  
			  $man_id = (tep_not_null($_GET['manufacturers_id']) ? $_GET['manufacturers_id'] : '');
  $link = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id'] . ($man_id ? '&manufacturers_id='.$man_id : ($cPath && $cat_path ? '&cPath=' . $cPath : '')) ) . '"' . ($man_id || ($cat_path && $cat_path) ? ' rel="nofollow"' : '') . '>';
  $lc_text = '&nbsp;' . $link . '<span class="productListing-name">' . $listing['products_name'] . '</span></a>' . product_description($listing['products_id'],$link);
///////eof ossdescription
 
		   break;
		  case 'PRODUCT_LIST_MANUFACTURER':
			$lc_align = '';
			$lc_text = '&nbsp;<a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing['manufacturers_id']) . '">' . $listing['manufacturers_name'] . '</a>&nbsp;';
			break;
		  case 'PRODUCT_LIST_PRICE':
		   /* $lc_align = 'right';
	  $price = (function_exists(display_short_price)) ? $currencies->display_short_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) : $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id']));
			if (tep_not_null($listing['specials_new_products_price'])) {
			  $lc_text = '&nbsp;<s>' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</s>&nbsp;&nbsp;<span class="productSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>&nbsp;';
			} else {
		 $lc_text = ($listing['products_price'] > 0 ? '&nbsp;' . $price . '&nbsp;' : '&nbsp;' . TEXT_POA);
if (function_exists(tep_get_att_price)) $lc_text .= (tep_get_att_price($listing['products_id']) > 0 ? '+' : '&nbsp;') ;
	  
			}*/
			 if (tep_not_null($listing['specials_new_products_price'])) {
			  $prod_list_contents .= '<del>' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</del><span class="productSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
			} else {
			  $prod_list_contents .= '' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '';
			}
		   
			break;
		  case 'PRODUCT_LIST_QUANTITY':
			$lc_align = 'right';
			$lc_text = '&nbsp;' . $listing['products_quantity'] . '&nbsp;';
			break;
		  case 'PRODUCT_LIST_WEIGHT':
			$lc_align = 'right';
			$lc_text = '&nbsp;' . $listing['products_weight'] . '&nbsp;';
			break;
		  case 'PRODUCT_LIST_IMAGE':
			$lc_align = 'center';
			if (isset($_GET['manufacturers_id'])) {
			  $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $_GET['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 {
			  $lc_text = '&nbsp;<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>&nbsp;';
			}
			break;
		  case 'PRODUCT_LIST_BUY_NOW':
	   $button = (LISTING_BUTTON == 'buy now' ? '<br><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_draw_button(IMAGE_BUTTON_BUY_NOW, 'cart', tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id'])) . '</a>&nbsp;' : (LISTING_BUTTON == 'small buy now' ? '<br><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_draw_button(ICON_ARROW_RIGHT, 'cart', null, 'primary') . '</a>&nbsp;' : '<br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . tep_draw_button(SMALL_IMAGE_BUTTON_VIEW, 'cart', tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id'])) . '</a>&nbsp;' ));
			$lc_align = 'center';
			$lc_text = $button;
		   break;
		}
   
		$list_box_contents[$cur_row][] = array('align' => $lc_align,
											   'params' => 'class="productListing-data" ',
											   'text'  => $lc_text);
	  }
	}
	new productListingBox($list_box_contents);
  } else {
	$list_box_contents = array();
	$list_box_contents[0] = array('params' => 'class="productListing-odd"');
	$list_box_contents[0][] = array('params' => 'class="productListing-data"',
								   'text' => TEXT_NO_PRODUCTS);
	new productListingBox($list_box_contents);
  }
  }
	 if ( ($listing_split->number_of_rows > MAX_DISPLAY_SEARCH_RESULTS) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3')) ) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
  <tr>
	<td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
	<td class="smallText" 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
  }	
if ($thumbnail_view != 'list' && LISTING_SWITCH != 'false') echo '<br><span class="smalltext"><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('list')). 'list='.($thumbnail_view == 'thumbnails' ? 'manufacturer' : 'thumbnails')) . '">' . ($thumbnail_view == 'thumbnails' ? 'List View' : 'Thumbnail View').'</a></span><br /><br />';
?>



Any ideas on how to fix this?

Having 2 problems with the USPS mod

02 October 2012 - 01:39 PM

I installed the default USPS mod (the one that comes with the cart--v.2.3) and I am on the production server, but I am having 2 problems:

1. The USPS mod is set up to be used only for international shipping. The problem is, the checkout won't go beyond the checkout_shipping.php page. The "continue" button just keeps refreshing the page.
I don't get any error messages, and it is the only option for international shipping (with the whole "This is currently the only shipping method available to use on this order." message).


2. The other problem is the weight calculations are wrong.
If I put 0.50 (half a pound), the weight shows as "United States Postal Service (1 x 3.5lbs)"
If I put 1.00 (one pound), the weight shows as "United States Postal Service (1 x 4lbs)"


I'm not sure if there is anything that needs edited in the checkout or usps files, or in the database?

(also, paypal is currently the only payment option available)