Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

ULTIMATE Seo Urls 5 - by FWR Media


Recommended Posts

I'm confused that you say this works if usu5 is off, there is no seo url in the image code at all so I can't see how it could be related to this contribution.

 

What I did find was ..

 

my lightbox code has

target="_blank" rel="lightbox" yours has just rel="lightbox"

mine has full uri to image yours has a relative path images/HQM-116_1_5.jpg

 

You have two lots of <noscript>

 

<noscript>

<a href="http://www.xxxxx.com/images/HQM-116_1_5.jpg" target="_blank"><img src="images/HQM-116_1_5.jpg" border="0" alt="Speaker naar 2x speaker 2x2.5mm KABEL - 1.5 meter" title=" Speaker naar 2x speaker 2x2.5mm KABEL - 1.5 meter " width="116" height="116"></a>

</noscript>

<noscript>

<a class="enlarge" href="http://www.xxxxx.com/images/HQM-116_1_5.jpg" target="_blank">Grotere afbeelding <br>(opent in nieuw venster)</a>

</noscript>

 

I'd suggest you go back through the code.

Link to comment
Share on other sites

www. mydomain. com/index.php?manufacturers_id=

 

is not a valid link there is no manufacturers_id

 

if there was a manufacturers_id it would be converted and 301 redirected to an seo url.

 

 

So why does this link come up? I really dont know how to solve this.. or where to search for a solution..

Link to comment
Share on other sites

So why does this link come up? I really dont know how to solve this.. or where to search for a solution..

 

Look through your site, there must somewhere be a broken link .. perhaps a hardcoded link where manufacturers_id is not being appended.

 

The only place to my knowledge where osC uses manufacturers_id is where you have selected from the manufacturers drop down and the buy now buttons use the id. Either way it is local code based and not a fault with the contribution.

Link to comment
Share on other sites

Well i've never seen that MySQL error before .. very odd .. you have some seo urls entries already in the database configuration table try running the usu2_removal.php script.

 

Thank you for answering so fast . Your will for helping people is great , mate ! I have solved the problem myself by modify the online files of my site : the error i posted here was given on a xampp instalation in my computer . Last night i uploaded o copy of my site on my server space of my hosting provider . I installed oscommerce files , i modified them and all went just fine , including the database installation . I guess that error was because of my xampp configuration or some error in my mysql . If i want to use the " rewrite " mode of the contribution what should i write in my .htacces file ?

Link to comment
Share on other sites

If i want to use the " rewrite " mode of the contribution what should i write in my .htacces file ?

 

There is a file called htaccess.txt in the package containing the code to put in .htaccess, be sure to read the instructions for RewriteBase properly.

Link to comment
Share on other sites

Hi all,

 

Hope somebody can help.

 

I have osc2.2RC2a with the latest STS. I installed the ULTIMATE Seo Urls 5 but after that my STS product_info.php.html is not displayed correct.

Also my Lightbox for displaying images, in the product_info.php.html page is not working any more?

 

It looks like the extra style sheets I made are not loaded.

I treid to ad all Css in the original Stylesheet but it did not work.

 

Is there any body that knows how to solve this?

 

Thanks in advance!

 

Denli

Link to comment
Share on other sites

Hi all,

 

Hope somebody can help.

 

I have osc2.2RC2a with the latest STS. I installed the ULTIMATE Seo Urls 5 but after that my STS product_info.php.html is not displayed correct.

Also my Lightbox for displaying images, in the product_info.php.html page is not working any more?

 

It looks like the extra style sheets I made are not loaded.

I treid to ad all Css in the original Stylesheet but it did not work.

 

Is there any body that knows how to solve this?

 

Thanks in advance!

 

Denli

 

Well I can't imagine how a url producing contribution could possibly affect a template system or image generation.

 

What happens if you turn USU5 off in admin.

Link to comment
Share on other sites

First of all, thank you for this contribution. It is the tirst one, that works :) I have one trouble with special characters as we use them in Czech alphabet (éíáýžřčšě -> it appears like this: Å¡ÄÅžýáíéÄÅ¡ÃÃÃÃŽÅÄÅ Ä-p-28) :angry: . I would need to remove them from the url. I mean replace them with "normal" letters. Can anyone give me way, how to deal with it? Thanx in advance.

Link to comment
Share on other sites

First of all, thank you for this contribution. It is the tirst one, that works :) I have one trouble with special characters as we use them in Czech alphabet (éíáýžřčšě -> it appears like this: Å¡ÄÅžýáíéÄÅ¡ÃÃÃÃŽÅÄÅ Ä-p-28) :angry: . I would need to remove them from the url. I mean replace them with "normal" letters. Can anyone give me way, how to deal with it? Thanx in advance.

 

Have you read the instructions? (excuse me if it happens to be a language issue)

 

There are two methods:

  • Character conversion file
  • Add special character replacements via admin

 

Recommended (create a character conversion file):

 

In the package you downloaded look in extras/character_conversion_pack

 

Open a few of these files and have a look .. they convert special language characters like ..

'SPECIAL_CHARACTER' => 'LATIN_REPLACEMENT'

 

Create one of these files and name it EXACTLY the same as your file in catalog/includes/languages/

 

e.g. it might be called czech.php

 

***IMPORTANT*** Save the file in the correct charset .. e.g. ISO-8859-1

 

Then move it to the directory on your server catalog/includes/modules/ultimate_seo_urls5/includes/character_conversion/

 

Alternative:

 

In admin configuration>Seo Urls 5

 

choose "Enter special character conversions"

 

Put in here a comma seperated list like SPECIAL_CHARACTER=>LATIN_REPLACEMENT,SPECIAL_CHARACTER2=>LATIN_REPLACEMENT2

 

Hope that helps

Edited by FWR Media
Link to comment
Share on other sites

Hello Robert,

 

I've been doing more testing on my site with the contribution with traditional rewrite on (with the isapi rewrite). What I found out on my site is that if I change "add Cpath to product urls" to false, that I can't use the button add to cart on the product page anymore. The button add to cart in the product listing however is still working. Also when it's on false, and I'm in the product info of a product, I can't change the language anymore if I click the language flags. When it's on, everything is working again.

 

I've tested it in Internet explorer 7, Firefox 3.011 & Safari 4.01, all gave the same results. So I don't know why this is, maybe due to the Windows server, or maybe I have some things not right on my site, but I thought I would let you know.

 

 

 

