Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Product Listing Enhancements, Thumbnails & Manufacturer Headings


spooks

Recommended Posts

o sorry, I had put the quantity box temporarily on false on the live version of the site.

 

 

The only remaining reason I could think would be having more than one instance of Display Product Options in admin, causing your setting to be ignored, or something else setting PRODUCT_LIST_OPTIONS

 

you could check its value by changing (361)

 

   	$button = '<div align="right" width="100%">' . $quantity_box . '</div>' . ($last ? '' : '  ') . $button;

 

to

 

   	$button = PRODUCT_LIST_OPTIONS . '<div align="right" width="100%">' . $quantity_box . '</div>' . ($last ? '' : '  ') . $button;

 

you should then get true appear just above the buy now button, anything else & its as I said b4

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

It will do that, all details are in the doc, ie:

 

 

Features

  • Products in columns with thumbnails in a distributed display or a strict grid mode, you can set how many columns in admin.
  • Products in a variety of list modes including a block mode (like new products display) where you control whats in what column.
  • Rounded Borders: Product thumbnails can have rounded borders.
  • Manufacturer: The option of manufacturer headings and if wished a manufacturer short description.
  • Drop down boxes for display sorting.
  • Drop down boxes to set number of products to show per page.
  • Listing mode switch, allows your visitors to switch between two modes.
  • Quantity input boxes with incremental buttons.
  • Drop Down Quantity Box: Option of a drop down for the quantity box instead of a input box.
  • Checkboxes: Option to show a checkbox field in place of other quantity boxes, will only show for multi add to cart.
  • A multi buy option (with attribute support) to allow visitors to purchase multiple products from the listing in mutliple quantities at once.
  • Global Headings: List mode global headings, you can have the product name & price on its own line above all other fields.
  • Tool tip images: Product images can have a tool tip mouseover zoom.
  • Tool tip info boxs: Any text field can have tool tip info box (set in your language file).
  • Set Column Contents: Set contents of center & rightmost columns in any list block mode.
  • Product attributes (options) can be included in the listing.
  • Review Rating: The option of showing the products average review rating within the listing.
  • Product Description: A truncated version of the product description can be included, you set how big.
  • A short decription can be included if you add the Short Description add-on (http://addons.oscommerce.com/info/3123)
  • Supports Additional Images (http://addons.oscommerce.com/info/1032)
  • Supports Easy Graphic Borders if you want pretty borders(http://addons.oscommerce.com/info/1702)
  • Supports Products Extra Fields (http://addons.oscommerce.com/info/2202)
  • Supports SaleMaker (http://addons.oscommerce.com/info/1340)
  • CSS control of most aspects of any element displayed.
  • Control over the inclusion of category paths in product links.
  • Control of heading displays.

Hi Spooks

 

I am stuck with my tooltip mouseover zoom image coming up behind the thumbnail image of the product below instead of on top. I think it's not finding the javascript code.

 

I have set up the product listing page to display in rows and have placed the tooltip javascript inside this page. I've modified the product listing file as recommended by the tooltips instructions, however the piece of code I was tryig to match it to was not the same.

 

Recommended changes are as follows.

Replace:

 

$lc_text = ' <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> ';

 

With:

$lc_text = ' <a class="image" href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '" onmouseover="doTooltip(event,\'images/' .$listing['products_mediumimage'].'\')" onmouseout="hideTip()">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> ';

My code modified looks like this.

function list_row ($listing, $column_list) {

global $rows, $gborders, $list_box_contents, $cPath, $cat_path, $head_title;

$list_box_contents[][] = array('text' => '<br />');

if (!$rows && $gborders) $list_box_contents = array();

$rows++;

$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'] . '" onmouseover="doTooltip(event,\'images/' . $listing['products_mediumimage'].'\')" onmouseout="hideTip()">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . ($man_id ? '&manufacturers_id='.$man_id : ($cPath && $cat_path ? '&cPath=' . $cPath : '')) ) . '"' . ($man_id || ($cat_path && $cat_path) ? ' rel="nofollow"' : '') . '>';

if ($head_title) { $list_box_contents[][] = array('align' => 'left',

'params' => 'colspan="'.sizeof($column_list).'" class="productListing-title"',

'text' => $link . '<b>' . $listing['products_name'] . '</b></a>');}

$list_box_contents[] = list_box_data($listing, $column_list, $link);

$list_box_contents[][] = array('align' => 'center',

'params' => 'class="separator" colspan="'.sizeof($column_list).'"',

'text' => '<br />');

return true;

}

Can you help...please.

Link to comment
Share on other sites

The only remaining reason I could think would be having more than one instance of Display Product Options in admin, causing your setting to be ignored, or something else setting PRODUCT_LIST_OPTIONS

 

you could check its value by changing (361)

 

   	$button = '<div align="right" width="100%">' . $quantity_box . '</div>' . ($last ? '' : '  ') . $button;

 

to

 

   	$button = PRODUCT_LIST_OPTIONS . '<div align="right" width="100%">' . $quantity_box . '</div>' . ($last ? '' : '  ') . $button;

 

you should then get true appear just above the buy now button, anything else & its as I said b4

 

Hi Sam,

 

I have tried this and now it shows the number of the value of the first display product options in the configuration table. So 6 instead of True.

 

Regards,

 

Evelien

Link to comment
Share on other sites

 

 

oops, just spotted that's in the sql!! How did that happen! blush.gif

 

Sorry, apply the following sql with phpmyadmin should fix the issue.

 

 

DELETE FROM configuration WHERE configuration_key = 'PRODUCT_LIST_OPTIONS';

INSERT INTO `configuration` (`configuration_title`, `configuration_key`, `configuration_value`, `configuration_description`, `configuration_group_id`, `sort_order`, `last_modified`, `date_added`, `use_function`, `set_function`) VALUES

('Display Product Options', 'PRODUCT_LIST_OPTIONS', 'true', 'Do you want to display product options within the product listing.\r\nDisplay will be adjacent to buy now button.', 8, 9, NULL, now(), NULL, 'tep_cfg_select_option(array(\'true\', \'false\'),');

 

 

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

oops, just spotted that's in the sql!! How did that happen! blush.gif

 

Sorry, apply the following sql with phpmyadmin should fix the issue.

 

 

DELETE FROM configuration WHERE configuration_key = 'PRODUCT_LIST_OPTIONS';

INSERT INTO `configuration` (`configuration_title`, `configuration_key`, `configuration_value`, `configuration_description`, `configuration_group_id`, `sort_order`, `last_modified`, `date_added`, `use_function`, `set_function`) VALUES

('Display Product Options', 'PRODUCT_LIST_OPTIONS', 'true', 'Do you want to display product options within the product listing.\r\nDisplay will be adjacent to buy now button.', 8, 9, NULL, now(), NULL, 'tep_cfg_select_option(array(\'true\', \'false\'),');

Hi Sam,

 

Briliant! That did the trick.

 

Thanks for your help.

Link to comment
Share on other sites

 

 

I am stuck with my tooltip mouseover zoom image coming up behind the thumbnail image of the product below instead of on top. I think it's not finding the javascript code.

 

 

 

This already includes a tooltip mouseover using pure css, no-javascript needed, just follow the instructions in the doc!!

 

ie8 can have an issue still:

 

edit your index.php & advanced search results.php & any others that call the listing:

 

immediatly after the

 

<head>add:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

Removing the Buy Now button on the listing page?

 

I am finding that it is redundant on my page to have the buy now and the details button next to

each other as they go to the same page -- product info.

 

Without messing the code up, can you direct me to the lines of code that need to be removed to just remove

buy now and leave only the other detail button?

Link to comment
Share on other sites

details button only

 

 

??? blink.gif

Standard option, please read the doc!!! wink.gif

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

??? blink.gif

Standard option, please read the doc!!! wink.gif

 

Sorry for the post. I realize now that there is a different function to the listing detail button and buy now. I did not realize it because I had options so either way it went to product info whereas with no options it does not. Great contrib just learning to use it better.

 

Charles

Link to comment
Share on other sites

This already includes a tooltip mouseover using pure css, no-javascript needed, just follow the instructions in the doc!!

 

ie8 can have an issue still:

 

edit your index.php & advanced search results.php & any others that call the listing:

 

immediatly after the

 

<head>add:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

 

Thanks for your response and advice Sam

This didn't work. I think I have some css issues, however I may have to revisit this issue at a later date.

I have a more pressing issue which I would like to ask your advice on.

I am trying to get the extra fields module to show the products options eg. the products have attributes as a range of colours in some cases. I have a multi-product option activated. I would like to have the customer be able to see the product then select an attribute and then add multiples to their cart. Ultimately I would like to be able to include another field that gives the customer the option of buying "5 for a certain price" as well.

How can I make this work?

I would appreciate any input you can give me.

Yours "Becoming Desperate" :'(

Here is the relevant file...

<?php
/*  
$Id: product_listing.php, v 2.2 2009/11/25 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
*/
$graphic_bord = 'no'; //  set to 'yes' if you have older 'graphic borders' and not 'easy graphic borders'.
$cat_path = false; // set to true to include category paths in urls
$no_drop = true; // set to true to remove resuls/page & sort order drop downs
$set_width = true; // set to false to allow columns to find their own widths in list mode
$ttip = true; // set to true to display tool tip pics on hover
$ttip_width = 320; // width of tooltip image on hover
$show_extra_fields = true; // set to true if you have products_extra_fields installed & you want to display the fields in the listing
$head_title = true; // Set to true so each listing entry will have its own product TITLE header (list modes only)
$multi_add = true; // Set to true to enable adding mutiple items to the cart at once
$global_add = 'both'; // If $multi_add = true, set position of buy button, top, bottom or both (ie the ends of the listing)
$qty_drop = false;// Set to true to have a drop down for quantity box instead of a input box
$last_size = 2;// set the size of the last column in block mode
if (tep_not_null($HTTP_GET_VARS['sort'])) $_GET['sort'] = $HTTP_GET_VARS['sort'];
$max_results = (tep_not_null($_GET['max']) ? $_GET['max'] : MAX_DISPLAY_SEARCH_RESULTS);
if (PRODUCTS_PER_ROW == 'PRODUCTS_PER_ROW' || PRODUCTS_PER_ROW == 0 || LISTING_SWITCH == 'LISTING_SWITCH') { $to = 'Setup Error!\nPlease ensure you have run the\nProduct Listing Setup File.' ; print "<script>alert('$to');</script>"; }
// sort order array
if ($_GET['sort'] == '0d') $sort_array[] = array('id' => 0 . 'd', 'text' => DATE_ORDER);
for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
     switch ($column_list[$i]) {
    case 'PRODUCT_LIST_MODEL':
                           $sort_array[] = array('id' => $i+1 . 'a', 'text' => TABLE_HEADING_MODEL . APHA_ORDER);
	  break;       
	case 'PRODUCT_LIST_NAME':
         $sort_array[] = array('id' => $i+1 . 'a', 'text' => TABLE_HEADING_PRODUCTS . APHA_ORDER);
         break;
       case 'PRODUCT_LIST_MANUFACTURER':
         $sort_array[] = array('id' => $i+1 . 'a', 'text' => TABLE_HEADING_MANUFACTURER . APHA_ORDER);
         break;
       case 'PRODUCT_LIST_QUANTITY':
         $sort_array[] = array('id' => $i+1 . 'a', 'text' => TABLE_HEADING_QUANTITY . NUM_ORDER);
         break;
       case 'PRODUCT_LIST_WEIGHT':
         $sort_array[] = array('id' => $i+1 . 'a', 'text' => TABLE_HEADING_WEIGHT . NUM_ORDER);
         break;
                               case 'PRODUCT_LIST_PRICE':
                                 $sort_array[] = array('id' => $i+1 . 'a', 'text' => TABLE_HEADING_PRICE . NUM_ORDER);
         break;
    }
   }
for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
     switch ($column_list[$i]) {
       case 'PRODUCT_LIST_MODEL':
                               $sort_array[] = array('id' => $i+1 . 'd', 'text' => TABLE_HEADING_MODEL . REVERSE_ALPHA_ORDER);
         break;
       case 'PRODUCT_LIST_NAME':
         $sort_array[] = array('id' => $i+1 . 'd', 'text' => TABLE_HEADING_PRODUCTS . REVERSE_ALPHA_ORDER);
         break;
       case 'PRODUCT_LIST_MANUFACTURER':
         $sort_array[] = array('id' => $i+1 . 'd', 'text' => TABLE_HEADING_MANUFACTURER . REVERSE_ALPHA_ORDER);
         break;
       case 'PRODUCT_LIST_QUANTITY':
         $sort_array[] = array('id' => $i+1 . 'd', 'text' => TABLE_HEADING_QUANTITY . REVERSE_NUM_ORDER);
         break;
       case 'PRODUCT_LIST_WEIGHT':
         $sort_array[] = array('id' => $i+1 . 'd', 'text' => TABLE_HEADING_WEIGHT . REVERSE_NUM_ORDER);
         break;
                               case 'PRODUCT_LIST_PRICE':
                                 $sort_array[] = array('id' => $i+1 . 'd', 'text' => TABLE_HEADING_PRICE . REVERSE_NUM_ORDER);
         break;
      }
   }
// Max Results Array
           for ($i=1; $i<10; $i++) {
                           $max_display[] = array('id' => MAX_DISPLAY_SEARCH_RESULTS * $i, 'text' => MAX_DISPLAY_SEARCH_RESULTS * $i);
	                    }
                        $max_display[] = array('id' => 1000000, 'text' => 'Show All');
// store GET vars
$get_vars = '';
   reset($_GET);
   while (list($key, $value) = each($_GET)) {
     if ( ($key != 'sort') && ($key != 'max') && ($key != tep_session_name()) && ($key != 'x') && ($key != 'y') ) {
       $get_vars .= tep_draw_hidden_field($key, $value);
     }
   }
$top_nav = ((PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3'));
$base_nav = ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3'));
$listing_split = new splitPageResults($listing_sql, $max_results, 'p.products_id');
$data_ok = ($listing_split->number_of_rows > 0);
$gbutton = ($data_ok ? tep_image_submit('button_multi_in_cart.gif', MULTI_ADD_ALT) : '') . '</div>';
$page_nav = '<table border="0" width="100%" cellspacing="0" cellpadding="2"><tr><td class="smallText">' .  $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS) . '</td><td class="smallText" align="right">' . TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))) . '</td></tr></table>';
$drop = $no_drop ? '' : '<table border="0" width="100%" cellspacing="0" cellpadding="2" class="drop"><tr><td class="smallText">Results/Page: '. tep_draw_form('maxdisplay', tep_href_link(basename($PHP_SELF), '', $request_type, false), 'get') . $get_vars . (isset($_GET['sort']) ? tep_draw_hidden_field('sort', $_GET['sort']) : '') .  tep_draw_pull_down_menu('max', $max_display, $_GET['max'], 'onChange="this.form.submit();"') . tep_hide_session_id().'</form></td><td class="smallText" align="right">Sort Order: ' . tep_draw_form('sorting', tep_href_link(basename($PHP_SELF), '', $request_type, false), 'get') . $get_vars . (isset($_GET['max']) ? tep_draw_hidden_field('max', $_GET['max']) : '') . tep_draw_pull_down_menu('sort', $sort_array, $_GET['sort'], 'onChange="this.form.submit();"') . tep_hide_session_id().'</form></td></tr></table>';
if ( ($listing_split->number_of_rows > (int)$max_results) && $top_nav ) echo $page_nav;
if ($top_nav && $data_ok) echo '<div id="drop1">' . $drop . '</div>';
if ($multi_add) { echo tep_draw_form('cart_quantity', tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action','products_id')) . 'action=add_multi')); if ($global_add != 'bottom') echo '<div class="multi_buy_now" id="gbutton1">' . $gbutton;	}
if (($show_ratings || 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));
	}
if (PRODUCT_LIST_DESCRIPTION && $data_ok) {
   $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 tep_get_category_name($category_id, $language_id) {
      $category_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$category_id . "' and language_id = '" . (int)$language_id . "'");
    $category = tep_db_fetch_array($category_query);

     return $category['categories_name'];
    }
function tep_get_manufacturer_name($manufacturer_id) {
      $manufacturers_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$manufacturer_id . "'");
    $manufacturer = tep_db_fetch_array($manufacturers_query);

     return $manufacturer['manufacturers_name'];
    }

function extra_fields($products_id) {
	global $languages_id;
   $extra_fields_text = '';
		if (tep_not_null(TABLE_PRODUCTS_EXTRA_FIELDS) && LISTING_EXTRA_FIELDS == 'true') {
     $extra_fields_query = tep_db_query("SELECT pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef, ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf WHERE ptf.products_extra_fields_id=pef.products_extra_fields_id and ptf.products_id=". (int) $products_id ." and (pef.languages_id = '0' or pef.languages_id = '".(int)$languages_id."') and ptf.products_extra_fields_value <> '' and pef.products_extra_fields_status ORDER BY pef.products_extra_fields_order");
		while ($extra_fields = tep_db_fetch_array($extra_fields_query)) {
		$extra_fields_text .= '<tr><td class="smallText"><span class="xtra-field-name">' . $extra_fields['name'] . ': </span><span class="xtra-field-value">' . $extra_fields['value'] . '</span></td></tr>';
		}		
	}	
	return $extra_fields_text;	
}	

function product_description($product_id,$link,$thumb=false) {
   global $head_title, $t_desc, $review;
	if ($review[$product_id]) $rating = '<span class="smallText"><br />' . sprintf(TEXT_AVERAGE_REVIEW, 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] . $rating;
	} else {
	return $rating; 
	}
 }	

function product_price ($listing,$last=false) {
   global $sale;
	$currencies = new currencies();
	$p_price = $listing['products_price'];
	$price = (function_exists(display_short_price)) ? $currencies->display_short_price($p_price, tep_get_tax_rate($listing['products_tax_class_id'])) : $currencies->display_price($p_price, tep_get_tax_rate($listing['products_tax_class_id'])); 
        if ($sale && $new_price = tep_get_products_special_price($listing['products_id'])) { 
									$price = '<s>' .  $price . '</s>' . ($last ? '<br />' : '  ') . '<span class="productSpecialPrice">' . $currencies->display_price($new_price, tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
				} elseif (tep_not_null($listing['specials_new_products_price'])) {
             $price = '<s>' .  $price . '</s>' . ($last ? '<br />' : '  ') . '<span class="productSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
         } 
	$price = ($p_price > 0 ? '' . $price . '' : '' . TEXT_POA); 
	if (function_exists(tep_get_att_price)) $price .= (tep_get_att_price($listing['products_id']) > 0 ? '+' : '') ; 

	return '<span class="productListing-list-price">' . $price . '</span>';		
 }


function list_row ($listing, $column_list) {
           global $rows, $gborders, $list_box_contents, $cPath, $cat_path, $head_title;
     $list_box_contents[][] = array('text' =>  '<br />');
		if (!$rows && $gborders) $list_box_contents = array();			
		$rows++;
           $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"' : '') . '>';
     if ($head_title) { $list_box_contents[][] = array('align' => 'left',
                                          'params' => 'colspan="'.sizeof($column_list).'" class="productListing-title"',
                                          'text' =>  $link . '<b>' . $listing['products_name'] . '</b></a>');}
           $list_box_contents[] =  list_box_data($listing, $column_list, $link);
		$list_box_contents[][] = array('align' => 'center',
                                          'params' => 'class="separator" colspan="'.sizeof($column_list).'"',
                                          'text' =>  '<br />');	
		return true;																		 
		}		
?>
<script type="text/javascript" language="javascript">
<!--
function changeValue(inObject,delta)
{  var myVal = parseInt(inObject.value);
	isNaN(myVal) ? myVal = delta : myVal = myVal + delta;
	inObject.value = Math.max(myVal,0); 
	return; }
// -->
</script>
<?php
function quantity ($products_id) {
       global $multi_add, $qty_drop, $thumbnail_view;
                       if (PRODUCT_LIST_QUANTITY_BOX == 'true' && strstr(LISTING_BUTTON, 'buy now')) {
									if (tep_has_product_attributes($products_id) && PRODUCT_LIST_OPTIONS != 'true') return false;
                                       if (!$qty_drop)
                                       return '<table  cellspacing="0" cellpadding="2"><tr><td class="quantity" >' . QUANTITY . tep_draw_input_field('cart_quantity' . ($multi_add ? '[]' : '') , ($multi_add ? '0' : '1') , 'maxlength="5" size="2" id="qid'.$products_id.'"') . ($multi_add ? tep_draw_hidden_field('products_id[]', $products_id) : '') . '</td><td><a href="javascript:changeValue(document.getElementById(\'qid'.$products_id.'\'),1);">' . tep_image_button('btn_up.gif',MORE) . '</a><br><a href="javascript:changeValue(document.getElementById(\'qid'.$products_id.'\'),-1);">' . tep_image_button('btn_down.gif',LESS) . '</a></td></tr></table>';
                                       else
                               $qty_array = array(); $pstock = min(tep_get_products_stock($products_id),MAX_QTY_IN_CART);
                               for ($i=0; $i<=$pstock; $i++) { $qty_array[]=array('id' => $i, 'text' => $i); }
                               return ($pstock ? '<div class="quantity" align="' . (strstr($thumbnail_view, 'thumbnails') ? 'center' : 'right' ) .'">' . QUANTITY . tep_draw_pull_down_menu('cart_quantity'.($multi_add ? '[]' : ''),$qty_array,($multi_add ? 0 : 1)) . '<br />' . ($multi_add ? tep_draw_hidden_field('products_id[]', $products_id) : '') . '</div>' : false);
                                       } else { return false; }
                       }

function list_box_head($column_list) {
 global $set_width;
 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 = 'center';
       break;
     case 'PRODUCT_LIST_PRICE':
       $lc_text = TABLE_HEADING_PRICE;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_PRICE_EX':
       $lc_text = TABLE_HEADING_PRICE_EX;
       $lc_align = 'center';
       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 = (PRODUCT_LIST_OPTIONS == 'true'  ? 'Product Options</td><td align="center" class="productListing-heading">' : '') . (strstr(LISTING_BUTTON, 'buy now')? TABLE_HEADING_BUY_NOW : TABLE_HEADING_DETAIL);
       $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);
   }
  $list_box_contents[] = array('align' => $lc_align,
  								'params' => 'class="productListing-heading" ' . ($set_width ? 'width="'.(int)(100/sizeof($column_list)) . '%"' : ''),
							'text' => ' ' . $lc_text . ' ');
 }
 return ($list_box_contents);
}
// function list_head end
function list_box_data($listing, $column_list, $link) {
       global $PHP_SELF, $ttip, $ttip_width, $head_title, $rows, $set_width, $multi_add, $last_size;
                               $currencies = new currencies();
               $alt_text = $listing['products_name'];
               $image = (file_exists(DIR_WS_IMAGES . $listing['products_image']) ? $listing['products_image'] : 'no-image.jpg');
			$image = '<span class="ttip">' . $link . tep_image(DIR_WS_IMAGES . $image, $alt_text, PRODUCT_IMAGE_WIDTH, PRODUCT_IMAGE_HEIGHT) . ($ttip ? tep_image(DIR_WS_IMAGES . $image, $alt_text, $ttip_width, '', 'class="large"') : '' ) . '</a></span>';
                               $name = (!$head_title ? $link.'<b>' . $listing['products_name'] . '</b></a>' : ' ');
                               if (LISTING_BUTTON != 'none' && PRODUCT_LIST_BUY_NOW) {
       $buypic = (LISTING_BUTTON == 'buy now' ? 'button_in_cart.gif' : 'button_buy_now.gif');
                               $quantity_box = quantity ($listing['products_id']);
                               $form = ($multi_add ? '' : tep_draw_form('cart_quantity_' . $rows, tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action','products_id')) . 'action=add_product')));
                               $buytable = '<table class="buytable" border="0" width="100%" cellspacing="0" cellpadding="2"><tr><td valign="bottom" class="productListing-data">';
                               $buytableend = '</td></tr></table>'. ($multi_add ? '' : '</form>');
                               $detail = $link . tep_image_button((strstr(LISTING_BUTTON, '&') || (strstr(LISTING_BUTTON, 'small')) ? 'button_details_small.gif' : 'button_details.gif'), IMAGE_BUTTON_DETAILS, 'class="thm_buy_now"') . '</a> ';
                               $add_cart = ($multi_add ? ($quantity_box && PRODUCT_LIST_QUANTITY_BOX == 'true' ? '' : $detail) : tep_draw_hidden_field('products_id', $listing['products_id']) . tep_image_submit($buypic, IMAGE_BUTTON_BUY_NOW, 'class="thm_buy_now"'));
                               $button = (LISTING_BUTTON == 'buy now & details' ? ($add_cart == $detail ? $add_cart : $add_cart . ' <span class="buy_now">|</span> ' . $detail ) : (strstr(LISTING_BUTTON, 'buy now') ? $add_cart : $detail ));
                               if ($listing['products_price'] == 0 || (isset($listing['products_quantity']) && !$listing['products_quantity'])) { $button = $detail; $quantity_box = '';}//'<span class="buy_now"> </span>'.
                               }
                               $list_box_temp =  array('params' => 'class="list-block"');
							if (!strstr(PRODUCT_THUMBNAIL_VIEW, 'block'))   {
	                        for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
       $lc_align = '';
			$params = 'class="productListing-data" ' . ($set_width ? 'width="'.(int)(100/sizeof($column_list)) . '%"' : '') . ' valign="top" ';
       switch ($column_list[$col]) {
         case 'PRODUCT_LIST_MODEL':
           $lc_align = 'center';
           $lc_text = ' ' . $listing['products_model'] . ' ';
           break;
         case 'PRODUCT_LIST_NAME':
		$lc_align = '';
           $lc_text = $name . ($listing['short_desc'] && (PRODUCT_SHORT_DESC == 'true') ? '<br /><span class="short">' . $listing['short_desc'] . '</span>' : '') . product_description($listing['products_id'],$link);
                                               $extra_fields_text = extra_fields($listing['products_id']);
                                               if ($extra_fields_text) $lc_text .= '<br /><table>' . $extra_fields_text . '</table>';
          break;
         case 'PRODUCT_LIST_MANUFACTURER':
           $lc_align = 'center';
           $lc_text = ' <a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing['manufacturers_id']) . '">' . $listing['manufacturers_name'] . '</a> ';
           break;
         case 'PRODUCT_LIST_PRICE':
           $lc_align = 'right';
           $lc_text = '<span class="productListing-list-price">';
           $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 .= '<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><BR><span class="productSpecialPriceEX">(' . $currencies->display_price_ex($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . ' ex.vat)</span><br>';
           } else {
           $lc_text .= ($listing['products_price'] > 0 ? '' . $price . '  ' : ' ' . TEXT_POA). '  <br><span class="productPriceEX">(' . $currencies->display_price_ex($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . ' ex.vat)</span><br>';
if (function_exists(tep_get_att_price)) $lc_text .= (tep_get_att_price($listing['products_id']) > 0 ? '+' : ' ') ;
		}

           $lc_text .= '</span>';

            break;
         case 'PRODUCT_LIST_QUANTITY':
           $lc_align = 'right';
           $lc_text = ' ' . $listing['products_quantity'] . ' ';
           break;
         case 'PRODUCT_LIST_WEIGHT':
           $lc_align = 'right';
           $lc_text = ' ' . $listing['products_weight'] . ' ';
           break;
         case 'PRODUCT_LIST_IMAGE':
           $lc_align = 'center';
           $lc_text = $image;
           break;
         case 'PRODUCT_LIST_BUY_NOW':
           if (PRODUCT_LIST_OPTIONS == 'true' ) $params = 'class="productListing-data" width="'.(int)((100/sizeof($column_list))*2).'%" colspan="2"';
           $lc_align = 'center';
           $button = $quantity_box . $button;
           $lc_text = $form . $buytable . (PRODUCT_LIST_OPTIONS == 'true'  ? attribute_drop($listing['products_id'],$listing['products_tax_class_id']) . '</td><td align="center" class="productListing-data">' . $button : $button) . $buytableend;
          break;
       }
           					$list_box_temp[] = array('align' => $lc_align,
                                	 					'params' => $params,
                                              		   'text'  => $lc_text);
     		}
	} else {  
	if (PRODUCT_LIST_IMAGE) { $list_box_temp[] = array('align' => 'center',
                               							'params' => 'class="productListing-data" ',
                               							'text'  => $image);   }
	     $display ='';$text = '';
	for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
	    $last = (($col + BLOCK_LAST_SIZE + 1) > $n);
			$text .= ($text ? '<br />' : '');  
			switch ($column_list[$col]) {
         case 'PRODUCT_LIST_MODEL':
				  $text .= $listing['products_model'];
					if (!$last) {$display .= $text . '<br />'; $text = '';}
           break;
         case 'PRODUCT_LIST_NAME':
           $text .= $name . ($listing['short_desc'] && (PRODUCT_SHORT_DESC == 'true') ? '<br /><span class="short">' . $listing['short_desc'] . '</span>' : '') . product_description($listing['products_id'],$link);
					$extra_fields_text = extra_fields($listing['products_id']);
					if ($extra_fields_text) $text .= '<br /><table>' . $extra_fields_text . '</table>';
					if (!$last) {$display .= $text . '<br />'; $text = '';}
          break;
         case 'PRODUCT_LIST_MANUFACTURER':
           $text .= '<a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing['manufacturers_id']) . '">' . $listing['manufacturers_name'] . '</a>';
					if (!$last) {$display .= $text . '<br />'; $text = '';}
           break;
         case 'PRODUCT_LIST_PRICE':
                                         $text .= ($last ? '' : '<br />Price: ') . '<span class="productListing-list-price">';
           $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'])) {
             $text .= '<s>' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</s>' . ($last ? '<br />' : '  ') . '<span class="productSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
           } else {
                                                  $text .= ($listing['products_price'] > 0 ? '' . $price : '' . TEXT_POA);
if (function_exists(tep_get_att_price)) $display .= (tep_get_att_price($listing['products_id']) > 0 ? '+' : ' ') ;
                                                 }
                                               $text .= '</span>' . ($last ? '' : '<br />');
					if (!$last) {$display .= $text . '<br />'; $text = '';}
           break;
         case 'PRODUCT_LIST_QUANTITY':
           $text .= ($listing['products_quantity'] ? 'Stock = ' . $listing['products_quantity'] : 'Out of Stock');
					if (!$last) {$display .= $text . '<br />'; $text = '';}
           break;
         case 'PRODUCT_LIST_WEIGHT':
           $text .= 'Weight = ' . $listing['products_weight'].WEIGHT_ABRV . ($last ? '' : '<br />');
					if (!$last) {$display .= $text . '<br />'; $text = '';}
           break;
          case 'PRODUCT_LIST_BUY_NOW':
		$button = '<div align="right" width="100%">' . $quantity_box . '</div>' . ($last ? '' : '  ') . $button;
           $text .= $form . $buytable . (PRODUCT_LIST_OPTIONS == 'true' ? '<div ' . ($last ? 'align="right"' : 'align="left"' ) . ' width="100%">' . attribute_drop($listing['products_id'],$listing['products_tax_class_id']) . '</div>' . $button : '<br />' . $button) . $buytableend;
                                                //$display .= ($last ? '' : $text . '<br />');
					if (!$last) {$display .= $text . '<br />'; $text = '';}
           break;	
			}
		}	
		  $display .= '';

$list_box_temp[] = array('align' => 'left',
                            'params' => 'class="main" valign="top" ',
                            'text'  => $display);
$list_box_temp[] = array('align' => 'right',
                            'params' => 'class="productListing-data" valign="top" ',
                            'text'  => $text);
	}
	return 	($list_box_temp);	
   }
