Jump to content
spidometrs

[CONTRIBUTION] Ultimate SEO URLs v2.1 - by Chemo

Recommended Posts

Hello,

Can someone help me with the redirect problem ? I turned to False the redirect to shopping cart after add to cart, but the website redirect to home page now instead of staying in the product info page.

The code in application_top is

<?php
/*
  $Id$

  Open Source E-Commerce Solutions
  Copyright (c) 2008
  Released under the GNU General Public License
*/
  define('MAX_DESCR_MODUL_NEW_PRODS','68'); //
  define('MAX_DESCR_LISTING','50'); //
  define('MAX_DESCR_SPECIALS','50'); //
  define('MAX_DESCR_PRODS_NEW','150'); //
  define('MAX_DESCR_BESTSELLERS','16'); //
  define('MAX_DESCR_REVIEWS','50'); //
  define('MAX_DESCR_BOX','50'); //

// 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.');
  }

// load server configuration parameters
  if (file_exists('includes/local/configure.php')) { // for developers
    include('includes/local/configure.php');
  } else {
    include('includes/configure.php');
  }

  if (strlen(DB_SERVER) < 1) {
    if (is_dir('install')) {
      header('Location: install/index.php');
    }
  }

// define the project version --- obsolete, now retrieved with tep_get_version()
  define('PROJECT_VERSION', 'osCommerce Online Merchant v2.3');

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

/**
  * ULTIMATE Seo Urls 5 PRO by FWR Media
  * function to return the base filename 
  */
  function usu5_base_filename() {
    // Probably won't get past SCRIPT_NAME unless this is reporting cgi location
    $base = new ArrayIterator( array( 'SCRIPT_NAME', 'PHP_SELF', 'REQUEST_URI', 'ORIG_PATH_INFO', 'HTTP_X_ORIGINAL_URL', 'HTTP_X_REWRITE_URL' ) );
    while ( $base->valid() ) {
      if ( array_key_exists(  $base->current(), $_SERVER ) && !empty(  $_SERVER[$base->current()] ) ) {
        if ( false !== strpos( $_SERVER[$base->current()], '.php' ) ) {
          preg_match( '@[a-z0-9_]+\.php@i', $_SERVER[$base->current()], $matches );
          if ( is_array( $matches ) && ( array_key_exists( 0, $matches ) )
                                    && ( substr( $matches[0], -4, 4 ) == '.php' )
                                    && ( is_readable( $matches[0] ) ) ) {
            return $matches[0];
          } 
        } 
      }
      $base->next();
    }
    // Some odd server set ups return / for SCRIPT_NAME and PHP_SELF when accessed as mysite.com (no index.php) where they usually return /index.php
    if ( ( $_SERVER['SCRIPT_NAME'] == '/' ) || ( $_SERVER['PHP_SELF'] == '/' ) ) {
      return 'index.php';
    }
    // Return the standard RC3 code 
    $req = parse_url($HTTP_SERVER_VARS['SCRIPT_NAME']);
$PHP_SELF = substr($req['path'], ($request_type == 'NONSSL') ? strlen(DIR_WS_HTTP_CATALOG) : strlen(DIR_WS_HTTPS_CATALOG));
  } // End function
// set php_self in the local scope
  $PHP_SELF = usu5_base_filename();

  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')) && !headers_sent() ) {
  if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) {
    if (PHP_VERSION < '5.4' || PHP_VERSION > '5.4.5') { // see PHP bug 55544
      if (PHP_VERSION >= '4.0.4') {
        ob_start('ob_gzhandler');
      } elseif (PHP_VERSION >= '4.0.1') {
        include(DIR_WS_FUNCTIONS . 'gzip_compression.php');
        ob_start();
        ob_implicit_flush();
      }
    }
  } elseif (function_exists('ini_set')) {
    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));
      do_magic_quotes_gpc($vars);
      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');

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

  @ini_set('session.use_only_cookies', (SESSION_FORCE_COOKIE_USE == 'True') ? 1 : 0);

