Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

How to add quantity to product pages?


EricB

Recommended Posts

Posted

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!

Posted

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

Posted

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.

Archived

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

×
×
  • Create New...