I found this incredibly helpful and wanted to give you props. I've looked through the forum for days and this code ended up being the basis for how I customized my child theme. The result is home/category pages that show the teaser (i.e. up to the more tag if present), and then an automatic excerpt if there is no teaser. I also added a second customization to replace the ellipsis after an auto-excerpt with a "read more" link.
Here's my code in functions.php
<?php //Automatic use of teaser or excerpt for home/category pages. Logic from http://themeshaper.com/forums/topic/using-more-tags-preferentially-with-excerpt-fallback
function childtheme_excerpts($content) { //normally i'd call $post here as that is what thematic uses, but that caused problems with the next line
global $thematic_content_length, $post; //needed to declare the standard $post object
if (is_home() || is_front_page()|| is_category()) {
if ( preg_match('/<!--more(.*?)?-->/', $post->post_content ) ) { //here's where i needed to the $post object. didn't seem to work at all with get_the_content()
$content = get_the_content(more_text());
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
} else {
$content = '';
$content .= get_the_excerpt();
$content = apply_filters('the_excerpt',$content);
}
}
return $content; //send it back to the function. by using $content here i don't monkey with the $post object which was breaking the 'excerpt' and 'full' types. thematic_post will take this variable as the $post variable there and all will be well (as far as i can tell)
}
add_filter('thematic_post', 'childtheme_excerpts');
?>
<?php //If the WordPress automatic "excerpt" is displayed, replace the elipsis with a Read More link
function excerpt_ellipse($text) {
return str_replace('[...]', '...<p>Read More ยป</p>', $text); }
add_filter('get_the_excerpt', 'excerpt_ellipse');
?>
Thanks for putting this out there Helga!