// set the session ID if it exists
   if ( SESSION_FORCE_COOKIE_USE == 'False' ) {
  if ( isset($HTTP_GET_VARS[tep_session_name()]) && (!isset($HTTP_COOKIE_VARS[tep_session_name()]) || ($HTTP_COOKIE_VARS[tep_session_name()] != $HTTP_GET_VARS[tep_session_name()])) ) {
    tep_session_id($HTTP_GET_VARS[tep_session_name()]);
  } elseif ( isset($HTTP_POST_VARS[tep_session_name()]) && (!isset($HTTP_COOKIE_VARS[tep_session_name()]) || ($HTTP_COOKIE_VARS[tep_session_name()] != $HTTP_POST_VARS[tep_session_name()])) ) {
    tep_session_id($HTTP_POST_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);
  }

// initialize a session token
  if (!tep_session_is_registered('sessiontoken')) {
    $sessiontoken = md5(tep_rand() . tep_rand() . tep_rand() . tep_rand());
    tep_session_register('sessiontoken');
  }

// 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
  if (!tep_session_is_registered('cart') || !is_object($cart)) {
    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'];
  }

/**
  * ULTIMATE Seo Urls 5 PRO by FWR Media
  */
  Usu_Main::i()->setVar( 'languages_id', $languages_id )
               ->setVar( 'request_type', $request_type ) 
               ->setVar( 'session_started', $session_started ) 
               ->setVar( 'sid', $SID ) 
               ->setVar( 'language', $language )
               ->setVar( 'filename', $PHP_SELF )
               ->initiate( ( isset( $lng ) && ( $lng instanceof language ) ) ? $lng : array(), $languages_id, $language );

// include the language translations
  $_system_locale_numeric = setlocale(LC_NUMERIC, 0);
  require(DIR_WS_LANGUAGES . $language . '.php');
  setlocale(LC_NUMERIC, $_system_locale_numeric); // Prevent LC_ALL from setting LC_NUMERIC to a locale with 1,0 float/decimal values instead of 1.0 (see bug #634)

// 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') || !is_object($navigation)) {
    tep_session_register('navigation');
    $navigation = new navigationHistory;
  }
  $navigation->add_current_page();

// action recorder
  include('includes/classes/action_recorder.php');