I also installed the Google XML sitemap. It's working fine with your two files that I found in the contrib, except for one thing. The google XML sitemap (this version) also produces a sitemap called sitemappages.xml. And that one stays empty with your files. Is that due to the 2 replaced files? Because on my other site, where I still have the Header Tags SEO, the file is filled.

 

Claudia

Edited by Clau123
Link to comment
Share on other sites

Hello Robert,

 

I've been doing more testing on my site with the contribution with traditional rewrite on (with the isapi rewrite). What I found out on my site is that if I change "add Cpath to product urls" to false, that I can't use the button add to cart on the product page anymore. The button add to cart in the product listing however is still working. Also when it's on false, and I'm in the product info of a product, I can't change the language anymore if I click the language flags. When it's on, everything is working again.

 

I've tested it in Internet explorer 7, Firefox 3.011 & Safari 4.01, all gave the same results. So I don't know why this is, maybe due to the Windows server, or maybe I have some things not right on my site, but I thought I would let you know.

 

 

 

I also installed the Google XML sitemap. It's working fine with your two files that I found in the contrib, except for one thing. The google XML sitemap (this version) also produces a sitemap called sitemappages.xml. And that one stays empty with your files. Is that due to the 2 replaced files? Because on my other site, where I still have the Header Tags SEO, the file is filled.

 

Claudia

 

Hi Claudia

 

Thanks for testing, although I can't really comment as there is no specific detail.

if I change "add Cpath to product urls" to false, that I can't use the button add to cart on the product page anymore

 

What is the uri shown in the button code when you view source?

 

I can't change the language anymore if I click the language flags.

 

What is the uri you see when you hover the language button?

produces a sitemap called sitemappages.xml. And that one stays empty with your files.

 

Yes it would be, the version I created was made on 10th before that version was uploaded. I can't keep updating other peoples contributions where the authors have hardcoded it. Perhaps someone could mention to the author in question that he should release the next version WITHOUT the hardcoding especially as the work has been done for him.

 

Having said that to use the new version open up the two USU5 files and the ones from the download and do the following to the usu5 files: -

 

index.php ..

 

Add the following in the appropriate position (about line 185)

 

if (GOOGLE_XML_SITEMAP_CREATE_PAGES == 'true') {
 if ($google->GeneratePagesSitemap()){
  echo 'Generated Google Pages Sitemap Successfully' . "\n\n";
 } else {
  $submit = false;
  echo 'ERROR: Google Pages Sitemap Generation FAILED!' . "\n\n";
 }
}

 

sitemap.class.php (about line 622)

 

Add the complete function..

 

function GeneratePagesSitemap()

Edited by FWR Media
Link to comment
Share on other sites

Actually no .. there are more changes in the file that are hardcoded

 

The index.php code is as I mentioned above but the class file has changed a bit and most uses the hardcoded db access.

 

The sitemap.class.php should be ..

 

<?php
/**
* Google XML Sitemap Feed
*
* The Google sitemap service was announced on 2 June 2005 and represents
* a huge development in terms of crawler technology.  This contribution is
* designed to create the sitemap XML feed per the specification delineated 
* by Google. 
* @package Google-XML-Sitemap-Feed
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version 1.0
* @link http://www.oscommerce-freelancers.com/ osCommerce-Freelancers
* @link http://www.google.com/webmasters/sitemaps/docs/en/about.html About Google Sitemap 
* @copyright Copyright 2005, Bobby Easland 
* @author Bobby Easland 
* @filesource
*/

/**
* MySQL_Database Class
*
* The MySQL_Database class provides abstraction so the databaes can be accessed
* without having to use tep API functions. This class has minimal error handling
* so make sure your code is tight!
* @package Google-XML-Sitemap-Feed
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version 1.1
* @link http://www.oscommerce-freelancers.com/ osCommerce-Freelancers
* @copyright Copyright 2005, Bobby Easland 
* @author Bobby Easland 
*/

