Jump to content
Sign in to follow this  
enigma1

[Contribution] SEO-G

Recommended Posts

ok that seems fine, Can you post your catalog\includes\application_top.php

 

<?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 © 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.

if (function_exists('ini_get')) {

ini_get('register_globals') or exit('FATAL ERROR: register_globals is disabled in php.ini, please enable it!');

}

 

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

$request_type = (stristr(getenv('HTTP_X_FORWARDED_HOST'), ".sslpowered.com")) ? '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

this is also ok. Post your catalog\root.php I will try it here to see if I can replicate the problem with your file, otherwise I would have to debug this on your end.

Edited by enigma1

Share this post


Link to post
Share on other sites
this is also ok. Post your catalog\root.php I will try it here to see if I can replicate the problem with your file, otherwise I would have to debug this on your end.

 

<?php

/*

//----------------------------------------------------------------------------

// Copyright © 2006-2007 Asymmetric Software - Innovation & Excellence

// Author: Mark Samios

// http://www.asymmetrics.com

// SEO-G Root page

// Main handler script

// Includes part of the includes/application_top.php from osCommerce to

// initialize the database.

//----------------------------------------------------------------------------

// Script is intended to be used with:

// osCommerce, Open Source E-Commerce Solutions

// http://www.oscommerce.com

// Copyright © 2003 osCommerce

//----------------------------------------------------------------------------

// Released under the GNU General Public License

//----------------------------------------------------------------------------

// MAKE SURE THE FOLLOWING SECTION IS COPIED DIRECTLY FROM YOUR OWN

// catalog\includes\application_top.php

// See documentation for details.

//----------------------------------------------------------------------------

*/

//----------------------------------------------------------------------------

//-MS- Beginning of application_top.php section

//----------------------------------------------------------------------------

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

$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);

$g_relpath = HTTP_SERVER . DIR_WS_CATALOG;

$g_server = HTTP_SERVER;

} else {

define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG);

$g_relpath = HTTPS_SERVER . DIR_WS_CATALOG;

$g_server = HTTPS_SERVER;

}

 

// 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- End of application_top.php section

//----------------------------------------------------------------------------

 

//----------------------------------------------------------------------------

// SEO-G Section starts here. This part is required for proper operation

// Do not override the code below

//----------------------------------------------------------------------------

require(DIR_WS_CLASSES . 'seo_url.php');

 

$g_seo_url = new seoURL;

$osc_url = $osc_params = $osc_parse = '';

 

if( $g_seo_url->get_osc_url($g_server . $_SERVER['REQUEST_URI'], $osc_url, $osc_params, $osc_parse) ) {

 

$PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'] = $_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'] = $osc_parse['path'];

if(basename($_SERVER['PHP_SELF']) == 'root.php' ) {

exit();

}

for($i=0, $j=count($osc_params); $i<$j; $i++ ) {

$array_equal = explode('=', $osc_params[$i]);

if( is_array($array_equal) ) {

if( isset($array_equal[1]) ) {

$HTTP_GET_VARS[$array_equal[0]] = $array_equal[1];

$_GET[$array_equal[0]] = $array_equal[1];

} else {

$HTTP_GET_VARS[$array_equal[0]] = '';

$_GET[$array_equal[0]] = '';

}

}

}

$g_script = basename($PHP_SELF);

$g_seo_flag = true;

require(basename($PHP_SELF));

} elseif( file_exists(basename($osc_parse['path']))) {

$PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'] = $_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'] = $osc_parse['path'];

if(basename($_SERVER['PHP_SELF']) == 'root.php' ) {

exit();

}

$g_script = basename($PHP_SELF);

$g_seo_flag = true;

require(basename($osc_parse['path']));

} else {

// Script not found. Initiate redirection

header("HTTP/1.1 " . SEO_DEFAULT_ERROR_HEADER);

header('Location: ' . $g_relpath . SEO_DEFAULT_ERROR_REDIRECT);

}

exit();

?>

Share this post


Link to post
Share on other sites

I see you're using the default root.php There is a note in the document and in that file:

 

// MAKE SURE THE FOLLOWING SECTION IS COPIED DIRECTLY FROM YOUR OWN

// catalog\includes\application_top.php

// See documentation for details.

 

Can you make sure the portion is directly copied from your own application_top.php? Afterwards in the root.php change this code:

 

  if ($request_type == 'NONSSL') {
define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG);
 } else {
define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG);
 }

 