// 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');
        /* Optional Related Products (ORP) */
            } elseif ($HTTP_GET_VARS['action'] == 'rp_buy_now') {
              $goto = FILENAME_PRODUCT_INFO;
              $parameters = array('action', 'pid', 'rp_products_id');
        //ORP: end
            } else {
      $goto = $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 {
                                  $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'])) {
                                $attributes = isset($HTTP_POST_VARS['id']) ? $HTTP_POST_VARS['id'] : '';
                                $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $attributes))+1, $attributes);
                              }
                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                              break;
      // customer removes a product from their shopping cart
      case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) {
                                $cart->remove($HTTP_GET_VARS['products_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(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id']));
                              break;
      /* Optional Related Products (ORP) */
          case 'rp_buy_now' :     if (isset($HTTP_GET_VARS['rp_products_id'])) {
                                    if (tep_has_product_attributes($HTTP_GET_VARS['rp_products_id'])) {
                                      tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['rp_products_id']));
                                    } else {
                                      $cart->add_cart($HTTP_GET_VARS['rp_products_id'], $cart->get_quantity($HTTP_GET_VARS['rp_products_id'])+1);
                                    }
                                  }
                                  tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                                  break;
          //ORP: end
          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($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 = '" . (int)$notify[$i] . "' and customers_id = '" . (int)$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 ('" . (int)$notify[$i] . "', '" . (int)$customer_id . "', now())");
                                  }
                                }
                                tep_redirect(tep_href_link($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 = '" . (int)$HTTP_GET_VARS['products_id'] . "' and customers_id = '" . (int)$customer_id . "'");
                                $check = tep_db_fetch_array($check_query);
                                if ($check['count'] > 0) {
                                  tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and customers_id = '" . (int)$customer_id . "'");
                                }
                                tep_redirect(tep_href_link($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;
    }
  }

// 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_start_specials();
  tep_expire_specials();
  
// BOF: Featured Products
  require(DIR_WS_FUNCTIONS . 'featured.php');
  tep_expire_featured();

  require(DIR_WS_CLASSES . 'osc_template.php');
  $oscTemplate = new oscTemplate();

 // calculate category path
  if (isset($HTTP_GET_VARS['cPath'])) {
    $cPath = $HTTP_GET_VARS['cPath'];
    if (tep_not_null($cPath)) {
      $cPath_array = tep_parse_category_path($cPath);
      $categories_query = tep_db_query("select cpath from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$cPath_array[sizeof($cPath_array)-1] . "'");
     if ( !tep_db_num_rows($categories_query) ) {
       //not found categories
       //redirect to $current_category_id = 0;
       $result = http_error_handler('302');
     } else {
       $new = tep_db_fetch_array($categories_query);
       $new_cPath = $new['cpath'];
       if ( tep_not_null($new_cPath) ) {
         if ( isset($HTTP_GET_VARS['cPath']) && $HTTP_GET_VARS['cPath'] !== $new_cPath) {
           header("HTTP/1.0 301 Moved Permanently");
           tep_redirect(tep_href_link($PHP_SELF, 'cPath=' . $new_cPath . '&' . tep_get_all_get_params(array('cPath'))) );
         }
       }
     }
    }
    if ( isset($HTTP_GET_VARS['products_id']) && !tep_get_validate_product_cpath($HTTP_GET_VARS['products_id'], $cPath) ) {
      $cPath = tep_get_product_path($HTTP_GET_VARS['products_id']);
      //redirect to product base
      $path_link = '';
      if (tep_not_null($cPath)) {
        $path_link = 'cPath=' . $cPath . '&';
      }
      header("HTTP/1.0 301 Moved Permanently");
      tep_redirect(tep_href_link($PHP_SELF, $path_link . tep_get_all_get_params(array('cPath'))) );
    }
   } elseif ( isset($_GET['products_id']) && !isset($_GET['manufacturers_id']) ) {
     $cPath = tep_get_product_path($_GET['products_id']);
   } else {
     $cPath = '';
   }
 
   if ( !empty($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);

// 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 {
        header("HTTP/1.0 404 Not Found");
        exit;
      }
    }
  } 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']));
    }
  }
  
  
// added code to prepare for the title tag, description tag & keywords tag - By Gemrock
// IF IT'S FIRST TIME TO RUN, THEN ADD 3 NEW FIELDS - CAN BE DELETED ONCE RUN SUCCESSFULLY
  if (!tep_db_query("SELECT title_tag FROM " . TABLE_PRODUCTS_DESCRIPTION)){
      tep_db_query("ALTER TABLE " . TABLE_PRODUCTS_DESCRIPTION . " ADD COLUMN title_tag VARCHAR(255) NULL, ADD COLUMN desc_tag TEXT NULL, ADD COLUMN keywords_tag VARCHAR(255) NULL");
    }
  if (!tep_db_query("SELECT title_tag FROM " . TABLE_CATEGORIES_DESCRIPTION)){
      tep_db_query("ALTER TABLE " . TABLE_CATEGORIES_DESCRIPTION . " ADD COLUMN title_tag VARCHAR(255) NULL, ADD COLUMN desc_tag TEXT NULL, ADD COLUMN keywords_tag VARCHAR(255) NULL");
  }