/**
* Google Sitemap Base Class
*
* The MySQL_Database class provides abstraction so the databaes can be accessed
* @package Google-XML-Sitemap-Feed
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version 1.2
* @link http://www.oscommerce-freelancers.com/ osCommerce-Freelancers
* @link http://www.google.com/webmasters/sitemaps/docs/en/about.html About Google Sitemap
* @copyright Copyright 2005, Bobby Easland 
* @author Bobby Easland 
*/
class GoogleSitemap{
/**
	* $filename is the base name of the feeds (i.e. - 'sitemap')
* @var string
	*/
var $filename;
/**
	* $savepath is the path where the feeds will be saved - store root
* @var string
	*/
var $savepath;
/**
	* $base_url is the URL for the catalog
* @var string
	*/
var $base_url;
/**
	* $debug holds all the debug data
* @var array
	*/
var $debug;


/**
* GoogleSitemap class constructor 
* @author Bobby Easland 
* @version 1.0
* @param string $host Database host setting (i.e. - localhost)
* @param string $user Database user
* @param string $db Database name
* @param string $pass Database password
*/	
function GoogleSitemap(){
	$this->filename = "sitemap";
	$this->savepath = DIR_FS_CATALOG;
	$this->base_url = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
	$this->debug = array();

$this->excludeList = array(0 => 'account.php',
						   1 => 'account_edit.php',
						   2 => 'account_history.php',
						   3 => 'account_history_info.php',
						   4 => 'account_newsletters.php',
						   5 => 'account_notifications.php',
						   6 => 'account_password.php',
						   7 => 'address_book.php',
						   8 => 'address_book_process.php',
						   9 => 'checkout_confirmation.php',
						   10 => 'checkout_payment.php',
						   11 => 'checkout_payment_address.php',
						   12 => 'checkout_process.php',
						   13 => 'checkout_shipping.php',
						   14 => 'checkout_shipping_address.php',
						   15 => 'checkout_success.php',
						   16 => 'cookie_usage.php',
						   17 => 'create_account.php',
						   18 => 'create_account_success.php',
						   19 => 'down_for_maintenance.php',
						   20 => 'download.php',							   
						   21 => 'info_shopping_cart.php',
						   22 => 'links_submit_success.php',
						   23 => 'login.php',
						   24 => 'logoff.php',
						   25 => 'password_forgotten.php',
						   26 => 'shopping_cart.php',
						   27 => 'ssl_check.php'
						   );

// Add the pages listed in the database						   
$adminExclude = explode(",",GOOGLE_XML_SITEMAP_EXCLUDE_PAGES);
$newFiles = array();
for ($i = 0; $i < count($adminExclude); ++$i)
  $newFiles[] = trim($adminExclude[$i]);
$this->excludeList = array_merge($this->excludeList, $newFiles);
} # end class constructor

/**
* Function to save the sitemap data to file as either XML or XML.GZ format
* @author Bobby Easland 
* @version 1.1
* @param string $data XML data
* @param string $type Feed type (index, products, categories)
* @return boolean
*/	
function SaveFile($data, $type){
	$filename = $this->savepath . $this->filename . $type;			
	$compress = defined('GOOGLE_SITEMAP_COMPRESS') ? GOOGLE_SITEMAP_COMPRESS : 'false';
	if ($type == 'index') $compress = 'false';
	switch($compress){
		case 'true':
			$filename .= '.xml.gz';
			if ($gz = gzopen($filename,'wb9')){
				gzwrite($gz, $data);
				gzclose($gz);
				$this->debug['SAVE_FILE_COMPRESS'][] = array('file' => $filename, 'status' => 'success', 'file_exists' => 'true');
				return true;
			} else {
				$file_check = file_exists($filename) ? 'true' : 'false';
				$this->debug['SAVE_FILE_COMPRESS'][] = array('file' => $filename, 'status' => 'failure', 'file_exists' => $file_check);
				return false;
			}
			break;
		default:
			$filename .= '.xml';
			if ($fp = fopen($filename, 'w+')){
				 echo 'Write '.$filename.'<br>';
				fwrite($fp, $data);
				fclose($fp);
				$this->debug['SAVE_FILE_XML'][] = array('file' => $filename, 'status' => 'success', 'file_exists' => 'true');
				return true;
			} else {
				$file_check = file_exists($filename) ? 'true' : 'false';
				$this->debug['SAVE_FILE_XML'][] = array('file' => $filename, 'status' => 'failure', 'file_exists' => $file_check);
				return false;
			}
			break;
	} # end switch 
} # end function

/**
* Function to compress a normal file
* @author Bobby Easland 
* @version 1.0
* @param string $file
* @return boolean
*/	
function CompressFile($file){
	$source = $this->savepath . $file . '.xml';
	$filename = $this->savepath . $file . '.xml.gz';
	$error_encountered = false;
	if( $gz_out = gzopen($filename, 'wb9') ){
		if($fp_in = fopen($source,'rb')){
			while(!feof($fp_in)) gzwrite($gz_out, fread($fp_in, 1024*512));
				fclose($fp_in);

		} else {
			$error_encountered = true;
		}
		gzclose($gz_out);
	} else {
		$error_encountered = true;
	}
	if($error_encountered){
		return false;
	} else {
		return true;	
	}
} # end function

/**
* Function to generate sitemap file from data
* @author Bobby Easland 
* @version 1.0
* @param array $data
* @param string $file
* @return boolean
*/	
function GenerateSitemap($data, $file){
	$content = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
	$content = '<?xml-stylesheet type="text/xsl" href="gss.xsl"?>' . "\n";
	$content .= '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">' . "\n";
	foreach ($data as $url){
		$content .= "\t" . '<url>' . "\n";
		$content .= "\t\t" . '<loc>'.$url['loc'].'</loc>' . "\n";
		$content .= "\t\t" . '<lastmod>'.$url['lastmod'].'</lastmod>' . "\n";
		$content .= "\t\t" . '<changefreq>'.$url['changefreq'].'</changefreq>' . "\n";
		$content .= "\t\t" . '<priority>'.$url['priority'].'</priority>' . "\n";
		$content .= "\t" . '</url>' . "\n";
	} # end foreach
	$content .= '</urlset>';
	return $this->SaveFile($content, $file);
} # end function

/**
* Function to generate sitemap index file 
* @author Bobby Easland 
* @version 1.1
* @return boolean
*/	
function GenerateSitemapIndex(){
	$content = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
	$content = '<?xml-stylesheet type="text/xsl" href="gss.xsl"?>' . "\n"; //human readable
	$content .= '<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">' . "\n";		
	$pattern = defined('GOOGLE_SITEMAP_COMPRESS')
				 ?	GOOGLE_SITEMAP_COMPRESS == 'true'
				 		?	"{sitemap*.xml.gz}"
						: 	"{sitemap*.xml}"
				 :	"{sitemap*.xml}";
	foreach ( glob($this->savepath . $pattern, GLOB_BRACE) as $filename ) {
	   if ( eregi('index', $filename) ) continue;
	   $content .= "\t" . '<sitemap>' . "\n";
	   $content .= "\t\t" . '<loc>'.$this->base_url . basename($filename).'</loc>' . "\n";
	   $content .= "\t\t" . '<lastmod>'.date ("Y-m-d", filemtime($filename)).'</lastmod>' . "\n";
	   $content .= "\t" . '</sitemap>' . "\n";		   		
	} # end foreach
	$content .= '</sitemapindex>';
	return $this->SaveFile($content, 'index');
} # end function

/**
* Function to generate sitemap pages file 
* @author Jack_mcs
* @version 1.1
* @return boolean
*/  
 function GeneratePagesSitemap(){
$container = array();
$changefreq = GOOGLE_SITEMAP_PAGES_CHANGE_FREQ;
$priority = '.1';

include_once(DIR_WS_CLASSES . 'language.php');
$lng = new language();

$path = (($pos = strpos(DIR_FS_CATALOG, "googlesitemap")) !== FALSE) ? substr(DIR_FS_CATALOG, 0, -strlen('googlesitemap')) : DIR_FS_CATALOG;
$pages = $this->GetPagesArray($path, DIR_WS_LANGUAGES . $lng->language['directory'], $lng->language['id']);

for ($i = 0; $i < count($pages); ++$i)
{
   $container[] = array('loc' => htmlspecialchars(utf8_encode($pages[$i]['filename'])),
						'lastmod' => $pages[$i]['lastmod'],
					  'changefreq' => $changefreq,
					   'priority' => $priority
					   );			   
}

if ($i > 0)
   return $this->GenerateSitemap($container, 'pages');
 } # end function

/**
* Function to generate product sitemap data
* @author Bobby Easland 
* @version 1.1
* @return boolean
*/	
function GenerateProductSitemap(){
	$sql = "SELECT products_id as pID, products_date_added as date_added, products_last_modified as last_mod, products_ordered 
			FROM " . TABLE_PRODUCTS . " 
			WHERE products_status='1' 
			ORDER BY products_ordered DESC";
	if ( $products_query = tep_db_query($sql) ){
		$this->debug['QUERY']['PRODUCTS']['STATUS'] = 'success';
		$this->debug['QUERY']['PRODUCTS']['NUM_ROWS'] = tep_db_num_rows($products_query);
		$container = array();
		$number = 0;
		$top = 0;
		while( $result = tep_db_fetch_array($products_query) ){
			$top = max($top, $result['products_ordered']);
			$location = tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $result['pID'], 'NONSSL', false);
			$lastmod = tep_not_null($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
			$changefreq = GOOGLE_SITEMAP_PROD_CHANGE_FREQ;
			$ratio = $top > 0 ? $result['products_ordered']/$top : 0;
			$priority = $ratio < .1 ? .1 : number_format($ratio, 1, '.', ''); 

			$container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
								 'lastmod' => date ("Y-m-d", strtotime($lastmod)),
								 'changefreq' => $changefreq,
								 'priority' => $priority
								 );
			if ( sizeof($container) >= 50000 ){
				$type = $number == 0 ? 'products' : 'products' . $number;
				$this->GenerateSitemap($container, $type);
				$container = array();
				$number++;
			}
		} # end while
		tep_db_free_result($products_query);			
		if ( sizeof($container) > 1 ) {
			$type = $number == 0 ? 'products' : 'products' . $number;
			return $this->GenerateSitemap($container, $type);
		} # end if			
	} else {
		$this->debug['QUERY']['PRODUCTS']['STATUS'] = 'false';
		$this->debug['QUERY']['PRODUCTS']['NUM_ROWS'] = '0';
	}
} # end function

