Jump to content
Sign in to follow this  
enigma1

[Contribution] SEO-G

Recommended Posts

Hi Mark,

I've just added TinyMCE and have held back from letting products go live until I've jazzed them up with a lick of HTML.

I've got all the raw products in one holding category and the process is

1) move product to appropriate category;

2) edit product - applying HTML;

3) save and change from out of stock to in stock status.

When I run the shop and find the product in the catagory list (page 2), and click on the product, I am returned to page 1, not taken to the product description page. It doesn't like the path.

However, if I search for the product and click on that, all is well.

Do I need to refresh SEO-G to catch all the products added after this contribution was added ?

Thanks Mark,

Paul

If you're moving/adding products/categories/manufacturers you need to go through the SEO-G configuration again (remove/add products/categories/manufacturers and clear the reports). Because there is no automatic synchornization process at this point.

Edited by enigma1

Share this post


Link to post
Share on other sites
If you're moving/adding products/categories/manufacturers you need to go through the SEO-G configuration again (remove/add products/categories/manufacturers and clear the reports). Because there is no automatic synchornization process at this point.

In the reports section there is nothing to clear. The heading eludes to a 'delete' button, but there isn't a button or any list of any kind, so I'm unable to flush it.

?

Paul

Share this post


Link to post
Share on other sites
In the reports section there is nothing to clear. The heading eludes to a 'delete' button, but there isn't a button or any list of any kind, so I'm unable to flush it.

?

Paul

Use version 1.13 plus the fix mentioned - see post #217. It is included. There are 2 delete buttons, The regular delete where you select individual entries from the tick boxes in order to delete/edit and the "delete all". I will update the instructions in the reports page so the explanation for each button will be better.

Edited by enigma1

Share this post


Link to post
Share on other sites
I will update to the most recent and let you know if it resolves the checkout_success.php redirect issue.
After updating to v1.13 and trying both 443 options (one at a time) mentioned in readme.htm

 $request_type = ($_SERVER['SERVER_PORT'] == '443') ? 'SSL' : 'NONSSL'; 
//$request_type = (getenv('SERVER_PORT') == '443') ? 'SSL' : 'NONSSL';

I still get redirected to cookie_usage.php when I click "Continue" on checkout_success.html. Is there any way to check to see if the $request_type variable is correctly identified?

Share this post


Link to post
Share on other sites
After updating to v1.13 and trying both 443 options (one at a time) mentioned in readme.htm

 $request_type = ($_SERVER['SERVER_PORT'] == '443') ? 'SSL' : 'NONSSL'; 
//$request_type = (getenv('SERVER_PORT') == '443') ? 'SSL' : 'NONSSL';

I still get redirected to cookie_usage.php when I click "Continue" on checkout_success.html. Is there any way to check to see if the $request_type variable is correctly identified?

Make sure you also apply the fix shown in post #217.

 

can you post the catalog\includes\application_top.php you're using? At least I can try it here to see if there is anything wrong.

Share this post


Link to post
Share on other sites
Make sure you also apply the fix shown in post #217.

 

can you post the catalog\includes\application_top.php you're using? At least I can try it here to see if there is anything wrong.

post #217 was applied previously.

