For your convenience this is the code from my site. You can use it in a code block if it suits you. This is the page it produces.
http://stormvisions.com/pages/help/site-map.phpecho <<<FOO
<style type="text/css">
div.left ul, div.left li, div.left span, div.left * {
text-align: left !important;
font-weight: 500;
font-family: helvetica, arial;
font-size: 10pt;
}
ul.sitemap li {
text-align: left;
padding-top: 0.5em;
}
ul.sitemap .menu-current> span.stuff {
display: block;
background-color: #E0E0FF;
border-right: 1px solid blue;
}
div.left { text-align: left !important; }
</style>
<h1>Sitemap</h1>
<div class="left">
FOO;
show_menu2(SM2_ALLMENU, SM2_ROOT, SM2_ALL, SM2_ALL|SM2_ALLINFO, '[li]<span class="content">[a][page_title]</a> (menu: [a][menu_title]</a>)<br /><i>[description]</i><br /></span>', false, '<ul class="sitemap [class]">');
echo "</div>";
There was also a bit of code someone posted somewhere for an A-Z sitemap. This produces this page.
http://stormvisions.com/pages/help/sitemap-a-z.php$private_sql = "";
$private_where_sql = "NOT visibility = 'private'";
global $database;
global $private_sql;
global $private_where_sql;
global $shown;
$shown="z";
//SELECT distinct LEFT(nom, 1) AS firstletter FROM t_pilote order by firstletter ASC
// Check if there are any pages to show
echo '<h2>Pages A to Z</h2>';
$alpha = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$query_menu = $database->query("SELECT distinct LEFT(page_title, 1) AS firstletter FROM ".TABLE_PREFIX."pages order by firstletter ASC");
$page = $query_menu->fetchRow();
for($i=0;$i<count($alpha);$i++){
if($page['firstletter']!=$alpha[$i]){
echo' | '.$alpha[$i].'';
}else{
echo' | <a href="#'.$alpha[$i].'">'.$alpha[$i].'</a>';
$page = $query_menu->fetchRow();
}
}
echo" |<br><br>";
// Query pages
$query_menu = $database->query("SELECT page_id,parent,link,page_title,menu_title,description,keywords,modified_when,modified_by,link,target,visibility FROM ".TABLE_PREFIX."pages WHERE $private_where_sql ORDER BY page_title ASC");
if($query_menu->numRows() > 0) {
while($page = $query_menu->fetchRow()) {
$firstletter = substr($page['page_title'], 0, 1);
if ($firstletter != $shown){
echo '<h3><a name="'.strtoupper($firstletter).'" id="'.strtoupper($firstletter).'">'.$firstletter.'</a></h3>';
echo'<br />';
$shown = $firstletter;
}
echo '<a href="';
echo page_link($page['link']);
echo '">';
echo $page['page_title'];
echo'</a>';
echo '<br />';
}
}
I can't answer questions about this but maybe it is enough to solve your problem.