/**
* Funciton to generate category sitemap data
* @author Bobby Easland 
* @version 1.1
* @return boolean
*/	
function GenerateCategorySitemap(){
	$sql = "SELECT categories_id as cID, date_added, last_modified as last_mod 
			FROM " . TABLE_CATEGORIES . " 
			ORDER BY parent_id ASC, sort_order ASC, categories_id ASC";
	if ( $categories_query = tep_db_query($sql) ){
		$this->debug['QUERY']['CATEOGRY']['STATUS'] = 'success';
		$this->debug['QUERY']['CATEOGRY']['NUM_ROWS'] = tep_db_num_rows($categories_query);
		$container = array();
		$number = 0;
		while( $result = tep_db_fetch_array($categories_query) ){
			$location =tep_href_link(FILENAME_DEFAULT, 'cPath=' . $this->GetFullcPath($result['cID']), 'NONSSL', false);
			$lastmod = tep_not_null($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
			$changefreq = GOOGLE_SITEMAP_CAT_CHANGE_FREQ;
			$priority = .5; 

			$container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
								 'lastmod' => date ("Y-m-d", strtotime($lastmod)),
								 'changefreq' => $changefreq,
								 'priority' => $priority
								 );
			if ( sizeof($container) >= 50000 ){
				$type = $number == 0 ? 'categories' : 'categories' . $number;
				$this->GenerateSitemap($container, $type);
				$container = array();
				$number++;
			}
		} # end while
		tep_db_free_result($categories_query);			
		if ( sizeof($container) > 1 ) {
			$type = $number == 0 ? 'categories' : 'categories' . $number;
			return $this->GenerateSitemap($container, $type);
		} # end if			
	} else {
		$this->debug['QUERY']['CATEOGRY']['STATUS'] = 'false';
		$this->debug['QUERY']['CATEOGRY']['NUM_ROWS'] = '0';
	}
} # end function

/**
* Funciton to generate manufacturer sitemap data
* @author Jack_mcs from Bobbys code
* @version 1.1
* @return boolean
*/
function GenerateManufacturerSitemap(){
	$sql = "SELECT manufacturers_id as mID, date_added, last_modified as last_mod, manufacturers_name
			FROM " . TABLE_MANUFACTURERS . " order by manufacturers_name DESC";

	if ( $manufacturers_query = tep_db_query($sql) ){
		$this->debug['QUERY']['MANUFACTURERS']['STATUS'] = 'success';
		$this->debug['QUERY']['MANUFACTURERS']['NUM_ROWS'] = tep_db_num_rows($manufacturers_query);
		$container = array();
		$number = 0;
		while( $result = tep_db_fetch_array($manufacturers_query) ){
			$location = tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $result['mID'], 'NONSSL', false);
			$lastmod = tep_not_null($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
			$changefreq = GOOGLE_SITEMAP_MAN_CHANGE_FREQ;
			$priority = .5;

			$container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
								 'lastmod' => date ("Y-m-d", strtotime($lastmod)),
								 'changefreq' => $changefreq,
								 'priority' => $priority
								 );
			if ( sizeof($container) >= 50000 ){
				$type = $number == 0 ? 'manufacturers' : 'manufacturers' . $number;
				$this->GenerateSitemap($container, $type);
				$container = array();
				$number++;
			}
		} # end while
		tep_db_free_result($manufacturers_query);
		if ( sizeof($container) > 1 ) {
			$type = $number == 0 ? 'manufacturers' : 'manufacturers' . $number;
			return $this->GenerateSitemap($container, $type);
		} # end if			
	} else {
		$this->debug['QUERY']['MANUFACTURERS']['STATUS'] = 'false';
		$this->debug['QUERY']['MANUFACTURERS']['NUM_ROWS'] = '0';
	}
} # end function