// END OF CODE ADDING FIELDS
  if (isset($HTTP_GET_VARS['products_id'])) {
    $header_tags_query = tep_db_query("select products_name, products_description, title_tag, desc_tag, keywords_tag from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and language_id = '" . (int)$languages_id . "'");
    if (tep_db_num_rows($header_tags_query)) {
      $header_tags = tep_db_fetch_array($header_tags_query);
      $header_tags[products_name]= trim($header_tags[products_name]);
      $header_tags[title_tag]= trim(strip_tags($header_tags[title_tag]));
      $header_tags[desc_tag]= trim(strip_tags($header_tags[desc_tag]));
      $header_tags[keywords_tag]= trim(strip_tags($header_tags[keywords_tag]));
      $header_tags[products_description] = substr(preg_replace('/\s\s+/', ' ',(strip_tags($header_tags[products_description]))),0,1000);
      // if a tag is less than 2 characters, then use default
      if (strlen($header_tags[title_tag])< 2) {
        //set product name as page title
        $header_tags[title_tag]= $header_tags[products_name];
        }
        //add category name to page title
      if (strlen($categories['categories_name'])>1) $header_tags[title_tag] = $categories['categories_name'] . ' ' . $header_tags[title_tag];
      if (strlen($manufacturers['manufacturers_name'])>1) $header_tags[title_tag] .= ' ' . $manufacturers['manufacturers_name'] . ' ' . $header_tags[title_tag];
      if (strlen($header_tags[desc_tag])< 2) $header_tags[desc_tag] = $header_tags[products_description];
      if (strlen($header_tags[keywords_tag])< 2) $header_tags[keywords_tag] = $header_tags[products_name];
    }
}
// end of added code - By Gemrock

  
  
  

// initialize the message stack for output messages
  require(DIR_WS_CLASSES . 'message_stack.php');
  $messageStack = new messageStack;
?>

 

Share this post


Link to post
Share on other sites
Posted (edited)
21 hours ago, Jack_mcs said:

Then I don't know why that might be happening. I've checked it here in several shops and it works in each. 

I tested it on a new install 1.0.6.1 no core change same error???? The Navbar Shopping cart is not working with Ultimate SEO URL...

It creates the URL of the product without the name like this for example- https://xxx/xxx/-p-4{1}1.html

It misses the generating the name for the URL...

It seems really strange how it is working on your end?

Regds./

radhavallabh

 

Edited by radhavallabh

Share this post


Link to post
Share on other sites
12 minutes ago, radhavallabh said:

It seems really strange how it is working on your end?

Try uninstalling it and installing the next-to-last version. It doesn't use a hook file for the application_top. Also, be sure you are on php 7.3. That is not  required but is what I run so maybe that is the difference.

Share this post


Link to post
Share on other sites
10 minutes ago, Jack_mcs said:

Try uninstalling it and installing the next-to-last version. It doesn't use a hook file for the application_top. Also, be sure you are on php 7.3. That is not  required but is what I run so maybe that is the difference.

I use php 7.3

Installed and Reinstalled;

It works perfectly throughout the site except for the Navbar Shopping Cart :(

I am not able to understand how same thing is happening on fresh install as well??

Share this post


Link to post
Share on other sites
1 hour ago, radhavallabh said:

It works perfectly throughout the site except for the Navbar Shopping Cart

I know you said this before but I was missing the "Navbar" in my reading of it so I was looking at the url of the product on the shopping cart page. I apologize for that mistake and the confusion it caused.

The reason it is failing is because the code that generates the url is in a language file. That is perfectly fine code so I don't know why it fails. Maybe the code in this addon can't handle the language path? In any event, if you want it to work, find this line in includes/modules/navbar/templates/tpl_nb_shopping_cart.php

        echo sprintf(MODULE_NAVBAR_SHOPPING_CART_PRODUCT, $p['id'], $p['quantity'], $p['name']);

and replace it with

        echo '<a class="dropdown-item" href="' . tep_href_link('product_info.php', 'products_id=' . $p['id']) . '">' . $p['quantity'] . ' x ' . $p['name'] . '</a>';

I see there is another language link in one of the footer modules so that would need to be changed to, if it bothers you.

I don't see that the shopping cart change is needed. Search engines won't see it and it seems unlikely a customer would notice it, or care if they did. The cost of making the change is that you have to alter a core-code file so the trade-off may not be worth it. Just my opinion. :)

