node.tpl.php

Bartik's theme implementation to display a node.

Available variables:

  • $label: the (sanitized) title of the node.
  • $content: An array of node items. Use render($content) to print them all, or print a subset such as render($content['field_example']). Use hide($content['field_example']) to temporarily suppress the printing of a given element.
  • $user_picture: The node author's picture. Use render() when printing.
  • $date: Formatted creation date. Preprocess functions can reformat it by calling format_date() with the desired parameters on the $created variable.
  • $name: Themed username of node author output from theme_username().
  • $node_url: Direct URL of the current node.
  • $display_submitted: Whether submission information should be displayed.
  • $submitted: Submission information created from $name and $date during template_preprocess_node().
  • $attributes: An instance of Attributes class that can be manipulated as an array and printed as a string. It includes the 'class' information, which includes:

    • node: The current template type; for example, "theming hook".
    • node-[type]: The current node type. For example, if the node is a "Article" it would result in "node-article". Note that the machine name will often be in a short form of the human readable label.
    • view-mode-[view_mode]: The View Mode of the node; for example, "teaser" or "full".
    • preview: Nodes in preview mode.

    The following are controlled through the node publishing options.

    • promoted: Nodes promoted to the front page.
    • sticky: Nodes ordered above other non-sticky nodes in teaser listings.
    • unpublished: Unpublished nodes visible only to administrators.
  • $title_prefix (array): An array containing additional output populated by modules, intended to be displayed in front of the main title tag that appears in the template.
  • $title_suffix (array): An array containing additional output populated by modules, intended to be displayed after the main title tag that appears in the template.

Other variables:

  • $node: Full node entity. Contains data that may not be safe.
  • $type: Node type; for example, page, article, 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.
  • $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:

  • $view_mode: View mode; for example, "teaser" or "full".
  • $teaser: Flag for the teaser state (shortcut for $view_mode == 'teaser').
  • $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.
  • $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.

Field variables: For each field instance attached to the node a corresponding variable is defined; for example, $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; for example, $node->body['en'], thus overriding any language negotiation rule that was previously applied.

See also

template_preprocess()

template_preprocess_node()

template_process()

File

drupal/core/themes/bartik/templates/node.tpl.php
View source
<?php

/**
 * @file
 * Bartik's theme implementation to display a node.
 *
 * Available variables:
 * - $label: the (sanitized) title of the node.
 * - $content: An array of node items. Use render($content) to print them all,
 *   or print a subset such as render($content['field_example']). Use
 *   hide($content['field_example']) to temporarily suppress the printing of a
 *   given element.
 * - $user_picture: The node author's picture. Use render() when printing.
 * - $date: Formatted creation date. Preprocess functions can reformat it by
 *   calling format_date() with the desired parameters on the $created variable.
 * - $name: Themed username of node author output from theme_username().
 * - $node_url: Direct URL of the current node.
 * - $display_submitted: Whether submission information should be displayed.
 * - $submitted: Submission information created from $name and $date during
 *   template_preprocess_node().
 * - $attributes: An instance of Attributes class that can be manipulated as an
 *    array and printed as a string.
 *    It includes the 'class' information, which includes:
 *   - node: The current template type; for example, "theming hook".
 *   - node-[type]: The current node type. For example, if the node is a
 *     "Article" it would result in "node-article". Note that the machine
 *     name will often be in a short form of the human readable label.
 *   - view-mode-[view_mode]: The View Mode of the node; for example, "teaser"
 *     or "full".
 *   - preview: Nodes in preview mode.
 *   The following are controlled through the node publishing options.
 *   - promoted: Nodes promoted to the front page.
 *   - sticky: Nodes ordered above other non-sticky nodes in teaser
 *     listings.
 *   - unpublished: Unpublished nodes visible only to administrators.
 * - $title_prefix (array): An array containing additional output populated by
 *   modules, intended to be displayed in front of the main title tag that
 *   appears in the template.
 * - $title_suffix (array): An array containing additional output populated by
 *   modules, intended to be displayed after the main title tag that appears in
 *   the template.
 *
 * Other variables:
 * - $node: Full node entity. Contains data that may not be safe.
 * - $type: Node type; for example, page, article, 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.
 * - $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:
 * - $view_mode: View mode; for example, "teaser" or "full".
 * - $teaser: Flag for the teaser state (shortcut for $view_mode == 'teaser').
 * - $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.
 * - $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.
 *
 * Field variables: For each field instance attached to the node a
 * corresponding variable is defined; for example, $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; for example, $node->body['en'], thus
 * overriding any language negotiation rule that was previously applied.
 *
 * @see template_preprocess()
 * @see template_preprocess_node()
 * @see template_process()
 *
 * @ingroup themeable
 */
?>
<div id="node-<?php

print $node->nid;
?>" class="<?php

print $attributes['class'];
?> clearfix"<?php

print $attributes;
?>>

  <?php

print render($title_prefix);
?>
  <?php

if (!$page) {
  ?>
    <h2<?php

  print $title_attributes;
  ?>>
      <a href="<?php

  print $node_url;
  ?>"><?php

  print $label;
  ?></a>
    </h2>
  <?php

}
?>
  <?php

print render($title_suffix);
?>

  <?php

if ($display_submitted) {
  ?>
    <div class="meta submitted">
      <?php

  print render($user_picture);
  ?>
      <?php

  print $submitted;
  ?>
    </div>
  <?php

}
?>

  <div class="content clearfix"<?php

print $content_attributes;
?>>
    <?php


// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
print render($content);
?>
  </div>

  <?php


// Remove the "Add new comment" link on the teaser page or if the comment
// form is being displayed on the same page.
if ($teaser || !empty($content['comments']['comment_form'])) {
  unset($content['links']['comment']['#links']['comment-add']);
}

// Only display the wrapper div if there are links.
$links = render($content['links']);
if ($links) {
  ?>
    <div class="link-wrapper">
      <?php

  print $links;
  ?>
    </div>
  <?php

}
?>

  <?php

print render($content['comments']);
?>

</div>

Related topics