/**
* Funciton to generate manufacturer sitemap data
* @author Jack_mcs from Bobbys code
* @version 1.1
* @return boolean
*/
function GenerateSpecialsSitemap(){
	$sql = "SELECT p.products_id as pID, s.specials_date_added as date_added, s.specials_last_modified as last_mod, p.products_ordered
			FROM " . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on p.products_id = pd.products_id left join " . TABLE_SPECIALS . " s on pd.products_id = s.products_id
			where p.products_status = '1' and s.status = '1' order by s.specials_date_added desc ";
	if ( $products_query = tep_db_query($sql) ){
		$this->debug['QUERY']['SPECIALS']['STATUS'] = 'success';
		$this->debug['QUERY']['SPECIALS']['NUM_ROWS'] = tep_db_num_rows($products_query);
		$container = array();
		$number = 0;
		$top = 0;
		while( $result = tep_db_fetch_array($products_query) ){
			$top = max($top, $result['products_ordered']);
			$location = tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $result['pID'], 'NONSSL', false);
			$lastmod = tep_not_null($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
			$changefreq = GOOGLE_SITEMAP_SPECIALS_CHANGE_FREQ;
			$ratio = $top > 0 ? $result['products_ordered']/$top : 0;
			$priority = $ratio < .1 ? .1 : number_format($ratio, 1, '.', ''); 

			$container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
								 'lastmod' => date ("Y-m-d", strtotime($lastmod)),
								 'changefreq' => $changefreq,
								 'priority' => $priority
								 );
			if ( sizeof($container) >= 50000 ){
				$type = $number == 0 ? 'specials' : 'specials' . $number;
				$this->GenerateSitemap($container, $type);
				$container = array();
				$number++;
			}
		} # end while
		tep_db_free_result($products_query);			
		if ( sizeof($container) > 1 ) {
			$type = $number == 0 ? 'specials' : 'specials' . $number;
			return $this->GenerateSitemap($container, $type);
		} # end if			
	} else {
		$this->debug['QUERY']['SPECIALS']['STATUS'] = 'false';
		$this->debug['QUERY']['SPECIALS']['NUM_ROWS'] = '0';
	}
} # end function

/**
* Function to retrieve full cPath from category ID 
* @author Bobby Easland 
* @version 1.0
* @param mixed $cID Could contain cPath or single category_id
* @return string Full cPath string
*/	
function GetFullcPath($cID){
	if ( ereg('_', $cID) ){
		return $cID;
	} else {
		$c = array();
		$this->GetParentCategories($c, $cID);
		$c = array_reverse($c);
		$c[] = $cID;
		$cID = sizeof($c) > 1 ? implode('_', $c) : $cID;
		return $cID;
	}
} # end function

/**
* Recursion function to retrieve parent categories from category ID 
* @author Bobby Easland 
* @version 1.0
* @param mixed $categories Passed by reference
* @param integer $categories_id
*/	
function GetParentCategories(&$categories, $categories_id) {
	$sql = "SELECT parent_id 
			FROM " . TABLE_CATEGORIES . " 
			WHERE categories_id='" . (int)$categories_id . "'";
	$parent_categories_query = tep_db_query($sql);
	while ($parent_categories = tep_db_fetch_array($parent_categories_query)) {
		if ($parent_categories['parent_id'] == 0) return true;
		$categories[sizeof($categories)] = $parent_categories['parent_id'];
		if ($parent_categories['parent_id'] != $categories_id) {
			$this->GetParentCategories($categories, $parent_categories['parent_id']);
		}
	}
} # end function

/**
* Utility function to read and return the contents of a GZ formatted file
* @author Bobby Easland 
* @version 1.0
* @param string $file File to open
* @return string
*/	
function ReadGZ( $file ){
	$file = $this->savepath . $file;
	$lines = gzfile($file);
	return implode('', $lines);
} # end function

/**
* Utility function to generate the submit URL 
* @author Bobby Easland 
* @version 1.0
* @return string
*/	
function GenerateSubmitURL(){
	$url = urlencode($this->base_url . 'sitemapindex.xml');
	return htmlspecialchars(utf8_encode('http://www.google.com/webmasters/sitemaps/ping?sitemap=' . $url));
} # end function

 function GetPagesArray($locn, $languagesDir, $languageID)
 {
$cwd = getcwd(); 
$pagesArray = array();

$end =  (substr($locn, strlen($locn) - 1) !== '/') ? '/' : '';
$root = $locn . $end;
$path = $root . $languagesDir;
$end =  (substr($path, strlen($path) - 1) !== '/') ? '/' : '';
$path = $path . $end;

chdir ($path);

foreach (glob("*.php") as $filename)  
{
  if (! in_array($filename, $this->excludeList) && $this->IsViewable($root . $filename))
  {
	$r = @stat($filename);
	$displayName = ucwords(str_replace("_", " ", substr($filename, 0, strpos($filename, ".")))); //remove the .php and underscores
	$pagesArray[] = array('filename' => $this->base_url . $filename,
						  'lastmod' => gmstrftime ("%Y-%m-%d", $r[9]));

	/*** ADD ARTICLES ***/			
	if ($filename === 'articles.php')
	{
	  $sql = "SELECT a.articles_id, DATE_FORMAT(a.articles_last_modified,'%Y-%m-%d') AS lastmod from " . TABLE_ARTICLES . " a left join " . TABLE_ARTICLES_DESCRIPTION . " ad on a.articles_id = ad.articles_id where a.articles_status = '1' and ad.language_id = '" . (int)$languageID . "'";
	  if ( $articles_query = tep_db_query($sql) )
	  {
		while( $result = tep_db_fetch_array($articles_query) )
		{
		  $pagesArray[] = array('filename' => $this->base_url . 'article_info.php?articles_id=' . $result['articles_id'],
								'lastmod' => $result['lastmod']);
		}
	  }

	  $sql = "SELECT t.topics_id, DATE_FORMAT(t.last_modified,'%Y-%m-%d') AS lastmod from " . TABLE_TOPICS . " t left join " . TABLE_TOPICS_DESCRIPTION . " td on t.topics_id = td.topics_id where td.language_id = '" . (int)$languageID . "'";
	  if ( $articles_query = tep_db_query($sql) )
	  {
		while( $result = tep_db_fetch_array($articles_query) )
		{
		  $pagesArray[] = array('filename' => $this->base_url . 'articles.php?tPath=' . $result['topics_id'],
								'lastmod' => $result['lastmod']);
		}
	  } 
	}				 

	/*** ADD INFORMATION PAGES ***/			
	else if ($filename === 'information.php')
	{
	  $sql = "SELECT information_id from " . TABLE_INFORMATION . " where visible = '1' and language_id = '" . (int)$languageID . "'";
	  if ( $information_query = tep_db_query($sql) )
	  {
		while( $result = tep_db_fetch_array($information_query) )
		{
		  $pagesArray[] = array('filename' => $this->base_url . 'information.php?info_id=' . $result['information_id'],
								'lastmod' => gmstrftime ("%Y-%m-%d", $r[9]));
		}
	  }		  
	} 
  } 
}	

/*** ADD PAGE MANAGER ***/ 
//special case since it doesn't have a language file			
if (file_exists($root.'pages.php') &&  $this->IsViewable($root.'pages.php')) 
{
   $r = @stat('pages.php');
   $pagesArray[] = array('filename' => $this->base_url . 'pages.php',
						  'lastmod' => gmstrftime ("%Y-%m-%d", $r[9]));
   $sql = "SELECT p.pages_id, p.pages_name from " . TABLE_PAGES . " p left join " . TABLE_PAGES_DESCRIPTION . " pd on p.pages_id = pd.pages_id where p.pages_status = '1' and pd.language_id = '" . (int)$languageID . "'";
   if ( $pages_query = tep_db_query($sql) )
   {
	  while( $result = tep_db_fetch_array($pages_query) )
	  {
		$pagesArray[] = array('filename' => $this->base_url . 'pages.php?page=' . $result['pages_name'],
							  'lastmod' => gmstrftime ("%Y-%m-%d", $r[9]));
	  }
  } 
}	

chdir ($cwd);
return $pagesArray;
 }

 function IsViewable($file)
 {
if (($fp = @file($file)))
{
  for ($idx = 0; $idx < count($fp); ++$idx)
  {
	 if (strpos($fp[$idx], "<head>") !== FALSE)
	   return true;
  }
}  
return false;
 }
} #  end class
?>