Share this post


Link to post
Share on other sites
15 hours ago, Jack_mcs said:

I know you said this before but I was missing the "Navbar" in my reading of it so I was looking at the url of the product on the shopping cart page. I apologize for that mistake and the confusion it caused.

The reason it is failing is because the code that generates the url is in a language file. That is perfectly fine code so I don't know why it fails. Maybe the code in this addon can't handle the language path? In any event, if you want it to work, find this line in includes/modules/navbar/templates/tpl_nb_shopping_cart.php


        echo sprintf(MODULE_NAVBAR_SHOPPING_CART_PRODUCT, $p['id'], $p['quantity'], $p['name']);

and replace it with


        echo '<a class="dropdown-item" href="' . tep_href_link('product_info.php', 'products_id=' . $p['id']) . '">' . $p['quantity'] . ' x ' . $p['name'] . '</a>';

I see there is another language link in one of the footer modules so that would need to be changed to, if it bothers you.

I don't see that the shopping cart change is needed. Search engines won't see it and it seems unlikely a customer would notice it, or care if they did. The cost of making the change is that you have to alter a core-code file so the trade-off may not be worth it. Just my opinion. :)

Thanks, I do agree with your opinion...

Is it possible to exclude the above module from SEO URL rewriting or for any similar particular modules;

That way no core code change shall be needed as broken URLS shall pose issues...

Regds./

radhavallabh

Share this post


Link to post
Share on other sites
4 hours ago, radhavallabh said:

Is it possible to exclude the above module from SEO URL rewriting or for any similar particular modules;

That way no core code change shall be needed as broken URLS shall pose issues.

It's possible but I think it would needlessly slow the code down. Also, the link is not broken. It is just missing the name.

Share this post


Link to post
Share on other sites

@Jack_mcs@BrockleyJohn

Hi, Can you please help me;

I spoke to my host regarding this urlencoding curly braces issue due to which my shopping cart URLS are not working and i have to add extra code because of it;

The Hosting guys are asking that which server setting or issue is causing it so that they could fix it for me.. Please can you guide me on what to tell them as these work on almost all servers used by the oscommerce community members.

Your help and guidance will be deeply appreciated;

Thank you in advance;

Regds./

radhavallabh

 

Share this post


Link to post
Share on other sites

@radhavallabhThere was a post about the setting, as I recall, but that was several years ago and I didn't mark it so I don't know which it is. But it would have been a "strict" setting, of which there are several on the server. If you can't find the answer, then maybe explaining to your host that the problem is that url's with brackets, ( {} ),  fail.  Maybe they can figure it out from that.

Share this post


Link to post
Share on other sites
On 5/27/2020 at 4:23 PM, Jack_mcs said:

@radhavallabhThere was a post about the setting, as I recall, but that was several years ago and I didn't mark it so I don't know which it is. But it would have been a "strict" setting, of which there are several on the server. If you can't find the answer, then maybe explaining to your host that the problem is that url's with brackets, ( {} ),  fail.  Maybe they can figure it out from that.

I told them about it, but they still are not able to figure out...

Share this post


Link to post
Share on other sites
40 minutes ago, radhavallabh said:

I told them about it, but they still are not able to figure out...

I'm sorry but I don't know the answer and don't have a way to look into it. Hopefully someone else can help.

Share this post


Link to post
Share on other sites
12 minutes ago, Jack_mcs said:

I'm sorry but I don't know the answer and don't have a way to look into it. Hopefully someone else can help.

Thank you...

I have a query with your FAQ BS addon Phoenix version is there a support thread to it?

As the admin FAQ manager does not display the form nor the list..

Kindly help please..

Regds./

radhavallabh

Share this post


Link to post
Share on other sites
33 minutes ago, radhavallabh said:

I have a query with your FAQ BS addon Phoenix version is there a support thread to it?