to this:

  if ($request_type == 'NONSSL') {
define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG);
$g_relpath = HTTP_SERVER . DIR_WS_CATALOG;
$g_server = HTTP_SERVER;
 } else {
define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG);
$g_relpath = HTTPS_SERVER . DIR_WS_CATALOG;
$g_server = HTTPS_SERVER;
 }

 

I will update the documentation about it with the next version to clarify it. So far I tried that file here and the part of the application_top.php but I do not see anything wrong.

Share this post


Link to post
Share on other sites

Release v1.10 is available with the following changes:

 

- Added Google XML Sitemap

- Added editing, delete, individual selection functionality with the reports page.

- Added Priority, Frequency for the Google sitemap.

- Updated string files on the admin end.

Share this post


Link to post
Share on other sites

When I browse by manufacturer I get "site.com/index.html?manufacturers_id=24" When I click on any of the products listed, I get the correct SEO-G URL, "site.com/manufacturer/product.html" Where should I start looking to resolve this?

 

Thanks

Share this post


Link to post
Share on other sites

1146 - Table 'nh491400db.TABLE_SEO_FREQUENCY' doesn't exist

select count(seo_url_key) as total from seo_url su left join TABLE_SEO_FREQUENCY sf on (sf.seo_frequency_id=su.seo_frequency_id)

 

i update to ver. 0.10 budt in G-reports have i this error

Share this post


Link to post
Share on other sites
1146 - Table 'nh491400db.TABLE_SEO_FREQUENCY' doesn't exist

select count(seo_url_key) as total from seo_url su left join TABLE_SEO_FREQUENCY sf on (sf.seo_frequency_id=su.seo_frequency_id)

 

i update to ver. 0.10 budt in G-reports have i this error

 

Make sure you did item-2 of the documentation.

Share this post


Link to post
Share on other sites

thnx, the \seo_g_1_2_3_4_5_6_7\SEO-G\catalog\admin\includes\database_tables.php - is not updated for clean install

Share this post


Link to post
Share on other sites

thnx, the \seo_g_1_2_3_4_5_6_7\SEO-G\catalog\admin\includes\database_tables.php - is not updated for clean install

Share this post


Link to post
Share on other sites
thnx, the \seo_g_1_2_3_4_5_6_7\SEO-G\catalog\admin\includes\database_tables.php - is not updated for clean install

sorry, I did not update the stock files (filenames.php and database_tables.php) with v1.10. The manual instructions are correct however for this. I will make sure they get in with the next version.

 

So make sure you did items 1,2 from the documentation.

Edited by enigma1

Share this post


Link to post
Share on other sites
When I browse by manufacturer I get "site.com/index.html?manufacturers_id=24" When I click on any of the products listed, I get the correct SEO-G URL, "site.com/manufacturer/product.html" Where should I start looking to resolve this?

 

Thanks

 

This is mentioned in the documentation:

 

- Some of the osC stock drop-down lists (ex: manufacturers) do not use the tep_href_link function so the manufacturer id is not translated with the url but is appended separately. As mentioned earlier it is essential for links to be filtered via the tep_href_link function for SEO-G to be effective.

the responsible code is in catalog\includes\boxes\manufacturers.php

	  while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {
	$manufacturers_name = ((strlen($manufacturers['manufacturers_name']) > MAX_DISPLAY_MANUFACTURER_NAME_LEN) ? substr($manufacturers['manufacturers_name'], 0, MAX_DISPLAY_MANUFACTURER_NAME_LEN) . '..' : $manufacturers['manufacturers_name']);
	$manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'],
								   'text' => $manufacturers_name);
  }

  $info_box_contents = array();
  $info_box_contents[] = array('form' => tep_draw_form('manufacturers', tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false), 'get'),
							   'text' => tep_draw_pull_down_menu('manufacturers_id', $manufacturers_array, (isset($HTTP_GET_VARS['manufacturers_id']) ? $HTTP_GET_VARS['manufacturers_id'] : ''), 'onChange="this.form.submit();" size="' . MAX_MANUFACTURERS_LIST . '" style="width: 100%"') . tep_hide_session_id());

As you see there is no tep_href_link function with the manufacturers_id appended.

tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false)

and that only includes the index.php

Share this post


Link to post
Share on other sites

Did a quick test....a very impressive solution...

 

A small question though...

 