Link to comment
Share on other sites

Hi Rob,

 

Before I start, I apologise if this is outside your scope for forum support or out of USU5 scope. If so, I may wish to engage you privately!

 

Background:

 

I have recently completed and published my web site and have re-visited my attempt at validating the site to XHTML 1.0 transitional (a task I had 'completed' before the addition and/or upgrade of a few contributions - USU5 included) standards. At this point I am attempting to address a W3C error as listed below, that prior to upgrading from USU2 to USU5 had not occurred, hence my post here.

 

Problem:

 

d_search_result.php?keywords=bruzzi&search_in_description=1">bruzzi</a></span

 

An entity reference was found in the document, but there is no reference by that name defined. Often this is caused by misspelling the reference name, unencoded ampersands, or by leaving off the trailing semicolon (;). The most common cause of this error is unencoded ampersands in URLs as described by the WDG in "Ampersands in URLs".

 

Entity references start with an ampersand (&) and end with a semicolon (;). If you want to use a literal ampersand in your document you must encode it as "&" (even inside URLs!). Be careful to end entity references with a semicolon or your entity reference may get interpreted in connection with the following text. Also keep in mind that named entity references are case-sensitive; &Aelig; and æ are different characters.

 

If this error appears in some markup generated by PHP's session handling code, this article has explanations and solutions to your problem.

 

Note that in most documents, errors related to entity references will trigger up to 5 separate messages from the Validator. Usually these will all disappear when the original problem is fixed.

 

Source of error:

 

The above generated link originates from my \includes\boxes\searchtagcloud.php as per this contribution and the code below:

 

<?php
/*
 $Id: catalog/includes/boxes/searchtagcloud.php
*/

?>
<tr>
<td>
<!-- tagcloud //-->
<?php
 $info_box_contents = array();
 $info_box_contents[] = array('text' => sprintf(TABLE_HEADING_TAGCLOUD, strftime('%B')));

 new infoBoxHeading($info_box_contents, false, false);

 $info_box_contents = array();

 $products_query_raw = "select search, freq from customers_searches where language_id = " .$languages_id." order by search DESC";

 $products_query1 = tep_db_query($products_query_raw);

class tagcloud {
	// tag-styles: from very tiny to very big
//	var $a_tag_styles = array('font-size:xx-small', 'font-size:x-small', 'font-size:small', 'font-size:medium', 'font-size:large', 'font-size:x-large', 'font-size:xx-large');

	var $a_tag_styles = array('font-size:9px', 'font-size:6px', 'font-size:7px', 'font-size:8px', 'font-size:9px', 'font-size:10px','font-size:11px', 'font-size:12px','font-size:13px','font-size:17px', 'font-size:20px');


 	// how many tags do we want to display?
	var $max_shown_tags;
	// the tags
	var $a_tc_data;

	/**
	 * Construct
	 */
	function tagcloud($max_shown_tags = SEARCH_TAG_CLOUD_MAX_SHOWN_TAGS) {
		$this->max_shown_tags = $max_shown_tags;
	}

	/**
	 * Saves the date for the tagcloud
	 *
	 * @param	array	$a_tc_data	An array with data. The keys are the actual tags, the values are how often they occure.
	 *								eg.: array('tag1' => 3, 'tag2' => 1, 'tag3' => 7);
	 * @return	bool				Always returns true
	 */
	function set_tagcloud_data($a_tc_data) {
		$this->a_tc_data = $a_tc_data;
		arsort($this->a_tc_data);

		// since we only want a specified number of tags, we strip all the tags, that do not often occure.
		$a_tags = array();
		reset($this->a_tc_data);
		$tag_count = count($this->a_tc_data);
		$i = 1;
		while ($i <= $tag_count && $i <= $this->max_shown_tags) {
			$a_tags[key($this->a_tc_data)] = current($this->a_tc_data);
			next($this->a_tc_data);
			$i++;
		}
		$this->a_tc_data = $a_tags;

		return true;
	}

