Question

How can I split the teaser from the rest of the content in the node.tpl.php to wrap the teaser text in special markup?

Was it helpful?

Solution

You could preprocess the theme variables to retrieve the teaser and store it separately, otherwise Drupal handles it internally and won't give you a choice.

Here is the code: http://www.mydiary.digiprosoft.com/?p=244 and below are the highlights from that link.


In template.php

function phptemplate_preprocess_node(&$variables) {
    // we like to display teasers on the node view pages in a different style,
    // but only if they were NOT set to “show summary on full view” (which seems
    // backward, but the implication with that checkbox is that the teaser is
    // PART of the node’s body, instead of an actual summary of the entire
    // node’s body). if a node’s unbuilt body starts with , then
    // a teaser has been manually set, and “show summary” is not checked.
    if ($variables['page'] == TRUE) { // only do this on full page views.
        $node = node_load($variables['nid']); // we reload the node because
        // by the time it gets here has already been filtered out.
        // this if logic stolen from node.module’s node_teaser_include_verify().
        if (strpos($node->body, '') === 0) {
            $variables['style_teaser_differently'] = TRUE;
            $variables['teaser'] = check_markup($node->teaser, $node->format, FALSE);
        }
    }
}

In node.tpl.php

<?php
    if ($style_teaser_differently){
        print '<div class="fullview-teaser">'.$teaser.'<div>';
}
?>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top