Oops, didn't notice I hadn't set the support thread option in apps. I've done that now and the support page is here. I'll upload the latest version shortly.

Share this post


Link to post
Share on other sites
1 minute ago, Jack_mcs said:

Oops, didn't notice I hadn't set the support thread option in apps. I've done that now and the support page is here. I'll upload the latest version shortly.

Thank you so much dear! Will await it eagerly...

Share this post


Link to post
Share on other sites
On 5/25/2020 at 3:09 PM, Jack_mcs said:

It's possible but I think it would needlessly slow the code down. Also, the link is not broken. It is just missing the name.

Could you please help me with the code so I could exclude shopping cart.php from my seo url addon.. the urlencode function from the previous suggestion from years ago is not working dear... Please kindly help me exclude it...

Thank you in advance ;

Regds./

radhavallabh

Share this post


Link to post
Share on other sites
5 hours ago, radhavallabh said:

Could you please help me with the code so I could exclude shopping cart.php from my seo url addon.

I'm sorry but I can't provide specific coding help like that in a support thread.

Share this post


Link to post
Share on other sites

just upgraded to Phoenix 1.0.7.5 and Ultimate SEO URLs now seems to be broken, old rewritten urls work, but none of the site now produce the nice friendly urls
is an update to this must have addon in the works?


Jim Bullen - President

The Cigar Hut Group of Companies

 

 

Installed add-ons: (that now need to be upgraded to OSC CE Phoenix)

PWA, MVS, Easy Populate, Dynamic Sitemap, Featured Products, MVS Order Editor, MVS Shipping Estimator, Google XML Sitemap, About Us, Ad Tracker, Address Enhancer, Also Purchased, Backorders, Category Descriptions, Dynamic Meta Tags, Contact Us Email Subjects, Country state Selector, Extra Address Line, Order Number in Email Subject, OSC Affiliate, Product Extra Fields, Review Approval System, Reviews in Product Display, Sold Out, Sold Out (but Displayed), Ultimate SEO URL's, Updated Spiders, Welcome Email Password, Pending Order Email, Who's Online Enhancement, CCGV, Easy Discounts, Customer Comments, Request a Review, Sales Report, plus many many more!

Share this post


Link to post
Share on other sites
Posted (edited)

@Jack_mcs

just noticed that html_output.php was updated in 1.0.7.4 so that overwrote the change made on initial install

the function to replace that was in
includes/functions/html_output.php


it is now located in
includes/functions/href_link.php

is is just a matter of modifying the The HTML href link wrapper function in that file?

Edited by cigarsforless

Jim Bullen - President

The Cigar Hut Group of Companies

 

 

Installed add-ons: (that now need to be upgraded to OSC CE Phoenix)

PWA, MVS, Easy Populate, Dynamic Sitemap, Featured Products, MVS Order Editor, MVS Shipping Estimator, Google XML Sitemap, About Us, Ad Tracker, Address Enhancer, Also Purchased, Backorders, Category Descriptions, Dynamic Meta Tags, Contact Us Email Subjects, Country state Selector, Extra Address Line, Order Number in Email Subject, OSC Affiliate, Product Extra Fields, Review Approval System, Reviews in Product Display, Sold Out, Sold Out (but Displayed), Ultimate SEO URL's, Updated Spiders, Welcome Email Password, Pending Order Email, Who's Online Enhancement, CCGV, Easy Discounts, Customer Comments, Request a Review, Sales Report, plus many many more!

Share this post


Link to post
Share on other sites

yep, just edited includes/functions/href_link.php with the changed function and all is good


Jim Bullen - President

The Cigar Hut Group of Companies

 

 

Installed add-ons: (that now need to be upgraded to OSC CE Phoenix)

