I'm having trouble configuring my google sitemap properly and was hoping someone on here could help me out. Error message received is:
XML Parsing Error: XML or text declaration not at start of entity
Location: http://www.wiredvape.com/sitemap.xml
Line Number 1, Column 33:
--------------------------------^
The url of my sitemape is wiredvape.com/sitemap.xml
I'm currently running version 4.2.2. Both SEO and Google Sitemap addons are enabled.
Thank you so much for your help.
I have the same Problem!
Anyone aware of a fix for this error message?
bump
Try to delete the following file.
var/cache/misc/1/google_sitemap/sitemap.xml
The sitemap.xml file will be regenerated
just clear cache… happens to me also…
Thanks for the help, but deleting the file and clearing the cache do not help.
XML Parsing Error: XML or text declaration not at start of entity
Location: [url=“http://www.wiredvape.com/sitemap.xml”]http://www.wiredvape.com/sitemap.xml[/url]
Line Number 1, Column 33:
I see extra spaces in the start of the document. Please make sure that there are no extra spaces in the following part of the code of the app\addons\google_sitemap\func.php file:
```php
$simple_head = <<
```
You can download latest version of CS-Cart and compare this file
I have latest version and have this issue also. It just breaks when generating sitemaps or cache is not fully cleared…somewhere is bug in the code it definitive
I was not able to find any spaces in the start of the document.
compare your func file to this one with some text compare free download
or just try this one on your site
```php
/***************************************************************************
-
*
- (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
-
*
- This is commercial software, only users who have purchased a valid *
- license and accept to the terms of the License Agreement can install *
- and use this program. *
-
*
****************************************************************************
- PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
- “copyright.txt” FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
****************************************************************************/
use Tygh\Registry;
if (!defined('BOOTSTRAP')) { die('Access denied'); }
function fn_get_google_sitemap_company_condition($field)
{
if (fn_allowed_for('ULTIMATE')) {
return fn_get_company_condition($field);
}
return '';
}
function fn_google_sitemap_generate_link($object, $value, $languages)
{
$http_location = Registry::get('config.http_location');
switch ($object) {
case 'product':
$link = 'products.view?product_id=' . $value;
break;
case 'category':
$link = 'categories.view?category_id=' . $value;
break;
case 'page':
$link = 'pages.view?page_id=' . $value;
break;
case 'extended':
$link = 'product_features.view?variant_id=' . $value;
break;
case 'companies':
$link = 'companies.view?company_id=' . $value;
break;
default:
fn_set_hook('sitemap_link_object', $link, $object, $value);
}
$links = array();
if (count($languages) == 1) {
$links[] = fn_url($link, 'C', 'http', CART_LANGUAGE);
} else {
foreach ($languages as $lang_code => $lang) {
$links[] = fn_url($link . '&sl=' . $lang_code, 'C', 'http', $lang_code);
}
}
fn_set_hook('sitemap_link', $link, $object, $value, $languages, $links);
return $links;
}
function fn_google_sitemap_print_item_info($links, $lmod, $frequency, $priority)
{
$item = '';
foreach ($links as $link) {
$link = fn_html_escape($link);
$item .= <<
$link
$lmod
$frequency
$priority
\n
ITEM;
}
return $item;
}
function fn_google_sitemap_get_frequency()
{
$frequency = array(
'always' => __('always'),
'hourly' => __('hourly'),
'daily' => __('daily'),
'weekly' => __('weekly'),
'monthly' => __('monthly'),
'yearly' => __('yearly'),
'never' => __('never'),
);
return $frequency;
}
function fn_google_sitemap_get_priority()
{
$priority = array();
for ($i = 0.1; $i <= 1; $i += 0.1) {
$priority[(string) $i] = (string) $i;
}
return $priority;
}
function fn_google_sitemap_clear_url_info()
{
$storefront_url = Registry::get('config.http_location');
if (fn_allowed_for('ULTIMATE')) {
if (Registry::get('runtime.company_id') || Registry::get('runtime.simple_ultimate')) {
$company = Registry::get('runtime.company_data');
$storefront_url = 'http://' . $company['storefront'];
} else {
$storefront_url = '';
}
}
if (!empty($storefront_url)) {
$sitemap_available_in_customer = __('sitemap_available_in_customer', array(
'[http_location]' => $storefront_url,
'[sitemap_url]' => fn_url('xmlsitemap.view', 'C', 'http'),
));
} else {
$sitemap_available_in_customer = '';
}
return __('sitemap_clear_cache_info', array(
'[http_location]' => $storefront_url,
'[clear_cache_url]' => fn_url('addons.manage?cc'),
'[sitemap_available_in_customer]' => $sitemap_available_in_customer
));
}
function fn_google_sitemap_get_content($map_page = 0)
{
$cache_path = fn_get_cache_path(false) . 'google_sitemap/';
define('ITEMS_PER_PAGE', 500);
define('MAX_URLS_IN_MAP', 50000); // 50 000 is the maximum for one sitemap file
define('MAX_SIZE_IN_KBYTES', 10000); // 10240 KB || 10 Mb is the maximum for one sitemap file
$sitemap_settings = Registry::get('addons.google_sitemap');
$location = Registry::get('config.http_location');
$lmod = date(“Y-m-d”, TIME);
header(“Content-Type: text/xml;charset=utf-8”);
// HEAD SECTION
$simple_head = <<
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“www.sitemaps.org - /schemas/sitemap/0.9/
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd”>
HEAD;
$simple_foot = <<
FOOT;
$index_map_url = <<
$location/
$lmod
$sitemap_settings[site_change]
$sitemap_settings[site_priority]
\n
HEAD;
// END HEAD SECTION
// SITEMAP CONTENT
$link_counter = 1;
$file_counter = 1;
fn_mkdir($cache_path);
$file = fopen($cache_path . 'sitemap' . $file_counter . '.xml', “wb”);
fwrite($file, $simple_head . $index_map_url);
$languages = db_get_hash_single_array(“SELECT lang_code, name FROM ?:languages WHERE status = 'A'”, array('lang_code', 'name'));
if ($sitemap_settings['include_categories'] == “Y”) {
$categories = db_get_fields(“SELECT category_id FROM ?:categories WHERE FIND_IN_SET(?i, usergroup_ids) AND status = 'A' ?p”, USERGROUP_ALL, fn_get_google_sitemap_company_condition('?:categories.company_id'));
//Add the all active categories
foreach ($categories as $category) {
$links = fn_google_sitemap_generate_link('category', $category, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['categories_change'], $sitemap_settings['categories_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
if ($sitemap_settings['include_products'] == “Y”) {
$page = 1;
$total = ITEMS_PER_PAGE;
$params = $_REQUEST;
$params['page'] = $page;
$params['custom_extend'] = array('categories');
$params['sort_by'] = 'null';
$params['only_short_fields'] = true;
while (ITEMS_PER_PAGE * ($params['page'] - 1) <= $total) {
list($products, $search) = fn_get_products($params, ITEMS_PER_PAGE);
$total = $search['total_items'];
$params['page']++;
foreach ($products as $product) {
$links = fn_google_sitemap_generate_link('product', $product['product_id'], $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['products_change'], $sitemap_settings['products_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
unset($products);
}
if ($sitemap_settings['include_pages'] == “Y”) {
$pages = db_get_fields(“SELECT page_id FROM ?:pages WHERE status = 'A' AND page_type != 'L' ?p”, fn_get_google_sitemap_company_condition('?:pages.company_id'));
//Add the all active pages
foreach ($pages as $page) {
$links = fn_google_sitemap_generate_link('page', $page, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['pages_change'], $sitemap_settings['pages_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
if ($sitemap_settings['include_extended'] == “Y”) {
$vars = db_get_fields(
"SELECT ?:product_feature_variants.variant_id FROM ?:product_feature_variants " .
"LEFT JOIN ?:product_features ON (?:product_feature_variants.feature_id = ?:product_features.feature_id) " .
“WHERE ?:product_features.feature_type = 'E' AND ?:product_features.status = 'A'”
);
//Add the all active extended features
foreach ($vars as $var) {
$links = fn_google_sitemap_generate_link('extended', $var, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['extended_change'], $sitemap_settings['extended_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
if (Registry::isExist(“addons.news_and_emails”) && $sitemap_settings['include_news'] == 'Y') {
$news = db_get_fields(“SELECT news_id FROM ?:news WHERE status = 'A' ?p”, fn_get_google_sitemap_company_condition('?:news.company_id'));
if (!empty($news)) {
foreach ($news as $news_id) {
$links = fn_google_sitemap_generate_link('news', $news_id, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['news_change'], $sitemap_settings['news_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
}
if (fn_allowed_for('MULTIVENDOR') && $sitemap_settings['include_companies'] == 'Y') {
$companies = db_get_fields(“SELECT company_id FROM ?:companies WHERE status = 'A' ?p”, fn_get_google_sitemap_company_condition('?:companies.company_id'));
if (!empty($companies)) {
foreach ($companies as $company_id) {
$links = fn_google_sitemap_generate_link('companies', $company_id, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['companies_change'], $sitemap_settings['companies_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
}
fn_set_hook('sitemap_item', $sitemap_settings, $file, $lmod, $link_counter, $file_counter);
fwrite($file, $simple_foot);
fclose($file);
if ($file_counter == 1) {
fn_rename($cache_path . 'sitemap' . $file_counter . '.xml', $cache_path . 'sitemap.xml');
} else {
// Make a map index file
$maps = '';
$seo_enabled = Registry::get('addons.seo.status') == 'A' ? true : false;
for ($i = 1; $i <= $file_counter; $i++) {
if ($seo_enabled) {
$name = $location . '/sitemap' . $i . '.xml';
} else {
$name = fn_url('xmlsitemap.view?page=' . $i, 'C', 'http');
}
$name = htmlentities($name);
$maps .= <<
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“www.sitemaps.org - /schemas/sitemap/0.9/
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd”>
$maps
HEAD;
$file = fopen($cache_path . 'sitemap.xml', “wb”);
fwrite($file, $index_map);
fclose($file);
}
$filename = $cache_path . 'sitemap.xml';
if (!empty($map_page)) {
$name = $cache_path . 'sitemap' . $map_page . '.xml';
if (file_exists($name)) {
$filename = $name;
}
}
readfile($filename);
exit();
}
function fn_google_sitemap_check_counter(&$file, &$link_counter, &$file_counter, $links, $header, $footer)
{
$stat = fstat($file);
if ((count($links) + $link_counter) > MAX_URLS_IN_MAP || $stat['size'] >= MAX_SIZE_IN_KBYTES * 1024) {
fwrite($file, $footer);
fclose($file);
$file_counter++;
$filename = fn_get_cache_path(false) . 'google_sitemap/sitemap' . $file_counter . '.xml';
$file = fopen($filename, “wb”);
$link_counter = count($links);
fwrite($file, $header);
} else {
$link_counter += count($links);
}
}
function fn_google_sitemap_get_rewrite_rules(&$rewrite_rules, &$prefix, &$extension)
{
$rewrite_rules['!^/sitemap([0-9]).xml$!'] = '$customer_index?dispatch=xmlsitemap.view&page=$matches[1]';
$rewrite_rules['!^' . $prefix . '/sitemap([0-9]).xml$!'] = '$customer_index?dispatch=xmlsitemap.view&page=$matches[2]';
}
```
I tried this but I'm still getting the same error message. Thanks for trying to help out though!
XML Parsing Error: XML or text declaration not at start of entity
Location: http://www.wiredvape.com/sitemap.xml
Line Number 1, Column 33:
--------------------------------^
[quote name='johnbol1' timestamp='1421430767' post='202817']
compare your func file to this one with some text compare free download
or just try this one on your site
```php
/***************************************************************************
-
*
- (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
-
*
- This is commercial software, only users who have purchased a valid *
- license and accept to the terms of the License Agreement can install *
- and use this program. *
-
*
****************************************************************************
- PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
- “copyright.txt” FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
****************************************************************************/
use Tygh\Registry;
if (!defined('BOOTSTRAP')) { die('Access denied'); }
function fn_get_google_sitemap_company_condition($field)
{
if (fn_allowed_for('ULTIMATE')) {
return fn_get_company_condition($field);
}
return '';
}
function fn_google_sitemap_generate_link($object, $value, $languages)
{
$http_location = Registry::get('config.http_location');
switch ($object) {
case 'product':
$link = 'products.view?product_id=' . $value;
break;
case 'category':
$link = 'categories.view?category_id=' . $value;
break;
case 'page':
$link = 'pages.view?page_id=' . $value;
break;
case 'extended':
$link = 'product_features.view?variant_id=' . $value;
break;
case 'companies':
$link = 'companies.view?company_id=' . $value;
break;
default:
fn_set_hook('sitemap_link_object', $link, $object, $value);
}
$links = array();
if (count($languages) == 1) {
$links[] = fn_url($link, 'C', 'http', CART_LANGUAGE);
} else {
foreach ($languages as $lang_code => $lang) {
$links[] = fn_url($link . '&sl=' . $lang_code, 'C', 'http', $lang_code);
}
}
fn_set_hook('sitemap_link', $link, $object, $value, $languages, $links);
return $links;
}
function fn_google_sitemap_print_item_info($links, $lmod, $frequency, $priority)
{
$item = '';
foreach ($links as $link) {
$link = fn_html_escape($link);
$item .= <<
$link
$lmod
$frequency
$priority
\n
ITEM;
}
return $item;
}
function fn_google_sitemap_get_frequency()
{
$frequency = array(
'always' => __('always'),
'hourly' => __('hourly'),
'daily' => __('daily'),
'weekly' => __('weekly'),
'monthly' => __('monthly'),
'yearly' => __('yearly'),
'never' => __('never'),
);
return $frequency;
}
function fn_google_sitemap_get_priority()
{
$priority = array();
for ($i = 0.1; $i <= 1; $i += 0.1) {
$priority[(string) $i] = (string) $i;
}
return $priority;
}
function fn_google_sitemap_clear_url_info()
{
$storefront_url = Registry::get('config.http_location');
if (fn_allowed_for('ULTIMATE')) {
if (Registry::get('runtime.company_id') || Registry::get('runtime.simple_ultimate')) {
$company = Registry::get('runtime.company_data');
$storefront_url = 'http://' . $company['storefront'];
} else {
$storefront_url = '';
}
}
if (!empty($storefront_url)) {
$sitemap_available_in_customer = __('sitemap_available_in_customer', array(
'[http_location]' => $storefront_url,
'[sitemap_url]' => fn_url('xmlsitemap.view', 'C', 'http'),
));
} else {
$sitemap_available_in_customer = '';
}
return __('sitemap_clear_cache_info', array(
'[http_location]' => $storefront_url,
'[clear_cache_url]' => fn_url('addons.manage?cc'),
'[sitemap_available_in_customer]' => $sitemap_available_in_customer
));
}
function fn_google_sitemap_get_content($map_page = 0)
{
$cache_path = fn_get_cache_path(false) . 'google_sitemap/';
define('ITEMS_PER_PAGE', 500);
define('MAX_URLS_IN_MAP', 50000); // 50 000 is the maximum for one sitemap file
define('MAX_SIZE_IN_KBYTES', 10000); // 10240 KB || 10 Mb is the maximum for one sitemap file
$sitemap_settings = Registry::get('addons.google_sitemap');
$location = Registry::get('config.http_location');
$lmod = date(“Y-m-d”, TIME);
header(“Content-Type: text/xml;charset=utf-8”);
// HEAD SECTION
$simple_head = <<
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“www.sitemaps.org - /schemas/sitemap/0.9/
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd”>
HEAD;
$simple_foot = <<
FOOT;
$index_map_url = <<
$location/
$lmod
$sitemap_settings[site_change]
$sitemap_settings[site_priority]
\n
HEAD;
// END HEAD SECTION
// SITEMAP CONTENT
$link_counter = 1;
$file_counter = 1;
fn_mkdir($cache_path);
$file = fopen($cache_path . 'sitemap' . $file_counter . '.xml', “wb”);
fwrite($file, $simple_head . $index_map_url);
$languages = db_get_hash_single_array(“SELECT lang_code, name FROM ?:languages WHERE status = 'A'”, array('lang_code', 'name'));
if ($sitemap_settings['include_categories'] == “Y”) {
$categories = db_get_fields(“SELECT category_id FROM ?:categories WHERE FIND_IN_SET(?i, usergroup_ids) AND status = 'A' ?p”, USERGROUP_ALL, fn_get_google_sitemap_company_condition('?:categories.company_id'));
//Add the all active categories
foreach ($categories as $category) {
$links = fn_google_sitemap_generate_link('category', $category, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['categories_change'], $sitemap_settings['categories_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
if ($sitemap_settings['include_products'] == “Y”) {
$page = 1;
$total = ITEMS_PER_PAGE;
$params = $_REQUEST;
$params['page'] = $page;
$params['custom_extend'] = array('categories');
$params['sort_by'] = 'null';
$params['only_short_fields'] = true;
while (ITEMS_PER_PAGE * ($params['page'] - 1) <= $total) {
list($products, $search) = fn_get_products($params, ITEMS_PER_PAGE);
$total = $search['total_items'];
$params['page']++;
foreach ($products as $product) {
$links = fn_google_sitemap_generate_link('product', $product['product_id'], $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['products_change'], $sitemap_settings['products_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
unset($products);
}
if ($sitemap_settings['include_pages'] == “Y”) {
$pages = db_get_fields(“SELECT page_id FROM ?:pages WHERE status = 'A' AND page_type != 'L' ?p”, fn_get_google_sitemap_company_condition('?:pages.company_id'));
//Add the all active pages
foreach ($pages as $page) {
$links = fn_google_sitemap_generate_link('page', $page, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['pages_change'], $sitemap_settings['pages_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
if ($sitemap_settings['include_extended'] == “Y”) {
$vars = db_get_fields(
"SELECT ?:product_feature_variants.variant_id FROM ?:product_feature_variants " .
"LEFT JOIN ?:product_features ON (?:product_feature_variants.feature_id = ?:product_features.feature_id) " .
“WHERE ?:product_features.feature_type = 'E' AND ?:product_features.status = 'A'”
);
//Add the all active extended features
foreach ($vars as $var) {
$links = fn_google_sitemap_generate_link('extended', $var, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['extended_change'], $sitemap_settings['extended_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
if (Registry::isExist(“addons.news_and_emails”) && $sitemap_settings['include_news'] == 'Y') {
$news = db_get_fields(“SELECT news_id FROM ?:news WHERE status = 'A' ?p”, fn_get_google_sitemap_company_condition('?:news.company_id'));
if (!empty($news)) {
foreach ($news as $news_id) {
$links = fn_google_sitemap_generate_link('news', $news_id, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['news_change'], $sitemap_settings['news_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
}
if (fn_allowed_for('MULTIVENDOR') && $sitemap_settings['include_companies'] == 'Y') {
$companies = db_get_fields(“SELECT company_id FROM ?:companies WHERE status = 'A' ?p”, fn_get_google_sitemap_company_condition('?:companies.company_id'));
if (!empty($companies)) {
foreach ($companies as $company_id) {
$links = fn_google_sitemap_generate_link('companies', $company_id, $languages);
$item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['companies_change'], $sitemap_settings['companies_priority']);
fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot);
fwrite($file, $item);
}
}
}
fn_set_hook('sitemap_item', $sitemap_settings, $file, $lmod, $link_counter, $file_counter);
fwrite($file, $simple_foot);
fclose($file);
if ($file_counter == 1) {
fn_rename($cache_path . 'sitemap' . $file_counter . '.xml', $cache_path . 'sitemap.xml');
} else {
// Make a map index file
$maps = '';
$seo_enabled = Registry::get('addons.seo.status') == 'A' ? true : false;
for ($i = 1; $i <= $file_counter; $i++) {
if ($seo_enabled) {
$name = $location . '/sitemap' . $i . '.xml';
} else {
$name = fn_url('xmlsitemap.view?page=' . $i, 'C', 'http');
}
$name = htmlentities($name);
$maps .= <<
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“www.sitemaps.org - /schemas/sitemap/0.9/
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd”>
$maps
HEAD;
$file = fopen($cache_path . 'sitemap.xml', “wb”);
fwrite($file, $index_map);
fclose($file);
}
$filename = $cache_path . 'sitemap.xml';
if (!empty($map_page)) {
$name = $cache_path . 'sitemap' . $map_page . '.xml';
if (file_exists($name)) {
$filename = $name;
}
}
readfile($filename);
exit();
}
function fn_google_sitemap_check_counter(&$file, &$link_counter, &$file_counter, $links, $header, $footer)
{
$stat = fstat($file);
if ((count($links) + $link_counter) > MAX_URLS_IN_MAP || $stat['size'] >= MAX_SIZE_IN_KBYTES * 1024) {
fwrite($file, $footer);
fclose($file);
$file_counter++;
$filename = fn_get_cache_path(false) . 'google_sitemap/sitemap' . $file_counter . '.xml';
$file = fopen($filename, “wb”);
$link_counter = count($links);
fwrite($file, $header);
} else {
$link_counter += count($links);
}
}
function fn_google_sitemap_get_rewrite_rules(&$rewrite_rules, &$prefix, &$extension)
{
$rewrite_rules['!^/sitemap([0-9]).xml$!'] = '$customer_index?dispatch=xmlsitemap.view&page=$matches[1]';
$rewrite_rules['!^' . $prefix . '/sitemap([0-9]).xml$!'] = '$customer_index?dispatch=xmlsitemap.view&page=$matches[2]';
}
```
[/quote]