I actually ended up hacking the core Structure module to do this. Code example below.
mod.structure.php around line 834 add:
//
// Child IDs function
// Returns a string of IDs for a given parent
//
function child_ids() {
global $IN, $PREFS, $DB, $TMPL;
$site_pages = $PREFS->ini('site_pages');
// Fetch our parent ID, or if none default to the current page
$parent = $TMPL->fetch_param('entry_id');
if (!$parent) {
// Find the parent in the site pages array using URL
$site_pages = $PREFS->ini('site_pages');
$parent = array_search($IN->URI, $site_pages['uris']);
}
// Grab the delimiter, or default to a pipe
$delimiter = $TMPL->fetch_param('delimiter');
$delimiter = $delimiter ? $delimiter : '|';
// There's bound to be a better way to do this using Structure's pre-existing logic
$results = $DB->query("SELECT entry_id FROM exp_structure WHERE parent_id = '$parent' ORDER BY lft ASC");
$entries = array();
if ($results->num_rows > 0) {
foreach($results->result as $row) {
$entries[] = $row['entry_id'];
}
}
return implode($delimiter, $entries);
}
//
Usage:
{exp:weblog:entries dynamic="off" fixed_order="{exp:structure:child_ids}"}
{!-- output info here --}
{/exp:weblog:entries}
You can specify two things explicitly: the entry_id for the top-level parent whose children you want to display (defaults to current page, assuming it’s a Structure page), and the delimiter for the string of IDs (defaults to “|”):
{exp:structure:child_ids entry_id="3" delimiter="|"}
There’s probably issues with it, but it’s been working great so far. I’ve submitted the idea to Travis (the Structure author) and he said that they’re likely to have something similar (if not exactly alike) in Structure 2.0. No idea when that’s likely to come out, though.
If you use the hack and find a problem with it, let me know so I can fix my own sites. 