PWA, MVS, Easy Populate, Dynamic Sitemap, Featured Products, MVS Order Editor, MVS Shipping Estimator, Google XML Sitemap, About Us, Ad Tracker, Address Enhancer, Also Purchased, Backorders, Category Descriptions, Dynamic Meta Tags, Contact Us Email Subjects, Country state Selector, Extra Address Line, Order Number in Email Subject, OSC Affiliate, Product Extra Fields, Review Approval System, Reviews in Product Display, Sold Out, Sold Out (but Displayed), Ultimate SEO URL's, Updated Spiders, Welcome Email Password, Pending Order Email, Who's Online Enhancement, CCGV, Easy Discounts, Customer Comments, Request a Review, Sales Report, plus many many more!

Share this post


Link to post
Share on other sites
Posted (edited)

I've just installed this - URLs look ok but I can't now login to the front end as a customer.  I'm using Phoenix 1.0.7.5 and followed the instructions. I noticed that tep_href_link had moved like said above - no problem there.

Before the update, I get this in my logs when I login (and I could login ok):

"POST /login.php?action=process HTTP/1.1" 302 -

After the update, I see this:

"POST /login.php/action/process HTTP/1.1" 200 17953

If I restore the original tep_href_link function, I can login ok of course. So something is changing the ? for /

Any ideas?

Edited by markg-uk

Share this post


Link to post
Share on other sites

@markg-ukTry leaving it installed but turn it off in admin. If that work, post you .htaccess file here.

Share this post


Link to post
Share on other sites

Thanks for the reply. I did actually already do that (plus I removed all the rewrites from .htaccess as a test) - neither made any difference.

If I comment out these lines in seo_class.php:

$link = str_replace('?', '/', $link);
$link = str_replace('&', '/', $link);
$link = str_replace('=', '/', $link);

then the URLs are ok. Why I'm seeing the issue I'm not sure. I can't think of a reason I'd need those three lines with the URL format I want so I think I'm ok

Share this post


Link to post
Share on other sites

old stock version of search engine safe urls set to true?
that should be off as it never worked and was ancient

to see if you have that as a holdover from previous versions of Phoenix open phpmyadmin and search for SEARCH_ENGINE_FRIENDLY_URLS  in the configuration table (in configuration_key)
that was removed from Phoenix in 1.0.5.3 but may still be there if you missed an update step
if it is there, set to false in configuration_value

this part of the code you commented out

43 minutes ago, markg-uk said:

If I comment out these lines in seo_class.php:

$link = str_replace('?', '/', $link);
$link = str_replace('&', '/', $link);
$link = str_replace('=', '/', $link);

is only activated when $search_engine_safe = true
and that is set by the above (now removed) configuration key SEARCH_ENGINE_FRIENDLY_URLS   set to true


Jim Bullen - President

The Cigar Hut Group of Companies

 

 

Installed add-ons: (that now need to be upgraded to OSC CE Phoenix)

PWA, MVS, Easy Populate, Dynamic Sitemap, Featured Products, MVS Order Editor, MVS Shipping Estimator, Google XML Sitemap, About Us, Ad Tracker, Address Enhancer, Also Purchased, Backorders, Category Descriptions, Dynamic Meta Tags, Contact Us Email Subjects, Country state Selector, Extra Address Line, Order Number in Email Subject, OSC Affiliate, Product Extra Fields, Review Approval System, Reviews in Product Display, Sold Out, Sold Out (but Displayed), Ultimate SEO URL's, Updated Spiders, Welcome Email Password, Pending Order Email, Who's Online Enhancement, CCGV, Easy Discounts, Customer Comments, Request a Review, Sales Report, plus many many more!

Share this post


Link to post
Share on other sites
 
 
0
 Advanced issue found
 
 
On 7/17/2020 at 4:21 PM, cigarsforless said:

is only activated when $search_engine_safe = true
and that is set by the above (now removed) configuration key SEARCH_ENGINE_FRIENDLY_URLS   set to true

Ok - you're right. I commented this out as I have errors on for debugging and as you say, its been removed so was throwing an error. I had assumed it was set to true but the old site had it set to false.

Anyway - thanks both.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×