node.tpl.php 4.95 KB
Newer Older
1 2
<?php
// $Id$
3 4

/**
5 6
 * @file
 * Default theme implementation to display a node.
7 8 9
 *
 * Available variables:
 * - $title: the (sanitized) title of the node.
10 11
 * - $content: An array of node items. Use render($content) to print them all, or
 *   print a subset such as render($content['field_example']). Use
12
 *   hide($content['field_example']) to temporarily suppress the printing of a
13
 *   given element.
14
 * - $user_picture: The node author's picture from user-picture.tpl.php.
15 16
 * - $date: Formatted creation date. Preprocess functions can reformat it by
 *   calling format_date() with the desired parameters on the $created variable.
17
 * - $name: Themed username of node author output from theme_username().
18 19
 * - $node_url: Direct url of the current node.
 * - $terms: the themed list of taxonomy term links output from theme_links().
20
 * - $display_submitted: whether submission information should be displayed.
21
 * - $contextual_links (array): An array of contextual links for the node.
22 23 24 25 26 27 28 29 30 31 32 33 34
 * - $classes: String of classes that can be used to style contextually through
 *   CSS. It can be manipulated through the variable $classes_array from
 *   preprocess functions. The default values can be one or more of the following:
 *   - node: The current template type, i.e., "theming hook".
 *   - node-[type]: The current node type. For example, if the node is a
 *     "Blog entry" it would result in "node-blog". Note that the machine
 *     name will often be in a short form of the human readable label.
 *   - node-teaser: Nodes in teaser form.
 *   - node-preview: Nodes in preview mode.
 *   The following are controlled through the node publishing options.
 *   - node-promoted: Nodes promoted to the front page.
 *   - node-sticky: Nodes ordered above other non-sticky nodes in teaser listings.
 *   - node-unpublished: Unpublished nodes visible only to administrators.
35 36 37 38 39 40 41
 *
 * Other variables:
 * - $node: Full node object. Contains data that may not be safe.
 * - $type: Node type, i.e. story, page, blog, etc.
 * - $comment_count: Number of comments attached to the node.
 * - $uid: User ID of the node author.
 * - $created: Time the node was published formatted in Unix timestamp.
42 43
 * - $classes_array: Array of html class attribute values. It is flattened
 *   into a string within the variable $classes.
44 45 46 47 48
 * - $zebra: Outputs either "even" or "odd". Useful for zebra striping in
 *   teaser listings.
 * - $id: Position of the node. Increments each time it's output.
 *
 * Node status variables:
49 50
 * - $build_mode: Build mode, e.g. 'full', 'teaser'...
 * - $teaser: Flag for the teaser state (shortcut for $build_mode == 'teaser').
51 52 53 54 55 56 57 58 59 60 61
 * - $page: Flag for the full page state.
 * - $promote: Flag for front page promotion state.
 * - $sticky: Flags for sticky post setting.
 * - $status: Flag for published status.
 * - $comment: State of comment settings for the node.
 * - $readmore: Flags true if the teaser content of the node cannot hold the
 *   main body content.
 * - $is_front: Flags true when presented in the front page.
 * - $logged_in: Flags true when the current user is a logged-in member.
 * - $is_admin: Flags true when the current user is an administrator.
 *
62 63 64 65 66 67 68
 * Field variables: for each field instance attached to the node a corresponding
 * variable is defined, e.g. $node->body becomes $body. When needing to access
 * a field's raw values, developers/themers are strongly encouraged to use these
 * variables. Otherwise they will have to explicitly specify the desired field
 * language, e.g. $node->body['en'], thus overriding any language negotiation
 * rule that was previously applied.
 *
69 70
 * @see template_preprocess()
 * @see template_preprocess_node()
71
 * @see template_process()
72
 */
73
?>
74
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
75

76
  <?php print $user_picture; ?>
77

78
  <?php if (!$page && !empty($contextual_links)): ?>
79 80 81
    <?php print render($contextual_links); ?>
  <?php endif; ?>

82
  <?php if (!$page): ?>
83
    <h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $node_title; ?></a></h2>
84 85
  <?php endif; ?>

86
  <?php if ($display_submitted || !empty($content['links']['terms'])): ?>
87
    <div class="meta">
88 89 90
      <?php if ($display_submitted): ?>
        <span class="submitted">
          <?php
91 92
            print t('Submitted by !username on !datetime',
              array('!username' => $name, '!datetime' => $date));
93 94
          ?>
        </span>
95 96 97 98 99 100 101
      <?php endif; ?>

      <?php if (!empty($content['links']['terms'])): ?>
        <div class="terms terms-inline"><?php print render($content['links']['terms']); ?></div>
      <?php endif; ?>
    </div>
  <?php endif; ?>
102

103
  <div class="content"<?php print $content_attributes; ?>>
104 105 106 107
    <?php
      // We hide the comments and links now so that we can render them later.
      hide($content['comments']);
      hide($content['links']);
108
      print render($content);
109
    ?>
110 111
  </div>

112
  <?php print render($content['links']); ?>
Dries's avatar
Dries committed
113

114
  <?php print render($content['comments']); ?>
Dries's avatar
Dries committed
115

116
</div>