Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Product Listing Horizontal


Madman00

Recommended Posts

I have my product listings layed out in columns (horizontal) instead of raws. I have 3 Products per column. I would like to insert a line <hr> after each column. Where do i go about inserting the <hr> in product_listing.

 

Cheers,

Link to comment
Share on other sites

Hi,

 

I have my product listings layed out in columns (horizontal) instead of raws. I have 3 Products per column. I would like to insert a line <hr> after each column. Where do i go about inserting the <hr> in product_listing.

 

Sorry, but I don't understand what you are trying to do. :-"

 

1. Columns are always vertical, it is rows that are horizontal ?

 

2. The 'horizontal rule' html tag, is, as the name suggests, horizontal, so I have to assume your product listings are in rows (horizontal), is that right ?

 

Peter

Link to comment
Share on other sites

I meant raws, sorry for the mistake. I want to have a space between every raw of products. Or a horizontal like (hr> after each raw. Here is how my product_listing.php looks like.

 

<?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 © 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(0, $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_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, '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);

}

}

 

new productListingBox($list_box_contents);

} else {

$list_box_contents = array();

 

$list_box_contents[0] = array('params' => 'class="productListing-odd"');

$list_box_contents[0][] = array('params' => 'class="productListing-data"',

'text' => TEXT_NO_PRODUCTS);

 

new productListingBox($list_box_contents);

}

 

if ( ($listing_split->number_of_rows > 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

}

?>

 

 

Hi,

Sorry, but I don't understand what you are trying to do.  :-"

 

1. Columns are always vertical, it is rows that are horizontal ?

 

2. The 'horizontal rule' html tag, is, as the name suggests, horizontal, so I have to assume your product listings are in rows (horizontal), is that right ?

 

Peter

Link to comment
Share on other sites

Hi,

 

Considering this block of code .........

 

      if (($rows/2) == floor($rows/2)) {
       $list_box_contents[] = array('params' => 'class="productListing-even"');
     } else {
       $list_box_contents[] = array('params' => 'class="productListing-odd"');
     }

 

you would need to insert the "<hr>" html tag just after the row has completed, that is between these 2 lines:

 

</tr>
 <tr class="productListing-even">

 

I would suggest that to really understand how the array is built, that you 'dump' the array "$list_box_contents" with the print_r() function.

 

Although you may get a headers already sent message, I'm not sure ??

 

Peter

Link to comment
Share on other sites

Hi,

 

More on this ............

 

Line 143 of /product_listing.php

 

new productListingBox($list_box_contents);

 

is where it seems the array is passed to the productListingBox() function, which actually builds all the html.

 

That function is in /catalog/includes/classes/boxes.php

 

  class productListingBox extends tableBox {
   function productListingBox($contents) {
     $this->table_parameters = 'class="productListing"';
     $this->tableBox($contents, true);
   }
 }

 

Now, if you examine some of the other classes there, you will notice that, within some of the classes, by assigning array values/keys, they get parsed by the class/function 'tableBox'.

 

What you want to do is add the "<hr>" html tag after the "</tr>" tag, and unfortunately, there is only one place in /catalog/includes/classes/boxes.php , where that tag is, line 63 ........

 

$tableBox_string .= '  </tr>' . "\n";

 

therefore, you will have to be _extremely_ careful in any modifications, because if you are not, any other boxes and similar 'table displays' on your website may not work properly.

 

What I always do with any osCommerce site is to have a 'test' path, with a seperate database, so that I can always do the testing, before it is put into the 'live' site. Modifying live sites, is, I consider, dangerous and unprofessional.

 

It is really worth the hour or so to setup a test site initially. :)

 

Now, back to your problem, I would suggest you try adding the following line in the class 'productListingBox' - file /catalog/includes/classes/boxes.php

 

$this->table__row_parameters = '<hr>';

 

just after this line ........... (line 174)

 

$this->table_parameters = 'class="productListing"';

 

All things being equal, because the class/function "tableBox" has this line of code:

 

if (tep_not_null($this->table_row_parameters)) $tableBox_string .= ' ' . $this->table_row_parameters;

 

then the "<hr>" tag _should_ get added. If you cannot for some reason, setup a test osC 'site', then please, at least backup your files before trying what I have suggested, it is 98% "theory" and 2% guesswork, and definitely NOT tested by me.

 

It's simply a suggestion, ... no guarantees. :D

 

Peter

Link to comment
Share on other sites

  • 2 weeks later...

Hi,

 

this doesn?t work dude...

 

Well, I did say ...............

 

If you cannot for some reason, setup a test osC 'site', then please, at least backup your files before trying what I have suggested, it is 98% "theory" and 2% guesswork, and definitely NOT tested by me.

 

It's simply a suggestion, ... no guarantees.

 

Is display errors on (PHP setting), try adding the html code to a variable and echo the variable, dump any arrays with the "print_r" command, do some debugging, and find out why it is not working.

 

Peter

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...