// function list_box_data end	

function attribute_drop($products_id,$tax_class_id) {
global $languages_id, $multi_add;
$currencies = new currencies();
$atrib_drop = '';
	$products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . (int)$products_id . "'");
   $products_attributes = tep_db_fetch_array($products_attributes_query);
   if ($products_attributes['total'] > 0) {

	$atrib_drop = '<table border="0" cellspacing="0" cellpadding="2" class="attributes">';

	$products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$products_id . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
     while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
       $products_options_array = array();
       $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$products_id . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");
       while ($products_options = tep_db_fetch_array($products_options_query)) {
         $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);
         if ($products_options['options_values_price'] != '0') {
           $products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($tax_class_id)) .') ';
         }
       }
$atrib_drop .= '<tr><td class="attributes" >' . $products_options_name['products_options_name'] . ':' . '</td><td align="left">' . tep_draw_pull_down_menu('id' . ($multi_add ? '['. $products_id .']' : '') . '[' . $products_options_name['products_options_id'] . ']', $products_options_array) . '</td></tr>';

     }
					$atrib_drop .= '</table>';
   }
	return $atrib_drop;
}
// function attribute_drop end

// set initial values	

$thumbnail_view = (isset($_GET['list']) ? $_GET['list'] : PRODUCT_THUMBNAIL_VIEW);
$empty_list=false;
if (isset($_GET['manufacturers_id']) && tep_not_null($_GET['manufacturers_id'])) {
$title_name = tep_get_manufacturer_name($_GET['manufacturers_id']);
} else {
$title_name = (!$category['categories_name'] && tep_not_null($_GET['cPath']) ? tep_get_category_name(substr($_GET['cPath'], strpos($_GET['cPath'],'_')+1),$languages_id) : '');
}
$grid = strstr(PRODUCT_THUMBNAIL_VIEW, 'grid');
$gborders = function_exists(mws_boxHeader);//$gborders = false;
$Tborder = (!$gborders ? '<table class="infoBoxList" width="100%"><tr><td>' : mws_boxHeader('<big>'.$title_name.'</big>'));
$Tborderend = (!$gborders ? '</td></tr></table>' : mws_boxFooter ());
$border2 = (!$gborders ? '<table class="infoBoxList" width="100%"><tr><td>' : ($graphic_bord == 'yes' ? mws_boxHeader('<big>'.$title_name.'</big>') : ''));
$border2end = (!$gborders ? '</td></tr></table>' : ($graphic_bord == 'yes' ? mws_boxFooter() : ''));
$list_box_empty[] = array(array('params' => 'class="productListing-data"','text' => TEXT_NO_PRODUCTS));

