Guest Posted October 8, 2009 Posted October 8, 2009 Hi osCommerce experts! I'm sitting here, trying to create a shop which should hit the air pretty soon, and I want to change the way my products are listed, when you enter a category. Right now it's listed using the standard layout which in HTML (cutted down to the bone) would look like this: <table> ____<tr> ________<td>Product 1</td> ____</tr> ____<tr> ________<td>Product 2</td> ____</tr> ____<tr> ________<td>Product 3</td> ____</tr> </table> Now I want that layout to be changed, and I want my new layout to be like this (having to products in each row instead of only one): <table> ____<tr> ________<td>Product 1</td> ________<td>Product 2</td> ____</tr> ____<tr> ________<td>Product 3</td> ________<td>Product 4</td> ____</tr> </table> Ofcourse the above are only examples, but I'm sure that you guys can get an idea of what I want to do. I've been looking in product_listing.php and I'm quite sure that this is the file that need to be edited, but I can't figure out how exactly to do it. You must know, I'm kinda novice when it comes to PHP and such. I can do a backup and such in myPHPadmin and I understand the very basics of PHP, and that's about it, but when it comes to CSS, HTML, XHTML and such I'm doing very well and I'm not scared of editing the codes. Sorry for my misspelling - I'm from Denmark. :) I really hope you guys could should me the way through the hills, making my product listing as i want it! This is my complete source-code in my product_listing.php (found in root\includes\modules): <?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 */ if (isset($pw_mispell)){ //added for search enhancements mod ?> <table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr><td><?php echo $pw_string; ?></td></tr> </table> <?php } //end added search enhancements mod $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id'); // fix counted products 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="3"> <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_SHORT_DESCRIPTION': $lc_text = TABLE_HEADING_SHORT_DESCRIPTION; $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; } //sort order if ($column_list[$col] == 'PRODUCT_LIST_SORT_ORDER'){break;} if ( ($column_list[$col] != 'PRODUCT_LIST_BUY_NOW') && ($column_list[$col] != 'PRODUCT_LIST_IMAGE') && ($column_list[$col] != 'PRODUCT_LIST_MULTIPLE') && ($column_list[$col] != 'PRODUCT_LIST_SHORT_DESCRIPTION')) { // if ( ($column_list[$col] != 'PRODUCT_LIST_BUY_NOW') && ($column_list[$col] != 'PRODUCT_LIST_IMAGE') && ($column_list[$col] != 'PRODUCT_LIST_SHORT_DESCRIPTION')) { //end sort order $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 = ''; //sort order if ($column_list[$col] == 'PRODUCT_LIST_SORT_ORDER'){ break; } //end sort order if ((SHOW_PRICE_PER == 'Ja') && (isset($listing['products_price_per']))) { if (($listing['products_price_per']) >= '2'){ $price_per = $listing['products_price_per'] . ' ' . TEXT_PRICE_PER; } else { if (($listing['products_price_per']) == '1') { $price_per = TEXT_PRICE_PER_PCS; } else { $price_per = ''; } } } switch ($column_list[$col]) { case 'PRODUCT_LIST_MODEL': $lc_align = ''; $lc_text = ' ' . $listing['products_model'] . ' '; break; case 'PRODUCT_LIST_NAME': $lc_align = ''; if (PRODUCT_LIST_COMBINE_NAME_DESCRIPTION == 'false') { 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> '; } } else { if (isset($HTTP_GET_VARS['manufacturers_id'])) { $lc_text = ' <table width="100%" border="0" cellspacing="0" cellpadding="2" class="producktListName"> <tr> <td class="productListName"> <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a> </td> </tr> <tr> <td class="productListDescription">' . $listing['products_short_description'] . '</td> </tr> <tr> <td class="productListMore" align="right"> <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '" class="productListDescription">' . READ_MORE . '</a> </td> </tr> </table>'; } else { $lc_text = ' <table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr> <td class="productListName"> <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a> </td> </tr> <tr> <td class="productListDescription">' . $listing['products_short_description'] . '</td> </tr> <tr> <td class="productListMore" align="right"> <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '" class="productListDescription">' . READ_MORE . '</a> </td> </tr> </table>'; } } break; case 'PRODUCT_LIST_SHORT_DESCRIPTION': $lc_align = ''; $lc_text = $listing['products_short_description'] . ' '; 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 (PRODUCT_LIST_COMBINE_PRICE_BUY == 'false'){ if (tep_not_null($listing['specials_new_products_price'])) { $lc_text = ' <table border="0" cellspacing="0" cellpadding="0" class="productListPrice"> <tr> <td valign="top" align="right" class="productListSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</td> </tr> <tr> <td valign="top" class="productListNormalPrice">' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</td> </tr> </table>'; } else { $lc_text = '<table border="0" cellspacing="0" cellpadding="0" class="productListPrice"><tr><td valign="top" align="right" class="productListPricePer">' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</td></tr></table>'; } } else { if (tep_not_null($listing['specials_new_products_price'])) { $lc_text = '<table border="0" cellspacing="0" cellpadding="0" class="productListPrice"><tr><td align="right" class="productListPricePer">' . $price_per . '</td></tr><tr><td valign="top" align="right" class="productListSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</td></tr><tr><td valign="top" align="right" class="productListNormalPrice">' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</tr><tr><td align="right" class="productListBuyNow"><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></td></tr></table>'; } else { $lc_text = '<table border="0" cellspacing="0" cellpadding="0" class="productListPrice"><tr><td align="right" class="productListPricePer">' . $price_per . '</td></tr><tr><td valign="top" align="right" class="productListPrice">' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</td></tr><tr><td align="right" class="productListBuyNow"><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></td></tr></table>'; } } 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 = '<table width="' . SMALL_IMAGE_WIDTH . '" border="0" cellspacing="0" cellpadding="2"><tr><td align="center" class="productListImage"><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></td></tr><tr><td align="center" ><a href="' . tep_href_link(DIR_WS_IMAGES . $listing['products_image']) . '" rel="lightbox" title="' . $listing['products_name'] . '" >' . CLICK_TO_ENLARGE . '</a></td></tr></table>'; } else { $lc_text = '<table width="' . SMALL_IMAGE_WIDTH . '" border="0" cellspacing="0" cellpadding="2"><tr><td align="center" class="productListImage"><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></td></tr><tr><td align="center" ><a href="' . tep_href_link(DIR_WS_IMAGES . $listing['products_image']) . '" rel="lightbox" title="' . $listing['products_name'] . '" >' . CLICK_TO_ENLARGE . '</a></td></tr></table>'; } 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" valign="top"', 'text' => $lc_text); } } new productListingBox($list_box_contents); } else { $list_box_contents = array(); $list_box_contents[0] = array('params' => 'class="productListing-odd" valign="top"'); $list_box_contents[0][] = array('params' => 'valign="top"', '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="3"> <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 } ?> Best regards, Michael
spooks Posted October 8, 2009 Posted October 8, 2009 If you want to change product listings: Product Listing Enhancements, Thumbnails & Manufacturer Headings http://addons.oscommerce.com/info/6051 provides plenty of options. 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.
Guest Posted October 9, 2009 Posted October 9, 2009 It didn't work out. My osCommerce is a part of a complete package including different contributions, and that's why my source doesn't look like the standard osCommerce. Do I really _need_ to have ex. "featured products" installed in order to make "Product Listing Enhancements, Thumbnails & Manufacturer Headings" work?
spooks Posted October 9, 2009 Posted October 9, 2009 It didn't work out. My osCommerce is a part of a complete package including different contributions, and that's why my source doesn't look like the standard osCommerce. Do I really _need_ to have ex. "featured products" installed in order to make "Product Listing Enhancements, Thumbnails & Manufacturer Headings" work? No, for the basic stuff u only need to replace the product_listing.php module, modify the index.php so sql is generated ok & run the install to add the admin controls 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.
Guest Posted November 10, 2009 Posted November 10, 2009 No, for the basic stuff u only need to replace the product_listing.php module, modify the index.php so sql is generated ok & run the install to add the admin controls Ok. Thanks :)
Recommended Posts
Archived
This topic is now archived and is closed to further replies.