Search code examples
drupaldrupal-6drupal-themesdrupal-templates

Drupal: Extract teaser in full view


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?


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>';
    }
    ?>