I've got the <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/">Google Sitemap Generator</a> WordPress plugin version 3.1.0.1 working on Lyceum 1.0.3. You can install it as a system plugin and it will allow each blog to create it's own site map. There are some issues. You need to make sure you specify a different sitemap.xml name for each blog so they don't overwrite each other. Also it's best to turn off the automatic creation of robots.txt because each different blog will overwrite it to only point at its sitemap.
All I did was modify the query againt the database in sitemap-core.php to retrieve the posts to use a join in order to extract only the posts from a particular blog. To do this I modified just the BuildSitemap function of the GoogleSitemapGenerator class.
I changed the first line of the function to include the global variable $blog:
function BuildSitemap() { global $wpdb, $posts, $wp_version, $blog;
I then defined a variable $join to include the two inner joins necessary to find posts only belonging to a single blog. I added this before the $sql variable was defined, and then made sure to add the join variable to the query before the beginning of the WHERE clause.
$join="INNER JOIN post2cat ON (post2cat.post_id = posts.ID) INNER JOIN categories ON (post2cat.category_id = categories.cat_ID)";
if ( !$alloptions ) { //$suppress = $wpdb->suppress_errors(); if ( !$blogoptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes' AND blog = '$blog'" ) ) $blogoptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE blog = '$blog'" ); $blogoptions = array(); $systemoptions = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options WHERE option_domain = 'system'"); //$wpdb->suppress_errors($suppress); $alloptions_db = array_merge($blogoptions, $systemoptions); //$alloptions = array(); foreach ( (array) $alloptions_db as $o ) $alloptions[$o->option_name] = $o->option_value; wp_cache_add( 'alloptions', $alloptions, 'options' ); } return $alloptions; }
I also grabbed cron.php from a newer version of wordpress and put it in the wp-includes directory. Adding cron.php is only necessary if you enable the option to build the sitemap as a background process.