if (tep_not_null($_GET['categories_id']) && $current_category_id == 0) $current_category_id = $_GET['categories_id'];
// output selected display
if (strstr($thumbnail_view, 'thumbnails')) {  //thumbnail
  $row = 0;
  $col = 0;
  $border = (!$grid ? '<table class="infoBoxProducts" cellpadding="2" width="'.PRODUCT_LIST_WIDTH.'" height="'.PRODUCT_LIST_HEIGHT.'" ><tr><td valign="top">' : '<br />');
       $borderend = (!$grid ? '</td></tr></table>' : '');
$style = (!$grid ? 'class="smallText"' : 'class="infoBoxGrid"');
$info_box_contents = array();
if ($data_ok) {   $listing_query = tep_db_query($listing_split->sql_query);} else {
       $listing_query = tep_db_query($listing_sql); }
if (tep_db_num_rows($listing_query)) { 			
while ($products = tep_db_fetch_array($listing_query)) {
 	if ($row == 0) { 
			if (!$gborders && !$grid)
						$info_box_contents[$row][$col] = array('align' => 'center',
                                          'params' => 'class="smallText" width="'.(PRODUCTS_PER_ROW ? (int)(100/PRODUCTS_PER_ROW) : '').'%" valign="top"',
                                          'text' =>  ' ');
echo $Tborder;$row ++;
                              }

		// build thumb
               $man_id = (tep_not_null($_GET['manufacturers_id']) ? $_GET['manufacturers_id'] : '');
	$link = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id'] . ($man_id ? '&manufacturers_id='.$man_id : ($cPath && $cat_path ? '&cPath=' . $cPath : ''))) . '"' . ($man_id  || ($cat_path && $cat_path) ? ' rel="nofollow"' : '') . '>';
               $quantity_box = quantity ($products['products_id']);
	$image = (file_exists(DIR_WS_IMAGES . $products['products_image']) ? $products['products_image'] : 'no-image.jpg');
               $addimages = (file_exists(DIR_WS_CLASSES . 'displayimages.php')); // Additional Images Present
               if ($addimages) {
               $image_query = tep_db_query( "SELECT ai.medium_images, ai.images_description, ai.popup_images, p.products_image_med, p.products_image_description  FROM " .  TABLE_ADDITIONAL_IMAGES . " ai, " . TABLE_PRODUCTS . " p WHERE ai.products_id=p.products_id and ai.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'] : ($selected_image['popup_images'] ? $selected_image['popup_images'] : $products['products_image'])));
                                                                    }
               $alt_text = ($addimages ? (tep_not_null($selected_image['images_description']) ? $selected_image['images_description'] : (tep_not_null($selected_image['products_image_description']) ? $selected_image['products_image_description'] : $products['products_name'])) : $products['products_name']);
$image = (!$grid && $column_list[0] == 'PRODUCT_LIST_IMAGE' ? '<br />' : '') . ' <span class="ttip">' . $link . tep_image(DIR_WS_IMAGES . $image, $alt_text, PRODUCT_IMAGE_WIDTH, PRODUCT_IMAGE_HEIGHT)  . ($ttip ? tep_image(DIR_WS_IMAGES . $image, $alt_text, $ttip_width, '', 'class="large"') : '' ) . '</a></span>' . '<br />';
               if (LISTING_BUTTON != 'none' && PRODUCT_LIST_BUY_NOW) {
               $buypic = (LISTING_BUTTON == 'buy now' ? 'button_in_cart.gif' : 'button_buy_now.gif');
               $detail = $link . tep_image_button((strstr(LISTING_BUTTON, '&') || (strstr(LISTING_BUTTON, 'small')) ? 'button_details_small.gif' : 'button_details.gif'), IMAGE_BUTTON_DETAILS, 'class="thm_buy_now"') . '</a>';
               $add_cart = ($multi_add ? ($quantity_box && PRODUCT_LIST_QUANTITY_BOX == 'true' ? '' : $detail) : tep_draw_hidden_field('products_id', $products['products_id']) . tep_image_submit($buypic, IMAGE_BUTTON_BUY_NOW, 'class="thm_buy_now"'));
               $button = (LISTING_BUTTON == 'buy now & details' ? '<br />' . $quantity_box . ($add_cart == $detail ? $add_cart : $add_cart . ' <span class="buy_now">|</span> ' . $detail . '<br /><br />') : (strstr(LISTING_BUTTON, 'buy now') ? '<br />' . $quantity_box . $add_cart . '<br /><br />' : '<br />'. $detail . '<br /><br />' ));
               if ($products['products_price'] == 0  || (isset($products['products_quantity']) && !$products['products_quantity'])) { $button = '<br /><span class="buy_now"> </span>'. $detail . '<br />';$quantity_box = ''; }
               }
               $name = $link . '<b>' . $products['products_name'] . '</b>' . '</a><br />'. ($products['short_desc'] && (PRODUCT_SHORT_DESC == 'true') ? '<br />' . $products['short_desc'] . '<br />' : '');
               $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']));
     if (tep_not_null($products['specials_new_products_price'])) {
            $price = '<s>' .  $currencies->display_price($products['products_price'], tep_get_tax_rate($products['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price($products['specials_new_products_price'], tep_get_tax_rate($products['products_tax_class_id'])) . '</span>';
           }
                if (function_exists(tep_get_att_price)) $price .= (tep_get_att_price($products['products_id']) > 0 ? '+' : '') ;
                $show_price = '<br /><font size="'.PRODUCT_PRICE_SIZE.'">' . ($products['products_price'] > 0 ? $price : TEXT_POA) . '<br /></font>';
               $quantity = ($products['products_quantity'] ? 'Stock = '.$products['products_quantity'] : 'Out of Stock').'<br />';
               $weight = 'Weight = '.$products['products_weight'].WEIGHT_ABRV.'<br />';
   $model = $products['products_model'] . '<br />';
               $manfact = '<a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $products['manufacturers_id']) . '">' . $products['manufacturers_name'] . '</a><br />';
               $display = $border;
               for ($disp=0, $n=sizeof($column_list); $disp<$n; $disp++) {
        switch ($column_list[$disp]) {
          case 'PRODUCT_LIST_IMAGE':
                                         $display .= '<table summary="" width="100%" ><tr><td style="text-align:center;" valign="top" height="'.PRODUCT_IMAGE_VSPACE.'" >'.$image.'</td></tr></table>';
              break;
                                       case 'PRODUCT_LIST_NAME': 
          $display .= '<table summary="" width="100%" ><tr><td class="thumbcontent" height="'.PRODUCT_NAME_VSPACE.'" >'.$name.'</td></tr>' . extra_fields($products['products_id']) . '</table>';
           break;
                     case 'PRODUCT_LIST_MODEL':
           $display .= $model;
           break;
                                       case 'PRODUCT_LIST_MANUFACTURER':
           $display .= $manfact;
           break;
                                       case 'PRODUCT_LIST_PRICE':
              $display .= $show_price;
           break;
                                       case 'PRODUCT_LIST_QUANTITY':
           $display .= $quantity;
           break;
                                       case 'PRODUCT_LIST_WEIGHT':
           $display .= $weight;
           break;
                                             }
               }
               $form = ($multi_add ? '' : tep_draw_form('cart_quantity_' . $col . $row, tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action','products_id')) . 'action=add_product')));
               $display .= $borderend . $form . '<br />' . (PRODUCT_LIST_OPTIONS == 'true' ? attribute_drop($products['products_id'],$products['products_tax_class_id']) . $button : $button) . ($multi_add ? '' : '</form>');
			// thumb built


	 $info_box_contents[$row][$col] = array('align' => 'center',
                                          'params' => $style . ' width="'.(PRODUCTS_PER_ROW ? (int)(100/PRODUCTS_PER_ROW) : '').'%" valign="top"',
                                          'text' => $display );
	$col ++;
   if ($col > PRODUCTS_PER_ROW-1) {
     $col = 0;
     $row ++;
   }
}  // prod loop
} else {$empty_list=true; }// no products!!
// got display
if ($row) { 
$i = 0 ; $nbx = class_exists(noborderBox); 
	if ($col > 0 && $row > 1 && $nbx && !$grid) {
			for ($i=0, $n=$col; $i < $n; $i++) { $last_row[0][$i] =  $info_box_contents[$row][$i]; unset($info_box_contents[$row][$i]); 
			} 
	}
if (!$i) {$col = 0;$row ++;$info_box_contents[$row][$col] = array('align' => 'center',
                                          'params' => 'class="smallText" width="'.(PRODUCTS_PER_ROW ? (int)(100/PRODUCTS_PER_ROW) : '').'%" ',
                                          'text' =>  ' '); }
if ($nbx) new noborderBox($info_box_contents); else new contentBox($info_box_contents);
if($i) new noborderBox($last_row);
 echo $Tborderend;
                                                         } else {$empty_list=true; }
} elseif (strstr($thumbnail_view, 'manufacturer')) {  //manufacturer
$row = 0;$col = 0;
if (isset($_GET['manufacturers_id']) && tep_not_null($_GET['manufacturers_id'])) {
$filterlist_sql= tep_db_query("select distinct m.manufacturers_id, m.manufacturers_name, mi.manufacturers_description from " . TABLE_MANUFACTURERS . " m left join " . TABLE_MANUFACTURERS_INFO . " mi on m.manufacturers_id = mi.manufacturers_id where m.manufacturers_id = '" . (int)$_GET['manufacturers_id'] . "' and mi.languages_id = '" . (int)$languages_id . "'");
 }else{
$filterlist_sql= tep_db_query("select distinct m.manufacturers_id, m.manufacturers_name, mi.manufacturers_description  from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_MANUFACTURERS . " m left join " . TABLE_MANUFACTURERS_INFO . " mi on m.manufacturers_id = mi.manufacturers_id 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 . "' and mi.languages_id = '" . (int)$languages_id . "' order by m.manufacturers_name");
}
if (tep_db_num_rows($filterlist_sql)) { $rows = 0;
       while ($manufacturer = tep_db_fetch_array($filterlist_sql)) {
                $info_box_heading = array(); if ($rows) echo tep_draw_separator('pixel_trans.gif', '100%', '4');
                echo $border2;
                $info_box_heading[0] = array('text' => '<big>'.$manufacturer['manufacturers_name'].'</big><br />'.(MANU_DESCRIPTION == 'true' ? $manufacturer['manufacturers_description'].'<br />' : ''));
               new infoBoxHeading($info_box_heading, false, false);
             $list_box_contents = array();
   $list_box_contents[0] = (LISTING_HEADINGS == 'true' && !strstr(PRODUCT_THUMBNAIL_VIEW, 'block') ? list_box_head($column_list) : '');
   if ($data_ok) { $rows = 0;  $listing_query = tep_db_query($listing_split->sql_query);} else {
     $rows = 0;  $listing_query = tep_db_query($listing_sql); }
   while ($listing = tep_db_fetch_array($listing_query)) {
               if ($listing['manufacturers_id'] != $manufacturer['manufacturers_id']) continue;
               list_row ($listing, $column_list);
         }
               $list_box_contents[sizeof($list_box_contents)-1] = array(array('text' =>  '<br />'));
  if (!$rows && isset($_GET['manufacturers_id'])) {
          $rows++;  $list_box_contents = $list_box_empty; $empty_list=true;}
         if ($rows) new productListingBox($list_box_contents);
    echo $border2end;
}   // man loop;
} else {$empty_list=true; }  // no manufacturers!!
}
if ((!strstr($thumbnail_view, 'thumbnails') && !strstr($thumbnail_view, 'manufacturer')) || $empty_list) {   //default listing

   if (MANU_DESCRIPTION == 'true' && tep_not_null($_GET['manufacturers_id'])) {
        $manufacturer_query = tep_db_query("select manufacturers_description from " . TABLE_MANUFACTURERS_INFO . " where manufacturers_id = '" . (int)($_GET['manufacturers_id']) . "' and languages_id = '" . (int)$languages_id . "'");
   $manufacturer = tep_db_fetch_array($manufacturer_query); }
          $info_box_heading[0] = array('text' => '<big>'.$title_name.'</big>'.($manufacturer['manufacturers_description'] ? '<br />' . $manufacturer['manufacturers_description'] : ''));
		        $list_box_contents = array();
	   $list_box_contents[0] = (LISTING_HEADINGS == 'true' && !strstr(PRODUCT_THUMBNAIL_VIEW, 'block') ? list_box_head($column_list) : '');
	   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)) {
               list_row ($listing, $column_list);
   }
               $list_box_contents[sizeof($list_box_contents)-1] = array(array('text' =>  '<br />'));
         $empty_list = false;
               echo $border2;
                if ($title_name) new infoBoxHeading($info_box_heading, false, false);
      new productListingBox($list_box_contents);
               echo $border2end; //tep_draw_separator('pixel_trans.gif', '100%', '4');
 } else {
   new productListingBox($list_box_empty); $empty_list=true;
 }
 }
       if ($multi_add) { if ($global_add != 'top') echo '<div class="multi_buy_now" id="gbutton2">' . $gbutton;        echo '</form>'; }
       if ($base_nav && !$empty_list) echo $drop;
       if (($listing_split->number_of_rows > (int)$max_results) && $base_nav) echo $page_nav;
       if (LISTING_SWITCH != 'false' && !$empty_list) echo '<br /><span class="smalltext"><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('list')). 'list='.(strstr($thumbnail_view, 'thumbnails') ? 'manufacturer' : 'thumbnails')) . '">' . (strstr($thumbnail_view, 'thumbnails') ? LIST_VIEW : THUMB_VIEW).'</a></span><br /><br />';
//echo '<hr>' . $listing_sql . '<hr>';
?>

Link to comment
Share on other sites

I am wondering if there is a way to keep ALL the images in product listing from stretching the box in thumbnails in grid without distorting image?

 

For example, although I have it set not to exceed a given width, some images will be large vertically and throws the display off vertically.

 

Perhaps a way for the grid not to grow past a specific size and resizes the image to stay in the box so as not to distort.

 

Any input is appreciated.

Edited by fan4chevy
Link to comment
Share on other sites

I am wondering if there is a way to keep ALL the images in product listing from stretching the box in thumbnails in grid without distorting image?

 

For example, although I have it set not to exceed a given width, some images will be large vertically and throws the display off vertically.

 

Perhaps a way for the grid not to grow past a specific size and resizes the image to stay in the box so as not to distort.

 

Any input is appreciated.

 

 

no.

 

re-do your images so you don't have such big variations in ratio.

 

tables will always stretch for content, u cannot set a limit.

 

if you did have a fixed sized box it would not constain content, that would just get cropped.

 

so fix your content, the browser cant do that for you.

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

I just installed this great contribution. I only have one problem with the sorting, "results/page" and "Sort order".

When I change it, the website goes back to the main/home index page, instead it sorts the product listing.

 

Does someone knows what to do?

Edited by EIF
Link to comment
Share on other sites

I just installed this great contribution. I only have one problem with the sorting, "results/page" and "Sort order".

When I change it, the website goes back to the main/home index page, instead it sorts the product listing.

 

Does someone knows what to do?

 

 

without a link to your site its hard to tell the cause, most likely a failure to close an ealier form your opening on the page.

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

 

 

This already supports Products Extra Fields , please read the doc.

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

Has anybody ever managed to sucessfully add quantity price breaks per product contribution (http://www.oscommerce.com/community/contributions,1242) to the product listing enhancement page. I want the page to attempt to show the price break table without having to go to the product info page. Becuase of the major coding changes to the page, I am not even sure if this is possible, I have tried, but rather unsucessfully. ANy bright ideas anybody or is it a bridge too far?

Link to comment
Share on other sites

My site is not online yet.

What part of the code do you need?

 

 

Cant say as I don't know where your error is!!

 

Make sure all your forms are correctly closed & not nested

 

If your using a template, remeber they often have many issues due to bad coding.

 

The only other thing I can offer is the url u should see after clicking a link should be like:

 

/index.php?cPath=3_15&sort=0d&max=40

Oh & on that if u have some seo url contrib, some can mess things up too

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

This already supports Products Extra Fields , please read the doc.

 

I am trying to get the extra fields module to show the products options eg. the products have attributes as a range of colours in some cases. I have a multi-product option activated. I would like to have the customer be able to see the product then select an attribute and then add multiples to their cart. Ultimately I would like to be able to include another field that gives the customer the option of buying "5 for a certain price" as well.

How can I make this work?

I would appreciate any input you can give me

 

Hi Sam

Would you be able to contact me about a quote for this work.

Cheers Chad

Link to comment
Share on other sites

how to apply the SQL

i don't understand how to install SQL v2.6.

 

 

tips on how to apply any SQL are included in this topic.

Sam

 

Remember, What you think I ment may not be what I thought I ment when I said it.

 

Contributions:

 

Auto Backup your Database, Easy way

 

Multi Images with Fancy Pop-ups, Easy way

 

Products in columns with multi buy etc etc

 

Disable any Category or Product, Easy way

 

Secure & Improve your account pages et al.

Link to comment
Share on other sites

My link

 

sir how can i make the rounder border orange i tried to change css but its still the same?

 

.infoBoxProducts {
 text-align: center;
 font-family: Verdana, Arial, sans-serif;
 font-size: 10px;
border: 1px;
border-style: solid;
border-color: #F57914;
 font-weight: normal;
 background-color:#000000;
 color: #f57914;
margin-bottom:-8px;
-moz-border-radius:15px;
 	-webkit-border-radius:15px;
-khtml-border-radius:15px;
border-radius:15px; 
vertical-align: bottom;
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

×
×
  • Create New...