	/**
	 * Create the Tagcloud
	 *
	 * @return	string				Returns the HTML code for the tagcloud
	 */
	function get_tagcloud() {
		if (count($this->a_tc_data) <= 0) {
			// no tags
			return '';
		}

		// calculate the range that lies between the the different tag sizes
		reset($this->a_tc_data);
		$count_high = current($this->a_tc_data);  
		$count_low = end($this->a_tc_data);

		$range = ($count_high - $count_low) / (count($this->a_tag_styles) - 1);

		// sort the tags alphabetically



		//sort the array by keyword (not casesensitive)  

		uksort($this->a_tc_data, "strnatcasecmp");


		// generate the html for the cloud
		if ($range > 0) {
			$b_first = true;
			$prev_search = '';


			foreach ($this->a_tc_data as $tag => $tagcount) {
			$tag1 = str_replace(" ","%20",$tag);
				if ($b_first) {
					$html_cloud = '<div style="width:'. SEARCH_TAG_CLOUD_BOX_WIDTH .'; overflow:hidden"> <span style="' . $this->a_tag_styles[round(($tagcount - $count_low) / $range, 0)] . '"><a href="' . tep_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . $tag1 . '&search_in_description=1') .'">' . $tag . '</a></span>';
					$b_first = false;
				} else {
					$html_cloud .= ' <span style="' . $this->a_tag_styles[round(($tagcount - $count_low) / $range, 0)] . '"><a href="' . tep_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . $tag1 . '&search_in_description=1') .'">' . $tag . '</a></span>';
				}
			}
			$html_cloud .= '</div>';
		} else {
			// all tags are the same size
			$b_first = true;
			foreach ($this->a_tc_data as $tag => $tagcount) {
				if ($b_first) {
					$html_cloud = '<span class="tag' . $this->a_tag_styles[round((count($this->a_tag_styles)-1) / 2, 0)] . '"><a href="' . tep_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . $tag1 . '&search_in_description=1') .'">' . $tag . '</a></span>';
					$b_first = false;
				} else {
					$html_cloud .= ' <span class="tag' . $this->a_tag_styles[round((count($this->a_tag_styles)-1) / 2, 0)] . '"><a href="' . tep_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . $tag1 . '&search_in_description=1') .'">' . $tag . '</a></span>';
				}
			}
		}

		return $html_cloud;
	}
}

 $tc_a_tags = array();

  while ($tcproducts = tep_db_fetch_array($products_query1)) {
$tc_word = preg_replace('/(<(?:[^"\']|"(?:[^"]|\\\")*?"|\'(?:[^\']|\\\')*?\')*?' . '>)/si', ' ',$tcproducts['search']);
$tc_freq =  $tcproducts['freq'];

$tc_a_tags[$tc_word] = $tc_freq;

}

$tc_tch = new tagcloud();
// hand over the tags to the class
$tc_tch->set_tagcloud_data($tc_a_tags);
// request the tagcloud
$tc_tagcloud = $tc_tch->get_tagcloud();

 $info_box_contents[] = array('text' => $tc_tagcloud);
// BOF All Producst SEO
 $info_box_contents[] = array('align' => 'center',
                              'text'  => '<a class="allproductsBox" href="' . tep_href_link(FILENAME_ALLPRODS_SEO, '', 'NONSSL') . '" title="'  . BOX_INFORMATION_ALLPRODS_SEO_SEARCHTAGCLOUD . '">' . BOX_INFORMATION_ALLPRODS_SEO_SEARCHTAGCLOUD . '</a>');
// EOF All Producst SEO
 new infoBox($info_box_contents);
?>
<!-- new_products_eof //-->
</td>
</tr>

 

Resolution attempt:

 

I have tried several methods to resolve the W3C validtion error including: (as a test) hardcoding '&' with '&' which did bring down the error count (however not advisable I'm sure). I have also searched forum threads that lead me to the \includes\functions\html_ouput.php and using $link = str_replace('&&', '&', $link) which was present in USU2 (and I notice something similar in \inlcudes\modules\ultimate_seo_urls5\classes\Usu_Validator.php - forgive my lack of PHP knowledge)

 

I have also tried using USU5 urls switched to off, W3C valid urls both on and off - with no joy.

 

Would you therefore be able to advise a route in which I should take to attempt to resolve the XHTML output error?

 

Once again, I apologise if this is not a USU5 issue, but infact another error elesewhere.

 

Kind regards,

James

 

osCommerce 2.2RC2a

PHP 5.2.9

MySQL 5.0.82

Link to comment
Share on other sites

Hi James

 

This is indeed a valid USU5 issue and thanks for reporting it. I had pretty much left the original tep_href_link() function alone.

 

I had missed the fact that even if it is producing a non seo url that it still needed to check for W3C.

 

includes/modules/ultimate_seo_urls5/includes/Usu_General_Functions.php

 

Find ...

 

	return $link;

 

Change to ...

 

	if ( defined('SEO_URLS_USE_W3C_VALID') && ( SEO_URLS_USE_W3C_VALID == 'true' ) ) {
  return htmlspecialchars( utf8_encode( $link ) );
}
return $link;

Link to comment
Share on other sites

Hi James

 

This is indeed a valid USU5 issue and thanks for reporting it. I had pretty much left the original tep_href_link() function alone.

 

I had missed the fact that even if it is producing a non seo url that it still needed to check for W3C.

 

includes/modules/ultimate_seo_urls5/includes/Usu_General_Functions.php

 

Find ...

 

	return $link;

 

Change to ...

 

	if ( defined('SEO_URLS_USE_W3C_VALID') && ( SEO_URLS_USE_W3C_VALID == 'true' ) ) {
  return htmlspecialchars( utf8_encode( $link ) );
}
return $link;

 

Rob,

 

Thanks for your speedy response! I can confirm that once the code change above was applied, the W3C validation issue was resolved.

 

Thank you for your time,

 

Regards

James

Link to comment
Share on other sites

Have you read the instructions? (excuse me if it happens to be a language issue)

 

There are two methods:

  • Character conversion file
  • Add special character replacements via admin

 

Recommended (create a character conversion file):

 

In the package you downloaded look in extras/character_conversion_pack

 

Open a few of these files and have a look .. they convert special language characters like ..

'SPECIAL_CHARACTER' => 'LATIN_REPLACEMENT'

 

Create one of these files and name it EXACTLY the same as your file in catalog/includes/languages/

 

e.g. it might be called czech.php

 

***IMPORTANT*** Save the file in the correct charset .. e.g. ISO-8859-1

 

Then move it to the directory on your server catalog/includes/modules/ultimate_seo_urls5/includes/character_conversion/

 

Alternative:

 

In admin configuration>Seo Urls 5

 

choose "Enter special character conversions"

 

Put in here a comma seperated list like SPECIAL_CHARACTER=>LATIN_REPLACEMENT,SPECIAL_CHARACTER2=>LATIN_REPLACEMENT2

 

Hope that helps

 

Thank you for quick reply. I know about configuration in admin section. It does not work. However, I must apologize, I didn't notice the file with instruction for conversion. oops :angry: I ho

Martin

Link to comment
Share on other sites

Thank you for quick reply. I know about configuration in admin section. It does not work.

 

The admin setting is there for backwards compatibility .. when you say it doesn't work can I ask what you mean exactly? (although I know the concept is flawed)

 

However, I must apologize, I didn't notice the file with instruction for conversion. oops :angry: I ho

Martin

 

Can I presume then Martin that the recommended file based conversion system worked for you?

Link to comment
Share on other sites

Hi,

great contrib.

2 questions:

I am using googlexml_sitemap_seo_v_1.1 contrib and it still output the URLs in the old format with ?s in them. Is there a way to make it work with SEO URLs?

 

If I want to include the category name also in the URL, so it it like www.mysite.com/dress/very-nice-dress.html, can it be done somehow?

 

Thanks

 

P.S. I have produced a bulgarian language conversion file. I am ready to send it for sharing.

OSC beginner

Link to comment
Share on other sites

Getting HT SEO (Header Tags) by Jack_MCS working with this contribution:

 

http://www.clubosc.com/seourls5-htcseo3.html

 

Gary

 

Can I just confirm something here .. it is not in any way an issue with usu5. Header tags simply reports the filename incorrectly as it is using the wrong _SERVER variable.

 

The fix is also incorrect, I'll explain ..

 

$_SERVER['PHP_SELF'] should never be used for two reasons

 

1) It can be spoofed.

