♥FWR Media Posted June 22, 2009 Share Posted June 22, 2009 I would love to install this contrib (version 2.1) on my site, but I'm on a Windows Iis 6 server. There is an option to use a httpd.ini file with Isapi rewrite codes. i've been searching on the internet, but haven't found the exact code for the file for version 2.1e (or d) So my question is, Is there someone who can provide the httpd.ini file with the Isapi rewrite code for this contrib, version 2.1d or e? I hope someone can help me out with this. Claudia Hi Claudia Actually there is a new version of USU called ULTIMATE Seo Urls 5 .. you have to have PHP5.2 but other than that you can have seo urls without rewrites. http://www.oscommerce.com/forums/index.php?showtopic=336702 Non rewrite seo urls are slightly different in as much as they look like .. www.mysite.com/index.php/my-great-category-c-3 Quote Ultimate SEO Urls 5 PRO - Multi Language Modern, Powerful SEO Urls KissMT Dynamic SEO Meta & Canonical Header Tags KissER Error Handling and Debugging KissIT Image Thumbnailer Security Pro - Querystring protection against hackers ( a KISS contribution ) If you found my post useful please click the "Like This" button to the right. Please only PM me for paid work. Link to comment Share on other sites More sharing options...
Clau123 Posted June 23, 2009 Share Posted June 23, 2009 (edited) Hi Claudia Actually there is a new version of USU called ULTIMATE Seo Urls 5 .. you have to have PHP5.2 but other than that you can have seo urls without rewrites. http://www.oscommerce.com/forums/index.php?showtopic=336702 Non rewrite seo urls are slightly different in as much as they look like .. www.mysite.com/index.php/my-great-category-c-3 I have been following your contribution too. I was thinking which one of those two I wanted to install. But I have allready the header tags SEO installed, and as I understand your Ultimate seo urls 5 is not working with that, and this one should work with it. So that's why I choose this one. So I hope one day you and Jack-mcs can figure this out then I will switch to your version. Edited June 23, 2009 by Clau123 Quote Link to comment Share on other sites More sharing options...
♥FWR Media Posted June 23, 2009 Share Posted June 23, 2009 I have been following your contribution too. I was thinking which one of those two I wanted to install. But I have allready the header tags SEO installed, and as I understand your Ultimate seo urls 5 is not working with that, and this one should work with it. So that's why I choose this one. So I hope one day you and Jack-mcs can figure this out then I will switch to your version. Ahhh I see .. can't imagine why a header tags contribution wouldn't work with usu5 .. as long as it uses the correct tep_href_link() function it would work fine. (what have header tags got to do with uris anyway?) If it is reliant for some reason on uri generation surely it can't have been hardcoded to only work with one seo urls contribution?? Quote Ultimate SEO Urls 5 PRO - Multi Language Modern, Powerful SEO Urls KissMT Dynamic SEO Meta & Canonical Header Tags KissER Error Handling and Debugging KissIT Image Thumbnailer Security Pro - Querystring protection against hackers ( a KISS contribution ) If you found my post useful please click the "Like This" button to the right. Please only PM me for paid work. Link to comment Share on other sites More sharing options...
Clau123 Posted June 23, 2009 Share Posted June 23, 2009 (edited) I haven't tried Ultimate seo urls 5 myself, but I read in the forums that Header tags Seo broke on the Ultimate seo urls 5. Maybe I'm going to try it later. I have asked my provider to help me with my problem to install it on the windows server and still have the rewrite option available. My site is on a Windows IIs 6 server and my host has Isapi rewrite 2 installed, and I installed version 2.1e of USU We finally did this: 1. make a new file httpd.ini and place it in the root of your site. This is important, because it won't work if you place it somewhere else. 2. Place this code in the file [iSAPI_Rewrite] UriMatchPrefix /catalog/ UriFormatPrefix /catalog/ # From Ultimate SEO URLs RewriteRule ([^?]*)-p-([^?]*)\.html(?:\?(.*))? /product_info.php\?products_id=$2?3&$3{QUERY_STRING}[i,L] RewriteRule ([^?]*)-c-([^?]*)\.html(?:\?(.*))? /index.php\?cPath=$2?3&$3{QUERY_STRING} [i,L] RewriteRule ([^?]*)-m-([^?]*)\.html(?:\?(.*))? /index.php\?manufacturers_id=$2?3&$3{QUERY_STRING} [i,L] RewriteRule ([^?]*)-pi-([^?]*)\.html(?:\?(.*))? /popup_image.php\?pID=$2?3&$3{QUERY_STRING} [i,L] RewriteRule ([^?]*)-t-([^?]*)\.html(?:\?(.*))? /articles.php\?tPath=$2?3&$3{QUERY_STRING} [i,L] RewriteRule ([^?]*)-a-([^?]*)\.html(?:\?(.*))? /article_info.php\?articles_id=$2?3&$3{QUERY_STRING} [i,L] RewriteRule ([^?]*)-pr-([^?]*)\.html(?:\?(.*))? /product_reviews.php\?products_id=$2&%?3&$3{QUERY_STRING} [i,L] RewriteRule ([^?]*)-pri-([^?]*)\.html(?:\?(.*))? /product_reviews_info.php\?products_id=$2?3&$3{QUERY_STRING} [i,L] RewriteRule ([^?]*)-i-([^?]*)\.html(?:\?(.*))? /information.php\?info_id=$2?3&$3{QUERY_STRING} [i,L] RewriteRule ([^?]*)-links-([^?]*)\.html(?:\?(.*))? /links.php\?lPath=$2?3&$3{QUERY_STRING} [i,L] UriMatchPrefix UriFormatPrefix 3. If you have your shop under the root leave the code UriMatchPrefix /catalog/ UriFormatPrefix /catalog/ If you have your store under a folder called for example shop, then change it to (I haven't tried this, my site is in the root): UriMatchPrefix /shop/catalog/ UriFormatPrefix /shop/catalog/ that's it. With my site it's working, hopefully with others too. Edited June 23, 2009 by Clau123 Quote Link to comment Share on other sites More sharing options...
jwilkins Posted June 23, 2009 Share Posted June 23, 2009 Claudia, Just a quick note.. I have FWR Ultimate SEO URLs 5 and the latest Header Tags Seo (v3.1.5) working on my store and no compatibility issues between the two contributions. You should be good to go on using both of them together! Regards James Quote Link to comment Share on other sites More sharing options...
Clau123 Posted June 23, 2009 Share Posted June 23, 2009 Claudia, Just a quick note.. I have FWR Ultimate SEO URLs 5 and the latest Header Tags Seo (v3.1.5) working on my store and no compatibility issues between the two contributions. You should be good to go on using both of them together! Regards James Good to know this. I will try it when I have some other Contribs from my to do list installed. Quote Link to comment Share on other sites More sharing options...
♥FWR Media Posted June 23, 2009 Share Posted June 23, 2009 Claudia, Just a quick note.. I have FWR Ultimate SEO URLs 5 and the latest Header Tags Seo (v3.1.5) working on my store and no compatibility issues between the two contributions. You should be good to go on using both of them together! Regards James Thanks for taking the time to tell us James. It is good to know. Quote Ultimate SEO Urls 5 PRO - Multi Language Modern, Powerful SEO Urls KissMT Dynamic SEO Meta & Canonical Header Tags KissER Error Handling and Debugging KissIT Image Thumbnailer Security Pro - Querystring protection against hackers ( a KISS contribution ) If you found my post useful please click the "Like This" button to the right. Please only PM me for paid work. Link to comment Share on other sites More sharing options...
gombszorp Posted June 23, 2009 Share Posted June 23, 2009 Hi Everybody! I installed Multi-stores (Multistores v2.0 with corrections V2.0 16 may 2009 With one database and one admin you can make lot's of oscommerce store. You can define configuration database table for each store- configuration1, conf2 and so on ) and after Ultimate SEO Urls ( 2.1e ORIGINAL updated 14 Jun 2009) too. The problem is, if I would like to configure SEO url-s I can configure only one store and the others not. The store I can configure is always other. I have no idea what to do. I need search engine safe urls. If anybody can help please don't hesitate smile.gif I have osCommerce Online Merchant v2.2 RC2 Released I made a new topic for it! Zsolt Quote Link to comment Share on other sites More sharing options...
jwilkins Posted June 23, 2009 Share Posted June 23, 2009 Thanks for taking the time to tell us James. It is good to know. Not a problem at all... thanks for the contribution! Quote Link to comment Share on other sites More sharing options...
azlan29 Posted June 23, 2009 Share Posted June 23, 2009 Hy, I want to ask if it's possible if i have two index files like index.php and index2.php to make the url renaming to work and go to the specific page. Example: I have 1) http://localhost/oscommerce/index.php?cPath=12_13 (using SEO -> http://localhost/oscommerce/category-overview-c-12-13.html) and 2) http://localhost/oscommerce/index2.php?cPath=12_13 (using SEO -> http://localhost/oscommerce/category-tips-...s-c-12-13.html) Can you please help me make this work. I've changed in the .htaccess file RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING} RewriteRule ^(.*)-c-(.*).html$ index2.php?cPath=$2&%{QUERY_STRING} and also in seo.class.php like this: case 'cPath': switch(true){ case ($page == FILENAME_DEFAULT): $url = $this->make_url($page, $this->get_category_name($p2[1]), $p2[0], $p2[1], '.html', $separator); case ($page == FILENAME_DEFAULT2): $url = $this->make_url($page, $this->get_category_name($p2[1]), $p2[0], $p2[1], '.html', $separator); break; case ( !$this->is_product_string($params) ): if ( $this->attributes['SEO_ADD_CPATH_TO_PRODUCT_URLS'] == 'true' ){ $container[$p2[0]] = $p2[1]; } break; default: $container[$p2[0]] = $p2[1]; break; } # end switch break; ANY SUGGESTIONS?! Quote Link to comment Share on other sites More sharing options...
azlan29 Posted June 24, 2009 Share Posted June 24, 2009 The question is how to create custom pages for the categories without inserting them in the database because are all the same for each category Quote Link to comment Share on other sites More sharing options...
s1lverf0x Posted June 25, 2009 Share Posted June 25, 2009 All Product IDs Are Set to 1st Item in Cart Hi, I intalled Ultimate SEO 2.7 a couple of weeks ago - all seemed fine (brilliant contribution) & now I've just discovered that on the product_listing/category page, if you don't go into any product_info but just start adding listed items to the cart - after adding the 1st item - all other items have the product_id set to the first item - so that adding other items results in just multiples of the 1st item being added to the cart. It's the code behind the "Add to Cart" button on the category screen that has it's Product ID set to the 1st item - but I don't know how to fix it... Desperately trying to get this fixed on my first live site... Many thanks for any help Cheers Jason Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted June 25, 2009 Share Posted June 25, 2009 Hello, Can you show the site and the php code that generates the Add to Cart button here? Stanislav Quote Link to comment Share on other sites More sharing options...
s1lverf0x Posted June 25, 2009 Share Posted June 25, 2009 Hello, Can you show the site and the php code that generates the Add to Cart button here? Stanislav Hi Stanislav, my site is www.4kits.co.uk where would the code be? if I'm selecting a category then I get a list of products & then hitting "Add To Cart" there - is that product_listing.php, would it be the file in /includes/modules? Thanks Jason Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted June 25, 2009 Share Posted June 25, 2009 Hi Stanislav, my site is www.4kits.co.uk where would the code be? if I'm selecting a category then I get a list of products & then hitting "Add To Cart" there - is that product_listing.php, would it be the file in /includes/modules? Thanks Jason Hello, Show here content of two files: shopping_cart.php includes/application_top.php Stanislav Quote Link to comment Share on other sites More sharing options...
s1lverf0x Posted June 26, 2009 Share Posted June 26, 2009 Hello, Show here content of two files: shopping_cart.php includes/application_top.php Stanislav Hi, My store is in the root dir, I've included /shopping_cart.php - I do have another shopping_cart.php in /includes/languages/english but that one hasn't been modified. I've also included /includes/application_top.php This is my /shopping_cart.php <?php /* $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2007 osCommerce Released under the GNU General Public License */ require("includes/application_top.php"); if ($cart->count_contents() > 0) { include(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment; } require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_SHOPPING_CART); $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_SHOPPING_CART)); ?> <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html <?php echo HTML_PARAMS; ?>> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"> <title><?php echo TITLE; ?></title> <base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>"> <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0"> <!-- header //--> <?php require(DIR_WS_INCLUDES . 'header.php'); ?> <!-- header_eof //--> <!-- body //--> <table border="0" width="100%" cellspacing="3" cellpadding="3"> <tr> <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2"> <!-- left_navigation //--> <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?> <!-- left_navigation_eof //--> </table></td> <!-- body_text //--> <td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="pageHeading"><?php echo HEADING_TITLE; ?></td> <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_cart.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <?php if ($cart->count_contents() > 0) { ?> <tr> <td> <?php $info_box_contents = array(); $info_box_contents[0][] = array('align' => 'center', 'params' => 'class="productListing-heading"', 'text' => TABLE_HEADING_REMOVE); $info_box_contents[0][] = array('params' => 'class="productListing-heading"', 'text' => TABLE_HEADING_PRODUCTS); $info_box_contents[0][] = array('align' => 'center', 'params' => 'class="productListing-heading"', 'text' => TABLE_HEADING_QUANTITY); $info_box_contents[0][] = array('align' => 'right', 'params' => 'class="productListing-heading"', 'text' => TABLE_HEADING_TOTAL); $any_out_of_stock = 0; $products = $cart->get_products(); for ($i=0, $n=sizeof($products); $i<$n; $i++) { // Push all attributes information in an array if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) { while (list($option, $value) = each($products[$i]['attributes'])) { echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value); $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . (int)$products[$i]['id'] . "' and pa.options_id = '" . (int)$option . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . (int)$value . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . (int)$languages_id . "' and poval.language_id = '" . (int)$languages_id . "'"); $attributes_values = tep_db_fetch_array($attributes); $products[$i][$option]['products_options_name'] = $attributes_values['products_options_name']; $products[$i][$option]['options_values_id'] = $value; $products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name']; $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price']; $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix']; } } } // BOF Products Bundles if (STOCK_CHECK == 'true') { $runningsums = array(); // Temporarily sort the cart so that bundles are first to // prevent marking a bundle out of stock, if the user tries to order // a bundle's worth separately. // Make a copy of the cart. $workprods = $products; for ($i = 0, $n = sizeof($workprods); $i < $n; $i++) { // Remember the original sort order. $workprods[$i]['origpos'] = $i; } // Sort. $inorder = false; while (!$inorder) { $inorder = true; for ($i = 0, $n = sizeof($workprods); $i < $n-1; $i++) { if ($workprods[$i]['bundle'] != "yes" && $workprods[$i+1]['bundle'] == "yes") { $workprod = $workprods[$i+1]; $workprods[$i+1] = $workprods[$i]; $workprods[$i] = $workprod; $inorder = false; break; } } } for ($i = 0, $n = sizeof($workprods); $i < $n; $i++) { if ($workprods[$i]['bundle'] == "yes") { $stock_checks[0][$i] = tep_check_stock($workprods[$i]['id'], $workprods[$i]['quantity']); if (!tep_not_null($stock_checks[0][$i])) { // The bundle is in stock, so count this against the total. $bundle_query = tep_db_query("SELECT subproduct_id, subproduct_qty FROM " . TABLE_PRODUCTS_BUNDLES . " WHERE bundle_id = '" . $workprods[$i]['id'] . "'"); while ($bundle_data = tep_db_fetch_array($bundle_query)) { $work = $bundle_data['subproduct_id']; $runningsums[$work] += $bundle_data['subproduct_qty']; } } } else { $work = $workprods[$i]['id']; $runningsums[$work] += $workprods[$i]['quantity']; $stock_checks[0][$i] = tep_check_stock($workprods[$i]['id'], $runningsums[$work]); } } // Now go back to the original sort order. for ($i = 0, $n = sizeof($workprods); $i < $n; $i++) { $work = $workprods[$i]['origpos']; $stock_checks[1][$i] = $stock_checks[0][$work]; } } // EOF Product Bundles for ($i=0, $n=sizeof($products); $i<$n; $i++) { if (($i/2) == floor($i/2)) { $info_box_contents[] = array('params' => 'class="productListing-even"'); } else { $info_box_contents[] = array('params' => 'class="productListing-odd"'); } $cur_row = sizeof($info_box_contents) - 1; $info_box_contents[$cur_row][] = array('align' => 'center', 'params' => 'class="productListing-data" valign="top"', 'text' => tep_draw_checkbox_field('cart_delete[]', $products[$i]['id'])); $products_name = '<table border="0" cellspacing="2" cellpadding="2">' . ' <tr>' . ' <td class="productListing-data" align="center"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a></td>' . ' <td class="productListing-data" valign="top"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '"><b>' . $products[$i]['name'] . '</b></a>'; if (STOCK_CHECK == 'true') { //BOF Bundled Products //$stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']); $stock_check = $stock_checks[1][$i]; //EOF Bundled Products if (tep_not_null($stock_check)) { $any_out_of_stock = 1; $products_name .= $stock_check; } } if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) { reset($products[$i]['attributes']); while (list($option, $value) = each($products[$i]['attributes'])) { $products_name .= '<br><small><i> - ' . $products[$i][$option]['products_options_name'] . ' ' . $products[$i][$option]['products_options_values_name'] . '</i></small>'; } } $products_name .= ' </td>' . ' </tr>' . '</table>'; $info_box_contents[$cur_row][] = array('params' => 'class="productListing-data"', 'text' => $products_name); $info_box_contents[$cur_row][] = array('align' => 'center', 'params' => 'class="productListing-data" valign="top"', 'text' => tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id'])); $info_box_contents[$cur_row][] = array('align' => 'right', 'params' => 'class="productListing-data" valign="top"', 'text' => '<b>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) . '</b>'); } new productListingBox($info_box_contents); ?> </td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <?php // {{ buySAFE Module if (is_array($buysafe_result) && $buysafe_result['IsBuySafeEnabled'] == 'true') { ?> <script src="<?php echo MODULE_BUYSAFE_BUYSAFE_ROLLOVER_URL; ?>" type="text/javascript" language="javascript" charset="utf-8"></script> <script language="JavaScript" type="text/javascript"> <!-- function buySAFEOnClick() { if (document.cart_quantity.WantsBond.value == 'false') { document.cart_quantity.WantsBond.value = 'true'; } else { document.cart_quantity.WantsBond.value = 'false'; } document.cart_quantity.submit(); } //--> </script> <tr> <td align="right"><?php echo tep_draw_hidden_field('WantsBond', ($WantsBond ? $WantsBond : 'false')); ?><table cellspacing="2" cellpadding="2" border="0"> <tr> <td class="main" align="right"><b><?php echo SUB_TITLE_SUB_TOTAL; ?></b></td> <td class="main" align="right"><b><?php echo $currencies->format($cart->show_total()); ?></b></td> </tr> <tr> <td class="main" align="right"><b><?php echo $buysafe_result['BondingSignal']; ?></b></td> <td class="main" align="right"><b><?php echo $buysafe_result['BondCostDisplayText']; ?></b></td> </tr> <tr> <td class="main" align="right"><b><?php echo SUB_TITLE_TOTAL; ?></b></td> <td class="main" align="right"><b><?php echo ($buysafe_result['BondCostDisplayText'] ? $currencies->format($cart->show_total() + $buysafe_result['TotalBondCost']) : $currencies->format($cart->show_total())); ?></b></td> </tr> </table></td> </tr> <?php } else { ?> <tr> <td align="right" class="main"><b><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()); ?></b></td> </tr> <?php } // end if (is_array($buysafe_result)) // }} ?> <?php if ($any_out_of_stock == 1) { if (STOCK_ALLOW_CHECKOUT == 'true') { ?> <tr> <td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CAN_CHECKOUT; ?></td> </tr> <?php } else { ?> <tr> <td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CANT_CHECKOUT; ?></td> </tr> <?php } } ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main"><?php echo tep_image_submit('button_update_cart.gif', IMAGE_BUTTON_UPDATE_CART); ?></td> <?php $back = sizeof($navigation->path)-2; if (isset($navigation->path[$back])) { ?> <td class="main"><?php echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; ?></td> <?php } ?> <td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '">' . tep_image_button('button_checkout.gif', IMAGE_BUTTON_CHECKOUT) . '</a>'; ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> </table></td> </tr> </table></td> </tr> <?php // {{ buySAFE Module if (is_array($buysafe_result) && $buysafe_result['IsBuySafeEnabled'] == 'true') { ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td align="center" class="main"><a href="<?php echo $buysafe_result['CartDetailsUrl']; ?>" target="_blank" style="text-decoration:underline"><?php echo $buysafe_result['CartDetailsDisplayText']; ?></a></td> </tr> <?php } // end if (is_array($buysafe_result)) // }} ?> <?php $initialize_checkout_methods = $payment_modules->checkout_initialization_method(); if (!empty($initialize_checkout_methods)) { ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td align="right" class="main" style="padding-right: 50px;"><?php echo TEXT_ALTERNATIVE_CHECKOUT_METHODS; ?></td> </tr> <?php reset($initialize_checkout_methods); while (list(, $value) = each($initialize_checkout_methods)) { ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td align="right" class="main"><?php echo $value; ?></td> </tr> <?php } } } else { ?> <tr> <td align="center" class="main"><?php new infoBox(array(array('text' => TEXT_CART_EMPTY))); ?></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> </table></td> </tr> </table></td> </tr> <?php } ?> </table></form></td> <!-- body_text_eof //--> <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2"> <!-- right_navigation //--> <?php require(DIR_WS_INCLUDES . 'column_right.php'); ?> <!-- right_navigation_eof //--> </table></td> </tr> </table> <!-- body_eof //--> <!-- footer //--> <?php require(DIR_WS_INCLUDES . 'footer.php'); ?> <!-- footer_eof //--> <br> </body> </html> <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> ******************************************************************************** *********************************** This is my /includes/application_top.php <?php /* $Id: application_top.php 1785 2008-01-10 15:07:07Z hpdl $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2008 osCommerce Released under the GNU General Public License */ // start the timer for the page parse time log define('PAGE_PARSE_START_TIME', microtime()); // set the level of error reporting error_reporting(E_ALL & ~E_NOTICE); // check support for register_globals if (function_exists('ini_get') && (ini_get('register_globals') == false) && (PHP_VERSION < 4.3) ) { exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory. Please use PHP 4.3+ if register_globals cannot be enabled on the server.'); } // Set the local configuration parameters - mainly for developers if (file_exists('includes/local/configure.php')) include('includes/local/configure.php'); // include server parameters require('includes/configure.php'); if (strlen(DB_SERVER) < 1) { if (is_dir('install')) { header('Location: install/index.php'); } } // define the project version define('PROJECT_VERSION', 'osCommerce Online Merchant v2.2 RC2'); // some code to solve compatibility issues require(DIR_WS_FUNCTIONS . 'compatibility.php'); // set the type of request (secure or not) $request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL'; // set php_self in the local scope if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF']; if ($request_type == 'NONSSL') { define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG); } else { define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG); } // include the list of project filenames require(DIR_WS_INCLUDES . 'filenames.php'); // include the list of project database tables require(DIR_WS_INCLUDES . 'database_tables.php'); // customization for the design layout define('BOX_WIDTH', 125); // how wide the boxes should be in pixels (default: 125) // include the database functions require(DIR_WS_FUNCTIONS . 'database.php'); // make a connection to the database... now tep_db_connect() or die('Unable to connect to database server!'); // set the application parameters $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION); while ($configuration = tep_db_fetch_array($configuration_query)) { define($configuration['cfgKey'], $configuration['cfgValue']); } // if gzip_compression is enabled, start to buffer the output if ( (GZIP_COMPRESSION == 'true') && ($ext_zlib_loaded = extension_loaded('zlib')) && (PHP_VERSION >= '4') ) { if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) { if (PHP_VERSION >= '4.0.4') { ob_start('ob_gzhandler'); } else { include(DIR_WS_FUNCTIONS . 'gzip_compression.php'); ob_start(); ob_implicit_flush(); } } else { ini_set('zlib.output_compression_level', GZIP_LEVEL); } } // set the HTTP GET parameters manually if search_engine_friendly_urls is enabled if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') { if (strlen(getenv('PATH_INFO')) > 1) { $GET_array = array(); $PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF); $vars = explode('/', substr(getenv('PATH_INFO'), 1)); for ($i=0, $n=sizeof($vars); $i<$n; $i++) { if (strpos($vars[$i], '[]')) { $GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1]; } else { $HTTP_GET_VARS[$vars[$i]] = $vars[$i+1]; } $i++; } if (sizeof($GET_array) > 0) { while (list($key, $value) = each($GET_array)) { $HTTP_GET_VARS[$key] = $value; } } } } // define general functions used application-wide require(DIR_WS_FUNCTIONS . 'general.php'); require(DIR_WS_FUNCTIONS . 'html_output.php'); // set the cookie domain $cookie_domain = (($request_type == 'NONSSL') ? HTTP_COOKIE_DOMAIN : HTTPS_COOKIE_DOMAIN); $cookie_path = (($request_type == 'NONSSL') ? HTTP_COOKIE_PATH : HTTPS_COOKIE_PATH); // include cache functions if enabled if (USE_CACHE == 'true') include(DIR_WS_FUNCTIONS . 'cache.php'); // include shopping cart class require(DIR_WS_CLASSES . 'shopping_cart.php'); // include navigation history class require(DIR_WS_CLASSES . 'navigation_history.php'); // check if sessions are supported, otherwise use the php3 compatible session class if (!function_exists('session_start')) { define('PHP_SESSION_NAME', 'osCsid'); define('PHP_SESSION_PATH', $cookie_path); define('PHP_SESSION_DOMAIN', $cookie_domain); define('PHP_SESSION_SAVE_PATH', SESSION_WRITE_DIRECTORY); include(DIR_WS_CLASSES . 'sessions.php'); } // define how the session functions will be used require(DIR_WS_FUNCTIONS . 'sessions.php'); // set the session name and save path tep_session_name('osCsid'); tep_session_save_path(SESSION_WRITE_DIRECTORY); // set the session cookie parameters if (function_exists('session_set_cookie_params')) { session_set_cookie_params(0, $cookie_path, $cookie_domain); } elseif (function_exists('ini_set')) { ini_set('session.cookie_lifetime', '0'); ini_set('session.cookie_path', $cookie_path); ini_set('session.cookie_domain', $cookie_domain); } // set the session ID if it exists if (isset($HTTP_POST_VARS[tep_session_name()])) { tep_session_id($HTTP_POST_VARS[tep_session_name()]); } elseif ( ($request_type == 'SSL') && isset($HTTP_GET_VARS[tep_session_name()]) ) { tep_session_id($HTTP_GET_VARS[tep_session_name()]); } // start the session $session_started = false; if (SESSION_FORCE_COOKIE_USE == 'True') { tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain); if (isset($HTTP_COOKIE_VARS['cookie_test'])) { tep_session_start(); $session_started = true; } } elseif (SESSION_BLOCK_SPIDERS == 'True') { $user_agent = strtolower(getenv('HTTP_USER_AGENT')); $spider_flag = false; if (tep_not_null($user_agent)) { $spiders = file(DIR_WS_INCLUDES . 'spiders.txt'); for ($i=0, $n=sizeof($spiders); $i<$n; $i++) { if (tep_not_null($spiders[$i])) { if (is_integer(strpos($user_agent, trim($spiders[$i])))) { $spider_flag = true; break; } } } } if ($spider_flag == false) { tep_session_start(); $session_started = true; } } else { tep_session_start(); $session_started = true; } if ( ($session_started == true) && (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) { extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS); } // set SID once, even if empty $SID = (defined('SID') ? SID : ''); // verify the ssl_session_id if the feature is enabled if ( ($request_type == 'SSL') && (SESSION_CHECK_SSL_SESSION_ID == 'True') && (ENABLE_SSL == true) && ($session_started == true) ) { $ssl_session_id = getenv('SSL_SESSION_ID'); if (!tep_session_is_registered('SSL_SESSION_ID')) { $SESSION_SSL_ID = $ssl_session_id; tep_session_register('SESSION_SSL_ID'); } if ($SESSION_SSL_ID != $ssl_session_id) { tep_session_destroy(); tep_redirect(tep_href_link(FILENAME_SSL_CHECK)); } } // verify the browser user agent if the feature is enabled if (SESSION_CHECK_USER_AGENT == 'True') { $http_user_agent = getenv('HTTP_USER_AGENT'); if (!tep_session_is_registered('SESSION_USER_AGENT')) { $SESSION_USER_AGENT = $http_user_agent; tep_session_register('SESSION_USER_AGENT'); } if ($SESSION_USER_AGENT != $http_user_agent) { tep_session_destroy(); tep_redirect(tep_href_link(FILENAME_LOGIN)); } } // verify the IP address if the feature is enabled if (SESSION_CHECK_IP_ADDRESS == 'True') { $ip_address = tep_get_ip_address(); if (!tep_session_is_registered('SESSION_IP_ADDRESS')) { $SESSION_IP_ADDRESS = $ip_address; tep_session_register('SESSION_IP_ADDRESS'); } if ($SESSION_IP_ADDRESS != $ip_address) { tep_session_destroy(); tep_redirect(tep_href_link(FILENAME_LOGIN)); } } // create the shopping cart & fix the cart if necesary if (tep_session_is_registered('cart') && is_object($cart)) { if (PHP_VERSION < 4) { $broken_cart = $cart; $cart = new shoppingCart; $cart->unserialize($broken_cart); } } else { tep_session_register('cart'); $cart = new shoppingCart; } // include currencies class and create an instance require(DIR_WS_CLASSES . 'currencies.php'); $currencies = new currencies(); // include the mail classes require(DIR_WS_CLASSES . 'mime.php'); require(DIR_WS_CLASSES . 'email.php'); // set the language if (!tep_session_is_registered('language') || isset($HTTP_GET_VARS['language'])) { if (!tep_session_is_registered('language')) { tep_session_register('language'); tep_session_register('languages_id'); } include(DIR_WS_CLASSES . 'language.php'); $lng = new language(); if (isset($HTTP_GET_VARS['language']) && tep_not_null($HTTP_GET_VARS['language'])) { $lng->set_language($HTTP_GET_VARS['language']); } else { $lng->get_browser_language(); } $language = $lng->language['directory']; $languages_id = $lng->language['id']; } // include the language translations require(DIR_WS_LANGUAGES . $language . '.php'); // Ultimate SEO URLs v2.1 if ((!defined(SEO_ENABLED)) || (SEO_ENABLED == 'true')) { include_once(DIR_WS_CLASSES . 'seo.class.php'); if ( !is_object($seo_urls) ){ $seo_urls = new SEO_URL($languages_id); } } // currency if (!tep_session_is_registered('currency') || isset($HTTP_GET_VARS['currency']) || ( (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && (LANGUAGE_CURRENCY != $currency) ) ) { if (!tep_session_is_registered('currency')) tep_session_register('currency'); if (isset($HTTP_GET_VARS['currency']) && $currencies->is_set($HTTP_GET_VARS['currency'])) { $currency = $HTTP_GET_VARS['currency']; } else { $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY; } } // navigation history if (tep_session_is_registered('navigation')) { if (PHP_VERSION < 4) { $broken_navigation = $navigation; $navigation = new navigationHistory; $navigation->unserialize($broken_navigation); } } else { tep_session_register('navigation'); $navigation = new navigationHistory; } $navigation->add_current_page(); // Shopping cart actions if (isset($HTTP_GET_VARS['action'])) { // redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled if ($session_started == false) { tep_redirect(tep_href_link(FILENAME_COOKIE_USAGE)); } if (DISPLAY_CART == 'true') { $goto = FILENAME_SHOPPING_CART; $parameters = array('action', 'cPath', 'products_id', 'pid'); } else { $goto = basename($PHP_SELF); if ($HTTP_GET_VARS['action'] == 'buy_now') { $parameters = array('action', 'pid', 'products_id'); } else { $parameters = array('action', 'pid'); } } switch ($HTTP_GET_VARS['action']) { // customer wants to update the product quantity in their shopping cart case 'update_product' : for ($i=0, $n=sizeof($HTTP_POST_VARS['products_id']); $i<$n; $i++) { if (in_array($HTTP_POST_VARS['products_id'][$i], (is_array($HTTP_POST_VARS['cart_delete']) ? $HTTP_POST_VARS['cart_delete'] : array()))) { $cart->remove($HTTP_POST_VARS['products_id'][$i]); } else { if (PHP_VERSION < 4) { // if PHP3, make correction for lack of multidimensional array. reset($HTTP_POST_VARS); while (list($key, $value) = each($HTTP_POST_VARS)) { if (is_array($value)) { while (list($key2, $value2) = each($value)) { if (ereg ("(.*)\]\[(.*)", $key2, $var)) { $id2[$var[1]][$var[2]] = $value2; } } } } $attributes = ($id2[$HTTP_POST_VARS['products_id'][$i]]) ? $id2[$HTTP_POST_VARS['products_id'][$i]] : ''; } else { $attributes = ($HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]]) ? $HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]] : ''; } $cart->add_cart($HTTP_POST_VARS['products_id'][$i], $HTTP_POST_VARS['cart_quantity'][$i], $attributes, false); } } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; // customer adds a product from the products page case 'add_product' : if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) { $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+1, $HTTP_POST_VARS['id']); } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; // performed by the 'buy now' button in product listings and review page case 'buy_now' : if (isset($HTTP_GET_VARS['products_id'])) { if (tep_has_product_attributes($HTTP_GET_VARS['products_id'])) { tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id'])); } else { $cart->add_cart($HTTP_GET_VARS['products_id'], $cart->get_quantity($HTTP_GET_VARS['products_id'])+1); } } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; case 'notify' : if (tep_session_is_registered('customer_id')) { if (isset($HTTP_GET_VARS['products_id'])) { $notify = $HTTP_GET_VARS['products_id']; } elseif (isset($HTTP_GET_VARS['notify'])) { $notify = $HTTP_GET_VARS['notify']; } elseif (isset($HTTP_POST_VARS['notify'])) { $notify = $HTTP_POST_VARS['notify']; } else { tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify')))); } if (!is_array($notify)) $notify = array($notify); for ($i=0, $n=sizeof($notify); $i<$n; $i++) { $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $notify[$i] . "' and customers_id = '" . $customer_id . "'"); $check = tep_db_fetch_array($check_query); if ($check['count'] < 1) { tep_db_query("insert into " . TABLE_PRODUCTS_NOTIFICATIONS . " (products_id, customers_id, date_added) values ('" . $notify[$i] . "', '" . $customer_id . "', now())"); } } tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify')))); } else { $navigation->set_snapshot(); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } break; case 'notify_remove' : if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['products_id'])) { $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'"); $check = tep_db_fetch_array($check_query); if ($check['count'] > 0) { tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'"); } tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')))); } else { $navigation->set_snapshot(); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } break; case 'cust_order' : if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['pid'])) { if (tep_has_product_attributes($HTTP_GET_VARS['pid'])) { tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['pid'])); } else { $cart->add_cart($HTTP_GET_VARS['pid'], $cart->get_quantity($HTTP_GET_VARS['pid'])+1); } } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; } } //rmh referral start // set the referral id if (!tep_session_is_registered('referral_id') || isset($HTTP_GET_VARS['ref'])) { if (!tep_session_is_registered('referral_id') && !tep_session_is_registered('customer_id')) { tep_session_register('referral_id'); } if (isset($HTTP_GET_VARS['ref']) && tep_not_null($HTTP_GET_VARS['ref'])) { $referral_id = $HTTP_GET_VARS['ref']; } else { $referral_id = ''; } } //rmh referral end // include the who's online functions require(DIR_WS_FUNCTIONS . 'whos_online.php'); tep_update_whos_online(); // include the password crypto functions require(DIR_WS_FUNCTIONS . 'password_funcs.php'); // include validation functions (right now only email address) require(DIR_WS_FUNCTIONS . 'validations.php'); // split-page-results require(DIR_WS_CLASSES . 'split_page_results.php'); // infobox require(DIR_WS_CLASSES . 'boxes.php'); // auto activate and expire banners require(DIR_WS_FUNCTIONS . 'banner.php'); tep_activate_banners(); tep_expire_banners(); // auto expire special products require(DIR_WS_FUNCTIONS . 'specials.php'); tep_expire_specials(); // calculate category path if (isset($HTTP_GET_VARS['cPath'])) { $cPath = $HTTP_GET_VARS['cPath']; } elseif (isset($HTTP_GET_VARS['products_id']) && !isset($HTTP_GET_VARS['manufacturers_id'])) { $cPath = tep_get_product_path($HTTP_GET_VARS['products_id']); } else { $cPath = ''; } if (tep_not_null($cPath)) { $cPath_array = tep_parse_category_path($cPath); $cPath = implode('_', $cPath_array); $current_category_id = $cPath_array[(sizeof($cPath_array)-1)]; } else { $current_category_id = 0; } // include the breadcrumb class and start the breadcrumb trail require(DIR_WS_CLASSES . 'breadcrumb.php'); $breadcrumb = new breadcrumb; $breadcrumb->add(HEADER_TITLE_TOP, HTTP_SERVER); $breadcrumb->add(HEADER_TITLE_CATALOG, tep_href_link(FILENAME_DEFAULT)); // add category names or the manufacturer name to the breadcrumb trail if (isset($cPath_array)) { for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) { $categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'"); if (tep_db_num_rows($categories_query) > 0) { $categories = tep_db_fetch_array($categories_query); $breadcrumb->add($categories['categories_name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1))))); } else { break; } } } elseif (isset($HTTP_GET_VARS['manufacturers_id'])) { $manufacturers_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'"); if (tep_db_num_rows($manufacturers_query)) { $manufacturers = tep_db_fetch_array($manufacturers_query); $breadcrumb->add($manufacturers['manufacturers_name'], tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'])); } } // add the products model to the breadcrumb trail if (isset($HTTP_GET_VARS['products_id'])) { $model_query = tep_db_query("select products_model from " . TABLE_PRODUCTS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'"); if (tep_db_num_rows($model_query)) { $model = tep_db_fetch_array($model_query); $breadcrumb->add($model['products_model'], tep_href_link(FILENAME_PRODUCT_INFO, 'cPath=' . $cPath . '&products_id=' . $HTTP_GET_VARS['products_id'])); } } // START STS 4.5.8 require (DIR_WS_CLASSES.'sts.php'); $sts= new sts(); $sts->start_capture(); // END STS 4.5.8 // initialize the message stack for output messages require(DIR_WS_CLASSES . 'message_stack.php'); $messageStack = new messageStack; // set which precautions should be checked define('WARN_INSTALL_EXISTENCE', 'true'); define('WARN_CONFIG_WRITEABLE', 'true'); define('WARN_SESSION_DIRECTORY_NOT_WRITEABLE', 'true'); define('WARN_SESSION_AUTO_START', 'true'); define('WARN_DOWNLOAD_DIRECTORY_NOT_READABLE', 'true'); require_once(DIR_WS_CLASSES . 'preventDuplicates.php'); $preventDuplicates = new preventDuplicates(); ?> ******************************************************************************** *********************************** Thank you so much again for your help Regards Jason Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted June 26, 2009 Share Posted June 26, 2009 Hello, in the catalog/shopping_cart.php (about line 198) Try to replace <td class="main"><?php echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; ?></td> With: <td class="main"><?php echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action', 'products_id')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; ?></td> This is not a real fix of the problem but it can help. Stanislav Quote Link to comment Share on other sites More sharing options...
s1lverf0x Posted June 29, 2009 Share Posted June 29, 2009 Hello, in the catalog/shopping_cart.php (about line 198) Try to replace <td class="main"><?php echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; ?></td> With: <td class="main"><?php echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action', 'products_id')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; ?></td> This is not a real fix of the problem but it can help. Stanislav Hi Stanislav, That fixed the problem! - Thank you so much, I am very grateful for your help & time you took to look over the code. I dont' understand php enough to know why passing the product_id back would prevent ALL the product_id's being set to the same one under each "Add To Cart" button - but it works all the same. Many Thanks again Jason Quote Link to comment Share on other sites More sharing options...
tpokala Posted June 29, 2009 Share Posted June 29, 2009 I have problem with thic sontribution;/ Please check the links on www.opal24.pl Could someone tell me why they are like http://www.opal24.pl/-c-27.html?osCsid=f61...9941e5101b72d93 ? Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted June 29, 2009 Share Posted June 29, 2009 (edited) I have problem with thic sontribution;/ Please check the links on www.opal24.pl Could someone tell me why they are like http://www.opal24.pl/-c-27.html?osCsid=f61...9941e5101b72d93 ? Hello, Try this: Create a new file called characters_conversion.php <?php // List all characters conversion // ### Ensure to save this file as the correct charset! ### $cyryllic = array('char' => 'convert', 'char' => 'convert', 'char' => 'convert'); ?> Once you have completed the complete conversion array save the file in catalog/includes/modules/characters_conversion.php Open catalog/includes/classes/seo.class.php .. and find the following function: function expand($set){ $container = array(); if ( $this->not_null($set) ){ if ( $data = @explode(',', $set) ){ foreach ( $data as $index => $valuepair){ $p = @explode('=>', $valuepair); $container[trim($p[0])] = trim($p[1]); } return $container; } else { return 'false'; } } else { return 'false'; } } # end function Replace with: function expand($set){ if ( is_readable(DIR_FS_CATALOG . DIR_WS_MODULES . 'characters_conversion.php') ){ include_once DIR_FS_CATALOG . DIR_WS_MODULES . 'characters_conversion.php'; if (isset($cyryllic) && is_array($cyryllic) ){ return $cyryllic; } } $container = array(); if ( $this->not_null($set) ){ if ( $data = @explode(',', $set) ){ foreach ( $data as $index => $valuepair){ $p = @explode('=>', $valuepair); $container[trim($p[0])] = trim($p[1]); } return $container; } else { return 'false'; } } else { return 'false'; } } # end function characters_conversion.php should effectively bypass the standard function and use the array you created to replace the characters with no limit on size. Stanislav Edited June 29, 2009 by Pektsekye Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted June 29, 2009 Share Posted June 29, 2009 (edited) The previous post is a bit modified solution posted by FWR Media on this forum thread on May 15 2009, 01:39 PM As I see your store charset is iso-8859-2 Stanislav Edited June 29, 2009 by Pektsekye Quote Link to comment Share on other sites More sharing options...
s1lverf0x Posted June 30, 2009 Share Posted June 30, 2009 Hi Stanislav,That fixed the problem! - Thank you so much, I am very grateful for your help & time you took to look over the code. I dont' understand php enough to know why passing the product_id back would prevent ALL the product_id's being set to the same one under each "Add To Cart" button - but it works all the same. Many Thanks again Jason I sopke too soon - now what happens is that the category/product_listing works ok with the cart but if you go into product_info.php then add to cart, it adds it to cart correctly but when you hit "Continue Shopping" it gives "Product not found" every time, then you can hit "Continue" which takes you back to the index pag rather than the category you were in. Jason Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted June 30, 2009 Share Posted June 30, 2009 I sopke too soon - now what happens is that the category/product_listing works ok with the cart but if you go into product_info.php then add to cart, it adds it to cart correctly but when you hit "Continue Shopping" it gives "Product not found" every time, then you can hit "Continue" which takes you back to the index pag rather than the category you were in. Jason Hello, Try this instead of the previous solution: In the catalog/includes/modules/product_listing.php (about line 133) replace: $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> '; with: $lc_text = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'products_id')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW) . '</a> '; Stanislav Quote Link to comment Share on other sites More sharing options...
s1lverf0x Posted June 30, 2009 Share Posted June 30, 2009 Hello, Try this instead of the previous solution: In the catalog/includes/modules/product_listing.php (about line 133) replace: $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> '; with: $lc_text = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'products_id')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW) . '</a> '; Stanislav Hi Stanislav, That has reverted it back to the original problem - I'm not getting "Product not found" any more but if you add more than 1 product to the cart from the category/product_listing it just duplicates the first item in the cart. I've noticed that at that piece of code you mentioned above in the product_listing.php - it's slightly different fro me as I have the contribution Bundled Products installed, my code looks like this: // BOF Bundled Products case 'PRODUCT_LIST_BUY_NOW': $lc_align = 'center'; $StockChecker1 = tep_get_products_stock($listing['products_id']); if ( $StockChecker1 <> 0){ $lc_text = (($listing['products_price'] > 0) ? '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'product_id')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_IN_CART) . '</a> ' : ' '); }else{ $lc_text = tep_image_button('button_out_of_stock.gif', IMAGE_BUTTON_OUT_OF_STOCK) . ' '; } break; // EOF Bundled Products I have php5.2.9 installed - should I be on Ultimate SEO URL 5 (I'm on 2.7)? if I move to version 5 do you know if that would mess-up things like my Bundled Products that are embedded into files like product_listing.php? I'll start looking at Ultimate SEO URL 5 install to see what's involved. Cheers Jason Quote Link to comment Share on other sites More sharing options...
tpokala Posted June 30, 2009 Share Posted June 30, 2009 ..... characters_conversion.php should effectively bypass the standard function and use the array you created to replace the characters with no limit on size. Stanislav thanks, that is hellfull and work! But I have long products name - like new long tshirt eg. and I see ...newlongtshirt.html (I want to make it like ...new-longt-shirt.html) , in characters_conversion.php I include ' ' => '-', but it don't work. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.