Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

How to add quantity to product pages?


EricB

Recommended Posts

I need to add a text box to the Product pages allowing a customer to choose the quantity of items to buy right then, rather than having to wait until the shopping cart page.

 

I tried the Add Quantities to Listing contrib, but it doesn't show up on my pages. I am using the OSC Product Listing Select, so that may be the problem. My client wanted multiple colums on the Products page, and the contrib requires you to use a modified product_listing.php page.

 

Is there a way around this, or another contrib I am missing? My client really wants this feature, and it is driving me nuts that I can't get it to work!

Link to comment
Share on other sites

Ok, I found out that the Add Quantity contrib does work, but only if I have the default List mode enabled. If I turn on Columns mode, I lose the Quantity Box.

 

There is obviously an output statement in the code that only shows the default information when in Column mode, but I am apparently missing it.

 

Here is the code in case anyone might be able to help me out:

<?php
/*
 $Id: product_listing.php,v 1.44 2003/06/09 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
*/

 $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') ) ) {
?>
<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 (PRODUCT_LISTING_DISPLAY_STYLE == 'list') {

   $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 = '';
         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_BUY_NOW':
         $lc_text = TABLE_HEADING_BUY_NOW;
         $lc_align = 'center';
         break;
       case 'PRODUCT_LIST_IMAGE':
         $lc_text = TABLE_HEADING_IMAGE;
         $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_MODEL':
             $lc_align = '';
             $lc_text = ' ' . $listing['products_model'] . ' ';
             break;
           case 'PRODUCT_LIST_NAME':
             $lc_align = '';
             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>';
             } else {
               $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a> ';
             }
             break;
           case 'PRODUCT_LIST_MANUFACTURER':
             $lc_align = '';
             $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';
             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> ';
             } else {
               $lc_text = ' ' . $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 = ' ' . $listing['products_quantity'] . ' ';
             break;
           case 'PRODUCT_LIST_WEIGHT':
             $lc_align = 'right';
             $lc_text = ' ' . $listing['products_weight'] . ' ';
             break;
           case 'PRODUCT_LIST_BUY_NOW':
$lc_align = 'center';
$lc_text = '<form name="cart_quantity" method="post" action="' . tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product', 'NONSSL'). '"><input type="hidden" name="products_id" value="' . $listing['products_id'] . '"><input type="text" name="quantity" value="1" maxlength="5" size="5"><br>' . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART) . '</form>';
break;

           case 'PRODUCT_LIST_IMAGE':
             $lc_align = 'center';
             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']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>';
             } else {
               $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> ';
             }
             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);
   }
   
 } elseif (PRODUCT_LISTING_DISPLAY_STYLE == 'columns') {

   $info_box_contents = array();
   if ($listing_split->number_of_rows > 0) {
     $row = 0;
     $col = 0;
     $listing_query = tep_db_query($listing_split->sql_query);
     while ($listing = tep_db_fetch_array($listing_query)) {
       $listing['products_name'] = tep_get_products_name($listing['products_id']);
       
       if (PRODUCT_LIST_IMAGE > 0) {
      $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br>';
       }
         
       if (PRODUCT_LIST_NAME > 0) {
      $lc_text .= '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a><br>';
       }

       if (PRODUCT_LIST_MODEL > 0) {
      $lc_text .= '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . $listing['products_model'] . '</a><br>';
       }

       if (PRODUCT_LIST_MANUFACTURER > 0) {
      $lc_text .= '<a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing['manufacturers_id']) . '">' . $listing['manufacturers_name'] . '</a><br>';
       }

       if (PRODUCT_LIST_PRICE > 0) {
         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>';
         } else {
           $lc_text .= ' ' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . ' ';
         }
       }

       if (PRODUCT_LIST_BUY_NOW) {
         $lc_text .= '<br><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id'], 'NONSSL') . '">' . tep_image_button('button_buy_now.gif', TEXT_BUY . $listing['products_name'] . TEXT_NOW) . '</a>';      
       }

       $info_box_contents[$row][$col] = array('align' => 'center', 'params' => 'class="smallText" width="33%" valign="top"',
                                               'text' => $lc_text);

       $col ++;
       if ($col > PRODUCT_LIST_COL_NUM-1) {
         $col = 0;
         $row ++;
       }
     }

     new contentBox($info_box_contents);

   } else {

     $info_box_contents = array();

     $info_box_contents[0] = array('params' => 'class="productListing-odd"');
     $info_box_contents[0][] = array('params' => 'class="productListing-data"',
                                       'text' => TEXT_NO_PRODUCTS);

     new contentBox($info_box_contents);

   }
 }
   
 if ( ($listing_split->number_of_rows > 0) && ((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
 }
?>

Link to comment
Share on other sites

Back once again. I have isolated the code I need to modify here:

 if (PRODUCT_LIST_BUY_NOW) {
         $lc_text .= '<br><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id'], 'NONSSL') . '">' . tep_image_button('button_buy_now.gif', TEXT_BUY . $listing['products_name'] . TEXT_NOW) . '</a>';      
         //$lc_text = '<form name="cart_quantity" method="post" action="' . tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product', 'NONSSL'). '"><input type="hidden" name="products_id" value="' . $listing['products_id'] . '"><input type="text" name="quantity" value="1" maxlength="5" size="5"><br>' . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART) . '</form>';

 

Somehow, I need to integrate the first $lc_text... with the commented out $lc_text in order to make the quantity boxes work. Again, any help is appreciated on this.

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...