Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

product_listing not displaying correctly


sera_archie

Recommended Posts

Posted

driving me crazy! - please let me preface by saying I do NOT know php...I can pick up patterns but am by no means a coder

I believe the issue is in the includes/modules/product_listing.php file (at least, if I make changes to this file it affects the section of my website that I am having issues with.

 

My issue is when you click on a category with NO subcategory it does not display correctly. The image is on the wrong side of the column and the details do not display correctly.

 

When you load the index page the 'new products' section is correct and the advanced search results also display correctly.

When you select a category that has a sub-category it will correctly display icons/images for each sub cat and beneath correctly display the 'featured products' but any deeper (eg. select a sub-cat) and it is wrong.

Displaying a product's details (eg. clicking 'more info' or on the image) takes you to the products full details and displays perfectly.

 

Can anyone help? Am I looking at the right file? I have tried merging an original osc file with this one to get it to work and had a little success but not enough to fix it...I have been comparing all my other files that create a product list to see if I can copy part of it and fix this one but I am lost as to how they define the table

 

This is how it displays...

hatephp.jpg

 

This is my product_listing file...

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

 $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_IMAGE':
       $lc_text = TABLE_HEADING_IMAGE;
       $lc_align = 'center';
       break;
     case 'PRODUCT_LIST_BUY_NOW':
       $lc_text = TABLE_HEADING_BUY_NOW;
       $lc_align = 'center';
       break;
   }

   if ( ($column_list[$col] != 'PRODUCT_LIST_BUY_NOW') && ($column_list[$col] != 'PRODUCT_LIST_IMAGE') ) {
     $lc_text = tep_create_sort_heading($HTTP_GET_VARS['sort'], $col+1, $lc_text);
   }

   $list_box_contents[0][] = array('align' => $lc_align,
                                   'params' => 'class="productListing-heading"',
                                   'text' => ' ' . $lc_text . ' ');
 }

 if ($listing_split->number_of_rows > 0) {
   $rows = 0;
   $column = 0;
   echo '   


             <table cellspacing=0 cellpadding=0>
              <tr><td><img src=images/m26.gif width=7 height=39></td><td width=497 class=bg1 valign=top style="padding-top:10px"><span class=ca>     CATEGORIES</span></td><td><img src=images/m25.gif width=7 height=39></td></tr>
              <tr><td height=19 colspan=3></td></tr>
              <tr><td colspan=3 class=ca1>       '.$breadcrumb->trail(' » ').'</td></tr>            
              <tr><td height=17 colspan=3></td></tr>
              <tr><td colspan=3 align=center><img src=images/m33.gif width=469 height=1></td></tr>               
              <tr><td height=3 colspan=3></td></tr>
              <tr><td class=bg2 width=511 colspan=3>
                   <table cellspacing=0 cellpadding=0>
                    <tr>



        ';

   $listing_query = tep_db_query($listing_split->sql_query);
   while ($listing = tep_db_fetch_array($listing_query)) {
     $product_contents = array();
     $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 class=sc1 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 class=sc1 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 = '<span style="color:#7F7F7F;font-size:10px"><s>' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</s></span> <span style="color:#ff0000" class=sc2>' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
           } else {
             $lc_text = '<span>  <br>' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . ' </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';
           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;
         case 'PRODUCT_LIST_BUY_NOW':
           $lc_align = 'center';
           $lc_text = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW) . '</a> ';
           break;
       }

       $list_box_contents[$cur_row][] = array('align' => $lc_align,
                                              'params' => 'class="productListing-data"',
                                              'text'  => $lc_text);
       $product_contents[] = $lc_text;       
     }


     $product_query = tep_db_query("select products_description  from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$listing['products_id'] . "' and language_id = '" . (int)1 . "'");
     $product = tep_db_fetch_array($product_query);
     $new_products['products_description'] = $product['products_description'];

     echo '


                    <td width=254 valign=top>
                         <table cellspacing=0 cellpadding=0 width=217 align=center>
                          <tr><td height=16 colspan=2></td></tr>

                          <tr><td height=6 colspan=2></td></tr>
                          <tr><td width=105 align=center>'.$product_contents[0].'</a></a></td>
                              <td width=112>
                                <table cellspacing=0 cellpadding=0>
                                 <tr><td height=2></td></tr>
                                 <tr><td height=45  class=sc1 style="font-size: 10px" >'.$product_contents[1].'</td></tr>
                                 <tr><td height=2></td></tr>
                                 <tr><td height=25 aligh=right><b>Price:<font color=#DC1400>  '.$product_contents[2].' </font> </td></tr>
                                 <tr><td height=7></td></tr>
                                </table>                                                                                                                           
                          </td></tr>
                          <tr><td height=5 colspan=2></td></tr>
                          <tr><td colspan=2><img src=images/m28.gif width=216 height=1></td></tr>
                          <tr><td height=10 colspan=2></td></tr>
                          <tr><td colspan=2><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_in_cart.gif') . '</a>  <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . tep_image_button('small_view.gif') . '</a></td></tr>
                          <tr><td height=10 colspan=2></td></tr>
                         </table>
                        </td>




     ';
     $column ++;
     if ($column >= 2) {
       $rows ++;
       $column = 0;
       echo '


                    </tr><tr><td colspan=3><img src=images/m30.gif width=511 height=1></td></tr>
                    <tr>


            ';
     } else echo '<td width=1></td>';



   }

   echo '

                     </tr>                                                                                                   
                   </table>
              </td></tr>
              <tr><td height=10></td></tr>        
             </table>

        ';

   //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);

   echo '<div class=PageHeading>Categories</div>';
   new productListingBox($list_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 height=20></td></tr>
 <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

Ok...so I've narrowed it down to this section

 

<td width=254 valign=top>
                         <table cellspacing=0 cellpadding=0 width=217 align=center>
                          <tr><td height=16 colspan=2></td></tr>

                          <tr><td height=6 colspan=2></td></tr>
                          <tr><td width=105 align=center>'.$product_contents[0].'</a></a></td>
                              <td width=112>
                                <table cellspacing=0 cellpadding=0>
                                 <tr><td height=2></td></tr>
                                 <tr><td height=45  class=sc1 style="font-size: 10px" >'.$product_contents[1].'</td></tr>
                                 <tr><td height=2></td></tr>
                                 <tr><td height=25 aligh=right><b>Price:<font color=#DC1400>  '.$product_contents[2].' </font> </td></tr>
                                 <tr><td height=7></td></tr>
                                </table>                                                                                                                           
                          </td></tr>
                          <tr><td height=5 colspan=2></td></tr>
                          <tr><td colspan=2><img src=images/m28.gif width=216 height=1></td></tr>
                          <tr><td height=10 colspan=2></td></tr>
                          <tr><td colspan=2><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_in_cart.gif') . '</a>  <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . tep_image_button('small_view.gif') . '</a></td></tr>
                          <tr><td height=10 colspan=2></td></tr>
                         </table>
                        </td>

 

I copied the similar section from the new products file and now have it laid out correctly but I'm missing the images and all my prices are 0.00 (I havent changed the references to look at the product listing so I will keep playing with it)

Posted

>_< >_< >_< I spend so long on these things and cry out for help....then fix it.

 

new code (replacing the section I narrowed down to)

 

Ok - so one small issue, I get three dots (...) instead of the item description. Have I incorrectly referenced that part? any ideas what it should be - I think it's this part

 

<tr><td height=65 class=sc1 style="font-size: 10px" >'.preg_replace('/\s\S*$/i', '', substr($listing['products_description'], 0, 80)).' ...</td></tr>

 

<td width=254 valign=top>
                         <table cellspacing=0 cellpadding=0 width=217 align=center>
                          <tr><td height=16 colspan=2></td></tr>
                          <tr><td class=ca1 height=15  colspan=2><a class=ca1 href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a></td></tr>
                          <tr><td height=16 colspan=2></td></tr>
                          <tr><td colspan=2><img src=images/m28.gif width=216 height=1></td></tr>
                          <tr><td height=6 colspan=2></td></tr>
                          <tr><td width=105 align=center><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, 'vspace=5') . '</a></a></td>
                              <td width=112>
                                <table cellspacing=0 cellpadding=0>
                                 <tr><td height=5></td></tr>
                                 <tr><td height=65  class=sc1 style="font-size: 10px" >'.preg_replace('/\s\S*$/i', '', substr($listing['products_description'], 0, 80)).' ...</td></tr>
                                 <tr><td height=10></td></tr>
                                 <tr><td height=10 ><font color=#DC1400><b>Price: '.$currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])).'</b></font></td></tr>
                                 <tr><td height=7></td></tr>
                                </table>                                                                                                                           
                          </td></tr>
                          <tr><td height=5 colspan=2></td></tr>
                          <tr><td colspan=2><img src=images/m28.gif width=216 height=1></td></tr>
                          <tr><td height=10 colspan=2></td></tr>
                          <tr><td colspan=2><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_in_cart.gif') . '</a>   <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . tep_image_button('small_view.gif') . '</a></a></td></tr>
                          <tr><td height=10 colspan=2></td></tr>
                         </table>
                        </td>

Posted

Off the top of my head, I would say that the preg_replace is possibly causing problems.

 

Try omitting this and see if the product description shows up.

 

Replace;

 

<tr><td height=65  class=sc1 style="font-size: 10px" >'.preg_replace('/\s\S*$/i', '', substr($listing['products_description'], 0, 80)).' ...</td></tr>

 

with

 

<tr><td height=65  class=sc1 style="font-size: 10px" >' . substr($listing['products_description'], 0, 80) . ' ...</td></tr>

 

Try this first and see if it shows up.

My latest osCommerce work in progress

 

no outside links in signatures allowed, see PM

Posted

Hi Lawrence, I tried that ammendment you suggested but unfortunately no joy :( Though I think I might leave it how it is - for some of our items the description won't be long enough to warrant it showing on the listing (it will waste time for clients to click for more info and not get MORE info if that makes sense!)

Archived

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

×
×
  • Create New...