Hallo,
wie bekomme ich das aktuelle Datum in meine Sitemap?
Leider liefert meine WAWI alle Zeiten in den Tabellen mit 000000, das ist nicht schlimm aber die Sitemap hat dadurch immer das Datum:
<lastmod>1970-01-01T01:00:00+01:00</lastmod>[/PHP]
Kann man nicht $date daklarieren/ verwenden und dem das aktuelle Datum geben? [PHP]<?php
/*
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2005 osCommerce
Released under the GNU General Public License
@Author: Raphael Vullriede (
[email protected])
Port to xtCommerce
@Author: Winfried Kaiser (
[email protected])
*/
require('includes/application_top.php');
// if the customer is not logged on, redirect them to the login page
if (!isset($_SESSION['customer_id'])) {
xtc_redirect(xtc_href_link(FILENAME_LOGIN, '', 'NONSSL'));
}
// XML-Specification: https://www.google.com/webmasters/sitemaps/docs/de/protocol.html
define('CHANGEFREQ_CATEGORIES', 'weekly'); // Valid values are "always", "hourly", "daily", "weekly", "monthly", "yearly" and "never".
define('CHANGEFREQ_PRODUCTS', 'daily'); // Valid values are "always", "hourly", "daily", "weekly", "monthly", "yearly" and "never".
define('PRIORITY_CATEGORIES', '1.0');
define('PRIORITY_PRODUCTS', '0.5');
define('MAX_ENTRYS', 50000);
define('MAX_SIZE', 10000000);
define('GOOGLE_URL', 'http://www.google.com/webmasters/sitemaps/ping?sitemap=');
define('SITEMAPINDEX_HEADER', "
<?xml version='1.0' encoding='UTF-8'?>"."\n".'
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84"'."\n".'
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'."\n".'
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84'."\n".'
http://www.google.com/schemas/sitemap/0.84/siteindex.xsd">'."\n"
);
define('SITEMAPINDEX_FOOTER', '</sitemapindex>');
define('SITEMAPINDEX_ENTRY', "\t".'<sitemap>'."\n\t\t".'<loc>%s</loc>'."\n\t\t".'<lastmod>%s</lastmod>'."\n\t".'</sitemap>'."\n");
define('SITEMAP_HEADER', "
<?xml version='1.0' encoding='UTF-8'?>"."\n".'
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"'."\n".'
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'."\n".'
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84'."\n".'
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">'."\n"
);
define('SITEMAP_FOOTER', '</urlset>');
define('SITEMAP_ENTRY', "\t".'<url>'."\n\t\t".'<loc>%s</loc>'."\n\t\t".'<priority>%s</priority>'."\n\t\t".'<lastmod>%s</lastmod>'."\n\t\t".'<changefreq>%s</changefreq>'."\n\t".'</url>'."\n");
$smarty = new Smarty;
$breadcrumb->add('Google Sitemap', xtc_href_link(FILENAME_GOOGLE_SITEMAP, xtc_get_all_get_params(), 'NONSSL'));
// include boxes
require(DIR_FS_CATALOG .'templates/'.CURRENT_TEMPLATE. '/source/boxes.php');
require(DIR_WS_INCLUDES . 'header.php');
include (DIR_WS_MODULES . 'default.php');
define('SITEMAP_CATALOG', HTTP_SERVER.DIR_WS_CATALOG);
$usegzip = false;
$autogenerate = false;
$output_to_file = false;
$notify_google = false;
$notify_url = '';
// request over http or command line?
if (!isset($_SERVER['SERVER_PROTOCOL'])) {
if (count($_SERVER['argv'] > 1)) {
// option p ist only possible of min 1 more option isset
if ( (strlen($_SERVER['argv'][1]) >= 2) && strpos($_SERVER['argv'][1], 'p') !== true) {
$notify_google = true;
$_SERVER['argv'][1] = str_replace('p', '', $_SERVER['argv'][1]);
}
switch($_SERVER['argv'][1]) {
// dump to file
case '-f':
$output_to_file = true;
$filename = $_SERVER['argv'][2];
break;
// dump to compressed file
case '-zf':
$usegzip = true;
$output_to_file = true;
$filename = $_SERVER['argv'][2];
break;
// autogenerate sitemaps. useful for sites with more the 500000 Urls
case '-a':
$autogenerate = true;
break;
// autogenerate sitemaps and use gzip
case '-za':
$autogenerate = true;
$usegzip = true;
break;
}
}
} else {
if (count($_GET) > 0) {
// dump to file
if (isset($_GET['f'])) {
$output_to_file = true;
$filename = $_GET['f'];
}
// use gzip
$usegzip = (isset($_GET['gzip']) && $_GET['gzip'] == true) ? true : false;
// autogenerate sitemaps
$autogenerate = (isset($_GET['auto']) && $_GET['auto'] == true) ? true : false;
// notify google
$notify_google = (isset($_GET['ping']) && $_GET['ping'] == true) ? true : false;
}
}
// use gz... functions for compressed files
if ($usegzip) {
$function_open = 'gzopen';
$function_close = 'gzclose';
$function_write = 'gzwrite';
$file_extension = '.xml.gz';
} else {
$function_open = 'fopen';
$function_close = 'fclose';
$function_write = 'fwrite';
$file_extension = '.xml';
}
$c = 0;
$i = 1;
$sitemap_filename = 'sitemap'.$i.$file_extension;
if ($autogenerate) {
$filename = $sitemap_filename;
}
$autogenerate = $autogenerate || $output_to_file;
if ($autogenerate) {
$fp = $function_open($filename, 'w');
$main_content = "Sitemap-Datei '<b>" . $filename . "</b>' erstellt.";
}
$notify_url = SITEMAP_CATALOG.$sitemap_filename;
output(SITEMAP_HEADER);
$strlen = strlen(SITEMAP_HEADER);
$cat_result = xtc_db_query("
SELECT
c.categories_id,
c.parent_id,
cd.language_id,
UNIX_TIMESTAMP(c.date_added) as date_added,
UNIX_TIMESTAMP(c.last_modified) as last_modified,
l.code
FROM
".TABLE_CATEGORIES." c,
".TABLE_CATEGORIES_DESCRIPTION." cd,
".TABLE_LANGUAGES." l
WHERE
c.categories_id = cd.categories_id AND
cd.language_id = l.languages_id
ORDER by
cd.categories_id
");
$cat_array = array();
if (xtc_db_num_rows($cat_result) > 0) {
while($cat_data = xtc_db_fetch_array($cat_result)) {
$cat_array[$cat_data['categories_id']][$cat_data['code']] = $cat_data;
}
}
reset($cat_array);
foreach($cat_array as $lang_array) {
foreach($lang_array as $cat_id => $cat_data) {
$lang_param = ($cat_data['code'] != DEFAULT_LANGUAGE) ? '&language='.$cat_data['code'] : '';
$date = ($cat_data['last_modified'] != NULL) ? $cat_data['last_modified'] : $cat_data['date_added'];
$string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(xtc_href_link(FILENAME_DEFAULT,
rv_get_path($cat_data['categories_id'], $cat_data['code']).$lang_param, 'NONSSL', false,
SEARCH_ENGINE_FRIENDLY_URLS))) ,PRIORITY_CATEGORIES, iso8601_date($date), CHANGEFREQ_CATEGORIES);
$c_cat_total++;
output_entry();
}
}
$product_result = xtc_db_query("
SELECT
p.products_id,
pd.language_id,
UNIX_TIMESTAMP(p.products_date_added) as products_date_added,
UNIX_TIMESTAMP(p.products_last_modified) as products_last_modified,
l.code
FROM
".TABLE_PRODUCTS." p,
".TABLE_PRODUCTS_DESCRIPTION." pd,
".TABLE_LANGUAGES." l
WHERE
p.products_status='1' AND
p.products_id = pd.products_id AND
pd.language_id = l.languages_id
ORDER BY
p.products_id
");
if (xtc_db_num_rows($product_result) > 0) {
while($product_data = xtc_db_fetch_array($product_result)) {
$lang_param = ($product_data['code'] != DEFAULT_LANGUAGE) ? '&language='.$product_data['code'] : '';
$date = ($product_data['products_last_modified'] != NULL) ?
$product_data['products_last_modified'] : $product_data['products_date_added'];
$string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(xtc_href_link(FILENAME_PRODUCT_INFO,
'products_id='.$product_data['products_id'].$lang_param, 'NONSSL', false, SEARCH_ENGINE_FRIENDLY_URLS))) ,
PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);
$c_prod_total++;
output_entry();
}
}
output(SITEMAP_FOOTER);
if ($autogenerate) {
$function_close($fp);
}
$main_content .= "<br><br>" . $c_cat_total . " <b>Kategorien</b> und " . $c_prod_total . " <b>Produkte</b> exportiert.";
// generates sitemap-index file
if ($autogenerate && $i > 1) {
$sitemap_index_file = 'sitemap_index'.$file_extension;
$main_content = $main_content . "<br><br>Sitemap-Index-Datei '<b>" . $sitemap_index_file . "</b>' erstellt.";
$notify_url = SITEMAP_CATALOG.$sitemap_index_file;
$fp = $function_open('sitemap_index'.$file_extension, 'w');
$function_write($fp, SITEMAPINDEX_HEADER);
for($ii=1; $ii<=$i; $ii++) {
$function_write($fp, sprintf(SITEMAPINDEX_ENTRY, SITEMAP_CATALOG.'sitemap'.$ii.$file_extension, iso8601_date(time())));
}
$function_write($fp, SITEMAPINDEX_FOOTER);
$function_close($fp);
}
if ($notify_google) {
fopen(GOOGLE_URL.urlencode($notify_url), 'r');
$google_response = file_get_contents(GOOGLE_URL . urlencode($notify_url));
$main_content .= "<br><br>Google-Aufruf mit<br><b>" . GOOGLE_URL . '<br>' . $notify_url . "</b><br><br>" .
'<b><font color="red">Google Antwort:</font></b><br>' . $google_response;
}
require(DIR_WS_INCLUDES . 'application_bottom.php');
$smarty->caching = 0;
$smarty->assign('language', $_SESSION['language']);
$smarty->assign('CONTENT_BODY',$main_content);
$smarty->assign('BUTTON_CONTINUE','<a href="' . xtc_href_link(FILENAME_START) . '">' . xtc_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>');
$main_content = $smarty->fetch(CURRENT_TEMPLATE . '/module/google_sitemap.html');
$smarty->assign('main_content',$main_content);
if (!defined(RM)) $smarty->load_filter('output', 'note');
$smarty->display(CURRENT_TEMPLATE . '/index.html');
// < PHP5
if (!function_exists('file_put_contents')) {
function file_put_contents($filename, $content) {
$fp = fopen($filename, 'w');
fwrite($fp, $content);
fclose($fp);
}
}
// < PHP5
function iso8601_date($timestamp) {
if (PHP_VERSION < 5) {
$tzd = date('O',$timestamp);
$tzd = substr(chunk_split($tzd, 3, ':'),0,6);
return date('Y-m-d\TH:i:s', $timestamp) . $tzd;
} else {
return date('c', $timestamp);
}
}
// generates cPath with helper array
function rv_get_path($cat_id, $code) {
global $cat_array;
$my_cat_array = array($cat_id);
while($cat_array[$cat_id][$code]['parent_id'] != 0) {
$my_cat_array[] = $cat_array[$cat_id][$code]['parent_id'];
$cat_id = $cat_array[$cat_id][$code]['parent_id'];
}
return 'cPath='.implode('_', array_reverse($my_cat_array));
}
function output($string) {
global $function_open, $function_close, $function_write, $fp, $autogenerate;
if ($autogenerate) {
$function_write($fp, $string);
} else {
echo $string;
}
}
function output_entry()
{
global $string, $strlen, $c, $autogenerate, $fp, $function_open, $function_close, $main_content, $strlen;
output($string);
$strlen += strlen($string);
$c++;
if ($autogenerate) {
// 500000 entrys or filesize > 10,485,760 - some space for the last entry
if ( $c == MAX_ENTRYS || $strlen >= MAX_SIZE) {
output(SITEMAP_FOOTER);
$function_close($fp);
$c = 0;
$i++;
$filename = 'sitemap'.$i.$file_extension;
$fp = $function_open($filename, 'w');
$main_content = $main_content . "<br>Sitemap-Datei '<b>" . $filename . "</b>' erstellt.";
output(SITEMAP_HEADER);
$strlen = strlen(SITEMAP_HEADER);
}
}
}
?>[/PHP]
Besten Dank
Gruß Haxley