This is actually REALLY straight forward. In the case of "teasers" and "nodes" views if you print_r($nodes) what you'll get is a nid, and a created time for each node. (I'm sorting by node creation time, which might explain why it's there I tend to suspect that's the reason for its presence.) So we drop $nodes into a foreach loop and then node_load each on individually. Run it through node_view, store that to $output and then return $output. In this case I've added 2 lines to the bare-minimum you'd need to run this, and those are my extra divs around each node. This allows me to put each node into it's own column that takes up 30% of the real estate of it's containing div.
<?php
function garland_views_view_teasers_News($view, $nodes, $type, $teasers = true, $links = true) {
// important to note that "News" is uppercase in the function name. The function name IS case-sensative
foreach ($nodes as $n) {
$node = node_load($n->nid);
$output .= '<div style="float:left; width:30%;margin-left:1.5%;margin-right:1.5%;">'; // I could have just as easily assigned a class here, I chose not to
$output .= node_view($node, $teasers, false, $links);
$output .= '</div>';
}
return $output;
}
?>