2) It is unreliable server to server (as you have seen).

 

For this very reason USU5 uses $_SERVER['SCRIPT_NAME'] which is both reliable and is also one of the few _SERVER variables that cannot be spoofed.

 

The simple solution is for the other contribution to use basename( $_SERVER['SCRIPT_NAME'] )

 

Thanks for reporting the reasons for the incompatibility of header tags with USU5 Gary.

Link to comment
Share on other sites

Hi,

great contrib.

2 questions:

I am using googlexml_sitemap_seo_v_1.1 contrib and it still output the URLs in the old format with ?s in them. Is there a way to make it work with SEO URLs?

 

If I want to include the category name also in the URL, so it it like www.mysite.com/dress/very-nice-dress.html, can it be done somehow?

 

Thanks

 

P.S. I have produced a bulgarian language conversion file. I am ready to send it for sharing.

 

there are two corrected googlexml_sitemap_seo files in the downloaded package .. look in "extras".

Link to comment
Share on other sites

thanks for the code for Google xml sitemaps.

I compared the index.php with the new code in it and changed some more things. I will PM you the file that I use now.

 

Hi Claudia

 

Thanks for testing, although I can't really comment as there is no specific detail.

 

 

What is the uri shown in the button code when you view source?

What I see when I'm hovering over the button "add to cart" with Cpath set true:

http://www.goodlivesbeads.nl/winkelen2/cat...;cPath=23_267IL

When I click on the button, the product is added to the shopping-cart and I go to the shopping cart.

 

With Cpath set false I see:

http://www.goodlivesbeads.nl/winkelen2/cat...ion=add_product

When I click on the button add to cart, I get the following Url:

http://www.goodlivesbeads.nl/winkelen2/cat...ion=add_product

Nothing is added to the cart then, and nothing visisble in the shopping cart

 

What is the uri you see when you hover the language button?

With Cpath set true I see

http://www.goodlivesbeads.nl/winkelen2/cat...;cPath=23_267IL (hover over dutch flag)

http://www.goodlivesbeads.nl/winkelen2/cat...Path=23_267ILIL

 

When I click on the flags, these are the actual url that I get

 

With Cpath set false I see:

http://www.goodlivesbeads.nl/winkelen2/cat...tml?language=NL when I hover over the dutch flag

(I use the dutch language at that moment)

http://www.goodlivesbeads.nl/winkelen2/cat...tml?language=EN when I hover over the english flag

When I click on the english flag, the above url is opened, but it stays the duch language

Link to comment
Share on other sites

thanks for the code for Google xml sitemaps.

I compared the index.php with the new code in it and changed some more things. I will PM you the file that I use now.

 

 

What I see when I'm hovering over the button "add to cart" with Cpath set true:

http://www.goodlivesbeads.nl/winkelen2/cat...;cPath=23_267IL

When I click on the button, the product is added to the shopping-cart and I go to the shopping cart.

 

With Cpath set false I see:

http://www.goodlivesbeads.nl/winkelen2/cat...ion=add_product

When I click on the button add to cart, I get the following Url:

http://www.goodlivesbeads.nl/winkelen2/cat...ion=add_product

Nothing is added to the cart then, and nothing visisble in the shopping cart

 

 

With Cpath set true I see

http://www.goodlivesbeads.nl/winkelen2/cat...;cPath=23_267IL (hover over dutch flag)

http://www.goodlivesbeads.nl/winkelen2/cat...Path=23_267ILIL

 

When I click on the flags, these are the actual url that I get

 

With Cpath set false I see:

http://www.goodlivesbeads.nl/winkelen2/cat...tml?language=NL when I hover over the dutch flag

(I use the dutch language at that moment)

http://www.goodlivesbeads.nl/winkelen2/cat...tml?language=EN when I hover over the english flag

When I click on the english flag, the above url is opened, but it stays the duch language

 

Claudia I think you have been caught by USU5 security :)

 

What is cPath=23_267IL?

 

There should be no alpha characters in a cPath

Link to comment
Share on other sites

Claudia I think you have been caught by USU5 security :)

 

What is cPath=23_267IL?

 

There should be no alpha characters in a cPath

 

I have no idea, but when those characters are in it, it's working. I think it has something to do with the rewrite. If you see the rewrite url in my httpd.ini then there is I,L at the end.

 

With Seo urls set to false my url to that product looks like this

 

http://www.goodlivesbeads.nl/winkelen2/cat...products_id=123

Link to comment
Share on other sites

Great contribution. Works for me perfectly on test server running Apache but when I try on production IIS I get a page not found message on my home page as soon as I enable it. When it is on, I can go to a particular product page and it seems to be working but I can't seem to resolve the home page issue. Site is at www.newprospects.com. What have I done wrong? I really want this contribution to work so if anyone has any ideas on how to troubleshoot and fix, I would thank you in advance for your input. I do have the SEO Header Tags contribution on (but it is on in test too). This was an upgrade from 2.1 Ultimate SEO which did work.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...