Seo-g creates duplicate urls for products, urls with category when linked from sub-category level and without category when linked from everywhere else.

 

Example:

 

product_swat-3-close-quarters-battle.html

 

and

 

category_software_simulation_product_swat-3-close-quarters-battle.html

 

Maybe i have missed a setting?

 

If not it would be benificial to have an admin setting where you could choose the one or the other format and then the chosen format being enforced through the whole store.

Share this post


Link to post
Share on other sites

Just added this contribution and it works great except one thing... If I use the provided changes to file split_page_result.php the admin site's orders.php gives following error: 1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '*) as total from orders o left join orders_total ot on (o.orde

 

select count(distinct *) as total from orders o left join orders_total ot on (o.orders_id = ot.orders_id), stores st, orders_status s where o.orders_status = s.orders_status_id and s.language_id = '6' and ot.class = 'ot_total' and o.orders_stores_id = st.stores_id

 

[TEP STOP]

 

Without the changes to split_page_result.php everything works fine except the osCId is at first on the links on store root. Any ideas how to fix this?

Share this post


Link to post
Share on other sites

because the same is created with the stoc osc, so no you haven't missed anything.

http://demo.oscommerce.com/product_info.php?products_id=8 (from the new products)

http://demo.oscommerce.com/product_info.ph...p;products_id=8 (from the categories)

 

There are workarounds, none of them is easy however.

 

1. You modify the catalog\includes\classes\seo_url.php to do an extra pass for the parameters in order to detect combinations of products_id and cPath (and if you have other contributions like articles the articles_id and tPath). Then if you do not find a match you generate the cPath. Which can cause problems because it affects other scripts like the product_reviews, product_reviews_write etc all of them pass the products_id with the url. And that may cause side effects I cannot predict. Because you probably don't want to append the categories names with the product reviews for example. When safe mode is false this can have other side effects with the products_id processed by get forms as those are translated by seo-g and again there you gona have the categories name appended. Keep in mind the cPath needs to be added to the osC url before returning to have consistency with the links.

 

2. You modify the pages those now do not pass the cPath to the tep_href_link, to include the cPath parameter. This may seem easier initially but it gets complicated due to various modules and pages that include products. (many files to change in other words and if you have other contributions installed it becomes very complicated).

 

Then there is another problem with linked products to multiple categories. In which case none of the above works because it will pull one of the cpaths to generate the seo url. And you may want to expose the product with a different category.

Share this post


Link to post
Share on other sites
Just added this contribution and it works great except one thing... If I use the provided changes to file split_page_result.php the admin site's orders.php gives following error: 1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '*) as total from orders o left join orders_total ot on (o.orde

 

select count(distinct *) as total from orders o left join orders_total ot on (o.orders_id = ot.orders_id), stores st, orders_status s where o.orders_status = s.orders_status_id and s.language_id = '6' and ot.class = 'ot_total' and o.orders_stores_id = st.stores_id

 

[TEP STOP]

 

Without the changes to split_page_result.php everything works fine except the osCId is at first on the links on store root. Any ideas how to fix this?

 

I don't know what contribution you're using but that contribution should have done what I did with the split page results already (otherwise they cannot reliably use the distinct with the split class). When you use these prefixes for temporary tables you need to specify where the distinct applies to.

 

Find where the distinct with the sql query is, in the orders.php Then when the page split is done pass an extra parameter at the end to specify the prefix. Like:

	$orders_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_query_raw, $orders_query_numrows, 'o.orders_id');

Share this post


Link to post
Share on other sites
I don't know what contribution you're using but that contribution should have done what I did with the split page results already (otherwise they cannot reliably use the distinct with the split class). When you use these prefixes for temporary tables you need to specify where the distinct applies to.

 

Find where the distinct with the sql query is, in the orders.php Then when the page split is done pass an extra parameter at the end to specify the prefix. Like:

	$orders_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_query_raw, $orders_query_numrows, 'o.orders_id');

 

 

I was using the SEO-G v. 1.10 and adding the extra parameter helped here. And somehow I feel a bit stupid right about now. ;) :D

Share this post


Link to post
Share on other sites
I was using the SEO-G v. 1.10 and adding the extra parameter helped here. And somehow I feel a bit stupid right about now. ;) :D

 

There was another post about it so I am afraid this may cause the same issue with other contributions. So instead of dealing with each case I have updated the SEO-G (I will post it shortly) to use a separate class for the split pages. This way I won't have to deal with such problems in this thread.

