Automatische Sitemap generieren

Um Suchmaschinen zu helfen, die eigene Website zu durchsuchen, kann man eine Sitemap zur Verfügung stellen. Das ist nichts anderes als eine gezippte Textdatei, in der die URLs aller zu erfassenden Seiten stehen, durch einen Zeilenumbruch getrennt.

Mit der <we:listview /> ist es ein Leichtes, diese Sitemap dynamisch zur Laufzeit zu erstellen:


<we:ifEditmode>
    <aside>
        Diese Datei liest alle durchsuchbaren webEdition-Seiten des angegebenen
        Verzeichnisses aus und gibt sie in der Voransicht als Linkliste aus,
        damit man ggf. unerwünschte Seiten in webEdition öffnen und parken kann.
        
        In der Live-Ansicht erstellt sie eine Liste der URLs mit der angegebenen
        Domain und zippt die Liste ins von Google erwartete GZ-Format.
        <hr />
    </aside>
    Sitemap in Verzeichnis:
    <we:href name="folder" type="int" file="false" directory="true" /><br />
    Zu verwendende Domain (falls nicht <?=$_SERVER['HTTP_HOST']?>):<br />
    <we:input name="domain" type="text" size="50" placeholder="www.example.com"/>
</we:ifEditmode><we:ifNotEditmode><we:input name="domain" type="text" to="global" nameto="domain"/><we:href name="folder" to="global" nameto="folder" /><?php
    if( '' != $GLOBALS['domain'] ) {
        $domain = $GLOBALS['domain'];
    } else {
        $domain = $_SERVER['HTTP_HOST'];
    }
    $folder_id = path_to_id($GLOBALS[folder]);
    $sitemap = '';
    ?><we:ifNotWebEdition><we:listview type="document" name="sitemap" order="we_filename" searchable="true" workspaceID="$folder_id" contenttypes="text/webedition"><we:repeat><we:field name="we_path" hyperlink="false" to="global" nameto="url"/><?php
$sitemap .= "http://{$domain}{$GLOBALS[url]}\r";
?></we:repeat></we:listview><?php
$file_name = 'sitemap.txt';
header('content-type: application/x-gzip');
header('Content-Disposition: attachment; filename="'.$file_name.'.gz"');
$gzdata = gzencode($sitemap, 9);
echo $gzdata;
exit();
?>
    <we:else />
        <h1>Links in der Sitemap:</h1>
        <we:listview type="document" name="sitemap" order="we_filename" searchable="true" workspaceID="$folder_id" contenttypes="text/webedition">
            <we:repeat>
                <we:field name="we_path" hyperlink="true"/><br />
            </we:repeat>
        </we:listview>
    </we:ifNotWebEdition>
</we:ifNotEditmode>