<?php
/*
 $Id: application_top.php,v 1.280 2003/07/12 09:38:07 hpdl Exp $

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

//-MS- SEO-G Added
 if( !isset($g_seo_flag) || $g_seo_flag !== true) {

// 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 if register_globals is enabled.
// since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
// >>> BEGIN REGISTER_GLOBALS
//  if (function_exists('ini_get')) {
//	ini_get('register_globals') or 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.');
//  }
// <<< END REGISTER_GLOBALS

// 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 2.2-MS2');

// set the type of request (secure or not)
//rem this and redefined below for specific web host variable/SEO-G  $request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';
 $request_type = ($_SERVER['SERVER_PORT'] == '443') ? 'SSL' : 'NONSSL'; 
//$request_type = (getenv('SERVER_PORT') == '443') ? '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']);
 }

//-MS- SEO URLs Support Added
require(DIR_WS_CLASSES . 'seo_url.php');
$g_seo_url = new seoURL;
//-MS- SEO URLs Support Added EOM

} 
//-MS- SEO-G Added EOM

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

// some code to solve compatibility issues
 require(DIR_WS_FUNCTIONS . 'compatibility.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;
 }

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

// 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'])) {
  if (!$currency = tep_currency_exists($HTTP_GET_VARS['currency'])) $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_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;
}
 }

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

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

Share this post


Link to post
Share on other sites
ok with v1.13 you also need the fix Scott posted earlier.

http://forums.oscommerce.com/index.php?s=&...t&p=1072394

 

In catalog\root.php just before this line:

 

	// Synchronize global arrays.
$HTTP_GET_VARS = $_GET = $tmp_array;

 

Add

$tmp_array = array_merge($HTTP_GET_VARS,$tmp_array);

 

So far I haven't seen any other errors.

 

Hello Mark,

 

I've installed v1.13 and added Scott's fix, but I'm still having some problems. For some reason, some of my seo links work, and some lead to the cookies error page. Any thoughts? If you'd like to take a look: www.geekfitters.com Thank you in advance.

 

-- Chris

Share this post


Link to post
Share on other sites
Hello Mark,

 

I've installed v1.13 and added Scott's fix, but I'm still having some problems. For some reason, some of my seo links work, and some lead to the cookies error page. Any thoughts? If you'd like to take a look: www.geekfitters.com Thank you in advance.

 

-- Chris

I see your store at the moment does not have categories. So goto your osc Admin->SEO-G->G-Types, then change the linkage column so the numbers are different:

 

For products set 1

For categories set 3

For manufacturers set 2

Then tick the boxes on the left hit the "update fields" button. Also one other thing did you delete the reports after doing the update to v1.13?

Edited by enigma1

Share this post


Link to post
Share on other sites
post #217 was applied previously.

That application_top.php is ok I tested it here, so something else is going on, I will have to debug it on your end.

Share this post


Link to post
Share on other sites
Hello Mark,

 

I've installed v1.13 and added Scott's fix, but I'm still having some problems. For some reason, some of my seo links work, and some lead to the cookies error page. Any thoughts? If you'd like to take a look: www.geekfitters.com Thank you in advance.

 

-- Chris

 

Chris, I saw something else so what I said earlier don't apply. If I go here

geekfitters.com/prison-shirt.html

 

then I get to the cookies page but if I go

http://geekfitters.com/inmate-of-the-year-shirt.html

I see it so seems that you have the same product with different names? You should check the reports page. Also are you hard-coding urls? Because in that page I see "Alternate Colors Available" with a hard-coded link. SEO-G won't work with hard-coded links. Links need to be passed through the tep_href_link function.

Share this post


Link to post
Share on other sites
Chris, I saw something else so what I said earlier don't apply. If I go here

geekfitters.com/prison-shirt.html

 

then I get to the cookies page but if I go

http://geekfitters.com/inmate-of-the-year-shirt.html

I see it so seems that you have the same product with different names? You should check the reports page. Also are you hard-coding urls? Because in that page I see "Alternate Colors Available" with a hard-coded link. SEO-G won't work with hard-coded links. Links need to be passed through the tep_href_link function.

 

Hey Mark,

 

I do actually have one category (tshirts). Also, I did delete the reports after the install. Those two shirts are not the same product: one is gray and the other is green. I've created two separate products, and used the G Controller to give each customized urls (different from their product names).

 

I believe that I have used hard-coded html links ( <a href = link). The links are in the products description. How should I write the links so that they don't interfere with Seo-G?

 

Thanks again!

 

Chris

Share this post


Link to post
Share on other sites
Hey Mark,

 

I do actually have one category (tshirts). Also, I did delete the reports after the install. Those two shirts are not the same product: one is gray and the other is green. I've created two separate products, and used the G Controller to give each customized urls (different from their product names).

 

I believe that I have used hard-coded html links ( <a href = link). The links are in the products description. How should I write the links so that they don't interfere with Seo-G?

 

Thanks again!

 

Chris

 

Ok can you confirm if you go to the SEO-G->G-Controller->Products->Details

you have these 2 names

prison-shirt

inmate-of-the-year-shirt

 

And that those 2 products are valid. If you're in doubt you can delete the products from there, then click the categories button, select all categories and re-build them

Share this post


Link to post
Share on other sites

Hello enigma1,

 

Thanks for this very nice n' nifty contribution! :thumbsup:

 

But! Here's what I'm experiencing:

 

I've uploaded all of your files - Ver.1.14, and changed my .htacess and this is what I'm experiencing:

 

1146 - Table 'mydatabase.seo_url' doesn't exist

 

select seo_url_get from seo_url where seo_url_org = 'http://www.xxxx.xxxxxx.com/index.php'

 

[TEP STOP]

 

And when I go to my admin area and click on the SEO-G>SEO-G Configuration there is absolutely nothing there.

 

Just Title Value Action

 

When I click on G-Types this comes up:

 

1146 - Table 'mydatabase.seo_types' doesn't exist

 

select at.* from seo_types at order by at.sort_order

 

[TEP STOP]

 

And similarly for the rest.

 

The good news is that in Configuration>My store -> Use Search-Engine Safe URLs (still in development) false

And in Sessions -> Prevent Spider Sessions True

 

are ok.

 

So.. what should I do? - I'm no php expert but my not-so spidey senses suggest doing something to the database. - Add something. - But I don't know :unsure:

 

Thanks a bunch

Share this post


Link to post
Share on other sites
Yes, I know, that's what I saw which indicates some sort of redirection when the rewriterule is executed with the script your host has. Because I checked the request_uri before the rule executed and was correct. Afterwards it changed. So again your host should have a answer about it. None of the server variables had the originally typed url in.

 

Hi Mark,

 

I created an account in my store for the first time and had a couple of problems with it. After entering all of the account data I clicked continue and everything stopped with the following message:

 

 

2006 - MySQL server has gone away

 

select seo_exclude_key from seo_exclude where seo_exclude_key = '8ab0d68227e00cf804a51a07132cc83d'

 

[TEP STOP]

 

2006 - MySQL server has gone away

 

select count(*) as total from sessions where sesskey = 'f9a56ac92b7cddd044bee71f562f0228'

 

[TEP STOP]

 

 

Warning: Unknown(): A session is active. You cannot change the session module's ini settings at this time. in Unknown on line 0

 

When I re-entered the account info and clicked continue the message was displayed that the email address was already in use, so I logged in and found that the account had been created. Then everytime I clicked a link in the "My Account" area I received the:

 

"This page contains both secure and nonsecure items" message and this appeared going forwards or backwards.

 

I then proceeded to purchase an item and go through the checkout process. At the end of that with the finish click, everything stopped again with the same "2006 - MySQL server has gone away" message. Again I checked "My Account"and the order was processed correctly, including sending the email confirmation.

 

I have made no SEO-G changes since you modified the files las time.

 

Thanks,

Clovis

Share this post


Link to post
Share on other sites

In the G-Controller section, how can I insert the products using the product's model (products_model) instead of product's name (products_name) as default?

Share this post


Link to post
Share on other sites
In the G-Controller section, how can I insert the products using the product's model (products_model) instead of product's name (products_name) as default?

 

To use the model instead of the products_name open the catalog\admin\includes\classes\seo_products.php

 

find and replace all instances of

products_name

 

with

products_model

Share this post


Link to post
Share on other sites
I created an account in my store for the first time and had a couple of problems with it. After entering all of the account data I clicked continue and everything stopped with the following message:

 

 

2006 - MySQL server has gone away

This looks like connection problem, have you checked with your host?

Share this post


Link to post
Share on other sites

v1.14 is available with the following changes:

 

- Update for global GET arrays to include all arguments.

- Added error level for invalid parameters handled.

- Added Strict Mode when enabled parameters passed must contain 2 arguments.

- Updated Google XML sitemap, added option to notify google and store the generated file on the server.

- Added validation option for SEO names for each class (categories, products etc) with the SEO-G controller. Validate button is available next to Details.

- Fix for seo names list to show all name entries stored in the SEO-G tables.

 

This version should also fix the problem reported earlier, that some links were not translated properly with SEO-G ending up with a 301 redirect. Use the validator to validate the entries for products, categories, manufacturers etc.

Share this post


Link to post
Share on other sites
To use the model instead of the products_name open the catalog\admin\includes\classes\seo_products.php

 

find and replace all instances of

products_name

 

with

products_model

 

Thanks for the reply. I have tried replacing products_name with products_model, but it did not work because products_model is in the table Products instead of Products_Description. Just replacing the table Products_Description to Products cause problem too. Is it possible to make it so in the G-Controller section, we can insert the products using the product's model (products_model) or product's name (products_name) as default? If it is too much trouble, can you tell me how I should write the Query so I can use both products_model and products_name from both the Products and Products_Description tables.

 

TIA.

Share this post


Link to post
Share on other sites
Thanks for the reply. I have tried replacing products_name with products_model, but it did not work because products_model is in the table Products instead of Products_Description. Just replacing the table Products_Description to Products cause problem too. Is it possible to make it so in the G-Controller section, we can insert the products using the product's model (products_model) or product's name (products_name) as default? If it is too much trouble, can you tell me how I should write the Query so I can use both products_model and products_name from both the Products and Products_Description tables.

 

TIA.

 

Ok put the original seo_products.php back then just change the query in the generate_name function only.

 

So to bring up models instead of product names change the function:

 

from

	function generate_name($products_id) {
  global $languages_id;

  $name = '';
  $name_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_id . "' and language_id = '" . (int)$languages_id . "'");
  if( $names_array = tep_db_fetch_array($name_query) ) {
	$name = $names_array['products_name'];
	$name =  $this->create_safe_string($name);
  }
  return $name;
}

 

to

	function generate_name($products_id) {
  global $languages_id;

  $name = '';
  $name_query = tep_db_query("select products_model from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
  if( $names_array = tep_db_fetch_array($name_query) ) {
	$name = $names_array['products_model'];
	$name =  $this->create_safe_string($name);
  }
  return $name;
}

 

Don't change the validation queries. Just the above change should be enough.

Share this post


Link to post
Share on other sites
I am getting 404 errors on all pages but the storefront. I think this is either an issue with the root.php or my htaccess file. I have posted both below as after many hours of staring I just can't find the issue. Any advice, help etc would be appreciated:

Can you post a link to a 404 page? Also mod_rewrite/apache must be supported from your host's server for this to work.

Share this post


Link to post
Share on other sites
Can you post a link to a 404 page? Also mod_rewrite/apache must be supported from your host's server for this to work.

 

this is on an internal network for now. - it is just a standard apache 404 page nothing really valuable in it, but I have pasted a screenshot

 

404.gif

 

I believe mod_rewrite is working ok - it is loading in apache fine

 

all of the seo-g parts in admin are working fine the reports show all of the urls that are generated

 

it is just if i go to one of those urls then i get a 404

 

thanks again for your help

Share this post


Link to post
Share on other sites
this is on an internal network for now. - it is just a standard apache 404 page nothing really valuable in it, but I have pasted a screenshot

 

Ok I see. So why your .htaccess is setup like this?

 

Should be

Options +FollowSymLinks
RewriteEngine On
# Next line must be changed to match your osCommerce folder - the relative path 
RewriteBase /
RewriteRule ^(.*).html$ root.php?$1.html&%{QUERY_STRING}

 

Because with your htaccess, you have this line that messes everything

RewriteRule ^(.*)$ $1 [L]

 

why is that? The documentation shows alternative rules to apply for your admin and catalog folders. Make sure you set up the correct .htaccess for each case.

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
Sign in to follow this  

×