Share this post


Link to post
Share on other sites

SEO-G v1.11 is posted.

 

Modifications:

- Removed default split page class mods and instructions as it was causing problems with other contributions. The included splt_page_results.php with the archive is now the original osC file. (This file will be removed from future versions).

- Added separate split page class to service the SEO-G requirements.

- Added the sample files filenames.php, database_tables.php

- Added back delete-all function in addition to the regular delete for the reports page.

Share this post


Link to post
Share on other sites
When I browse by manufacturer I get "site.com/index.html?manufacturers_id=24" When I click on any of the products listed, I get the correct SEO-G URL, "site.com/manufacturer/product.html" Where should I start looking to resolve this?

 

Thanks

This is mentioned in the documentation:

- Some of the osC stock drop-down lists (ex: manufacturers) do not use the tep_href_link function so the manufacturer id is not translated with the url but is appended separately. As mentioned earlier it is essential for links to be filtered via the tep_href_link function for SEO-G to be effective.

 

the responsible code is in catalog\includes\boxes\manufacturers.php

	  while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {
	$manufacturers_name = ((strlen($manufacturers['manufacturers_name']) > MAX_DISPLAY_MANUFACTURER_NAME_LEN) ? substr($manufacturers['manufacturers_name'], 0, MAX_DISPLAY_MANUFACTURER_NAME_LEN) . '..' : $manufacturers['manufacturers_name']);
	$manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'],
								   'text' => $manufacturers_name);
  }

  $info_box_contents = array();
  $info_box_contents[] = array('form' => tep_draw_form('manufacturers', tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false), 'get'),
							   'text' => tep_draw_pull_down_menu('manufacturers_id', $manufacturers_array, (isset($HTTP_GET_VARS['manufacturers_id']) ? $HTTP_GET_VARS['manufacturers_id'] : ''), 'onChange="this.form.submit();" size="' . MAX_MANUFACTURERS_LIST . '" style="width: 100%"') . tep_hide_session_id());

As you see there is no tep_href_link function with the manufacturers_id appended.

tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false)

and that only includes the index.php

Please excuse my ignorance but I have went over all the documentation again since reading your reply and I am still confused about what to do. Should I leave it as is or can I rewrite catalog\includes\boxes\manufacturers.php so it utilizes the tep_href_link function to resolve this issue?

Share this post


Link to post
Share on other sites
Please excuse my ignorance but I have went over all the documentation again since reading your reply and I am still confused about what to do. Should I leave it as is or can I rewrite catalog\includes\boxes\manufacturers.php so it utilizes the tep_href_link function to resolve this issue?

How many manufacturers do you have? Go to your osc admin->configuration->Maximum values->Manufacturers List. Set it to a number to cover the max number of manufacturers used. (ex: 50). This will get rid of the drop-down list as long as the number of manufacturers in your store is less than 50.

Share this post


Link to post
Share on other sites
How many manufacturers do you have? Go to your osc admin->configuration->Maximum values->Manufacturers List. Set it to a number to cover the max number of manufacturers used. (ex: 50). This will get rid of the drop-down list as long as the number of manufacturers in your store is less than 50.
Thanks for the suggestion but unfortunately there are currently around 120 manufacturers so showing all of them would eat up to much real estate. If there is no work-around for this I'm not going to lose any sleep over it, I was just checking to see what my options are.

Share this post


Link to post
Share on other sites
Thanks for the suggestion but unfortunately there are currently around 120 manufacturers so showing all of them would eat up to much real estate. If there is no work-around for this I'm not going to lose any sleep over it, I was just checking to see what my options are.

well the drop-down list won't be processed by spiders in any case because it's via a form. And the spider is not going to make combinations of the options. The disadvantage is that spiders won't see the manufacturers with the drop-down list so you could use one of the contributions like the all manufacturers page to complement that.

http://www.oscommerce.com/community/contributions,1685

Edited by enigma1

Share this post


Link to post
Share on other sites
well the drop-down list won't be processed by spiders in any case because it's via a form. And the spider is not going to make combinations of the options. The disadvantage is that spiders won't see the manufacturers with the drop-down list so you could use one of the contributions like the all manufacturers page to complement that.

http://www.oscommerce.com/community/contributions,1685

The CSS Manufacturers Box contribution uses the tep_href_link function. Do you think it will solve the issues discussed (spiders and URL's)

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  

×