sitemap must be in: http://www.brambring.nl/sitemap.xml.gz
place the file in the cookbook or local directory
and include the file from your farmconfig.php or config.php
include_once("$FarmD/cookbook/sitemap.php");
Then add the URL to your sitemap in the google webform or ping google
automatic google ping is not implemented yet.
regards
bram
http://www.brambring.nl
$Log: sitemap.php,v $
Revision 1.7 2005/12/29 10:26:50 pts00065
* support EnablePageListProtect
* Added Site to exclude pattern
*/
SDV($LastModFile, "$WorkDir/.lastmod"); # same as in caching
SDV($SitemapFile, "sitemap.xml.gz"); #will need write access must be in root dir. Ensure dir is writable or create (symbolic) link
SDV($HandleActions['sitemap'], 'HandleSitemap'); # it is not usefull to have both an action
// and automatic creation ( SitemapDelay >= 0
SDV($SitemapDelay, 3600); # Seconds to wait after last edit set to -1 to disable automatic generation
SDV($SitemapSquelch, 12*3600); # Squelch between generations of sitemap
SDVA($SitemapSearchPatterns, array());
$SitemapSearchPatterns[] = '!\.(All)?Recent(Changes|Uploads|Pages)$!';
$SitemapSearchPatterns[] = '!\.Group(Print)?(Header|Footer|Attributes)$!';
$SitemapSearchPatterns[] = '!^PmWiki\.!';
$SitemapSearchPatterns[] = '!^Site\.!';
$SitemapSearchPatterns[] = '!\.SideBar!';
SDV($SitemapMaxItems, 50000); # maximum items to display defined by google
SDV($SitemapMaxSize, 10); # maximum size is 10 Mbytes TODO
SDV($SitemapPing, "http://www.google.com/"); # Use ping with long SitemapDelay (like 24*60*60 ) TODO
// SDV($SitemapTimeFmt,'%Y-%m-%dT%H:%M:%sZ'); # seems to break in current version of google
SDV($SitemapTimeFmt, '%Y-%m-%d');
SDV($SiteMapItems, array());
SDV($SitemapChannelFmt, '
');
SDV($SitemapItemFmt, '
$PageUrl
$SitemapItemPubDate
$SitemapChangeFreq
$SitemapPriority
');
SDV($HandleSitemapFmt, array(&$SitemapChannelFmt, &$SitemapItems, ''));
if ( $action == 'browse' ) {
if ($SitemapDelay >= 0) {
$l = @filemtime($LastModFile);
$s = @filemtime($SitemapFile);
if ((($Now - $l) > $SitemapDelay) && ($l > $s) && (($Now - $s) > $SitemapSquelch)) {
$fp = @fopen($SitemapFile, "w");
if ($fp) {
ob_start();
MakeSitemap();
$x = gzencode (ob_get_clean(), 9);
fwrite($fp, $x);
fclose($fp);
}
}
}
}
function HandleSitemap()
{
header("Content-type: text/xml");
MakeSitemap();
exit;
}
function MakeSitemap()
{
global $SitemapMaxItems, $SitemapChannelFmt, $SitemapTimeFmt,
$SitemapItems, $SitemapItemFmt, $SearchPatterns,$FarmD,
$EnablePageListProtect,
$HandleSitemapFmt, $FmtV, $SitemapSearchPatterns, $Now;
global $EntitiesTable;
if (IsEnabled($EnablePageListProtect, 1)) $readf = 1000;
$t = array();
$t = @ListPages($SitemapSearchPatterns);
$daily_weekly = 60 * 60 * 24 * 6; #TODO
foreach ($t as $i => $pn) {
$page= ($readf >= 1000)
? RetrieveAuthPage($pn, 'read', false, READPAGE_CURRENT)
: ReadPage($pn, READPAGE_CURRENT);
if (!$page) continue;
// foreach ( $page as $k => $l ) { print "$k == $l
\n"; }
if ( (count($SitemapItems) > $SitemapMaxItems)) continue;
$FmtV['$SitemapChangeFreq'] = ($Now - $page['time'] < $daily_weekly)?'daily':'weekly'; #TODO
$FmtV['$SitemapPriority'] = '0.5'; #TODO
$FmtV['$SitemapItemPubDate'] = gmstrftime($SitemapTimeFmt, $page['time']);
$SitemapItems[] = FmtPageName($SitemapItemFmt, $page['name']);
}
#PrintFmt('', str_replace(array_keys($EntitiesTable), array_values($EntitiesTable), $HandleSitemapFmt));
PrintFmt('', $HandleSitemapFmt);
}