file node.tpl.php

Default theme implementation to display a node.

Available variables:

  • $title: 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 from user-picture.tpl.php.
  • $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().
  • $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; for example, "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.
  • $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 object. Contains data that may not be safe.
  • $type: Node type; for example, 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.
  • $classes_array: Array of html class attribute values. It is flattened into a string within the variable $classes.
  • $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, "full", "teaser".
  • $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.
  • $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.
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.
  1. <?php
  2. /**
  3. * @file
  4. * Default theme implementation to display a node.
  5. *
  6. * Available variables:
  7. * - $title: the (sanitized) title of the node.
  8. * - $content: An array of node items. Use render($content) to print them all,
  9. * or print a subset such as render($content['field_example']). Use
  10. * hide($content['field_example']) to temporarily suppress the printing of a
  11. * given element.
  12. * - $user_picture: The node author's picture from user-picture.tpl.php.
  13. * - $date: Formatted creation date. Preprocess functions can reformat it by
  14. * calling format_date() with the desired parameters on the $created variable.
  15. * - $name: Themed username of node author output from theme_username().
  16. * - $node_url: Direct URL of the current node.
  17. * - $display_submitted: Whether submission information should be displayed.
  18. * - $submitted: Submission information created from $name and $date during
  19. * template_preprocess_node().
  20. * - $classes: String of classes that can be used to style contextually through
  21. * CSS. It can be manipulated through the variable $classes_array from
  22. * preprocess functions. The default values can be one or more of the
  23. * following:
  24. * - node: The current template type; for example, "theming hook".
  25. * - node-[type]: The current node type. For example, if the node is a
  26. * "Blog entry" it would result in "node-blog". Note that the machine
  27. * name will often be in a short form of the human readable label.
  28. * - node-teaser: Nodes in teaser form.
  29. * - node-preview: Nodes in preview mode.
  30. * The following are controlled through the node publishing options.
  31. * - node-promoted: Nodes promoted to the front page.
  32. * - node-sticky: Nodes ordered above other non-sticky nodes in teaser
  33. * listings.
  34. * - node-unpublished: Unpublished nodes visible only to administrators.
  35. * - $title_prefix (array): An array containing additional output populated by
  36. * modules, intended to be displayed in front of the main title tag that
  37. * appears in the template.
  38. * - $title_suffix (array): An array containing additional output populated by
  39. * modules, intended to be displayed after the main title tag that appears in
  40. * the template.
  41. *
  42. * Other variables:
  43. * - $node: Full node object. Contains data that may not be safe.
  44. * - $type: Node type; for example, story, page, blog, etc.
  45. * - $comment_count: Number of comments attached to the node.
  46. * - $uid: User ID of the node author.
  47. * - $created: Time the node was published formatted in Unix timestamp.
  48. * - $classes_array: Array of html class attribute values. It is flattened
  49. * into a string within the variable $classes.
  50. * - $zebra: Outputs either "even" or "odd". Useful for zebra striping in
  51. * teaser listings.
  52. * - $id: Position of the node. Increments each time it's output.
  53. *
  54. * Node status variables:
  55. * - $view_mode: View mode; for example, "full", "teaser".
  56. * - $teaser: Flag for the teaser state (shortcut for $view_mode == 'teaser').
  57. * - $page: Flag for the full page state.
  58. * - $promote: Flag for front page promotion state.
  59. * - $sticky: Flags for sticky post setting.
  60. * - $status: Flag for published status.
  61. * - $comment: State of comment settings for the node.
  62. * - $readmore: Flags true if the teaser content of the node cannot hold the
  63. * main body content.
  64. * - $is_front: Flags true when presented in the front page.
  65. * - $logged_in: Flags true when the current user is a logged-in member.
  66. * - $is_admin: Flags true when the current user is an administrator.
  67. *
  68. * Field variables: for each field instance attached to the node a corresponding
  69. * variable is defined; for example, $node->body becomes $body. When needing to
  70. * access a field's raw values, developers/themers are strongly encouraged to
  71. * use these variables. Otherwise they will have to explicitly specify the
  72. * desired field language; for example, $node->body['en'], thus overriding any
  73. * language negotiation rule that was previously applied.
  74. *
  75. * @see template_preprocess()
  76. * @see template_preprocess_node()
  77. * @see template_process()
  78. *
  79. * @ingroup templates
  80. */
  81. ?>
  82. <article id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
  83. <?php if ((!$page && !empty($title)) || !empty($title_prefix) || !empty($title_suffix) || $display_submitted): ?>
  84. <header>
  85. <?php print render($title_prefix); ?>
  86. <?php if (!$page && !empty($title)): ?>
  87. <h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2>
  88. <?php endif; ?>
  89. <?php print render($title_suffix); ?>
  90. <?php if ($display_submitted): ?>
  91. <span class="submitted">
  92. <?php print $user_picture; ?>
  93. <?php print $submitted; ?>
  94. </span>
  95. <?php endif; ?>
  96. </header>
  97. <?php endif; ?>
  98. <?php
  99. // Hide comments, tags, and links now so that we can render them later.
  100. hide($content['comments']);
  101. hide($content['links']);
  102. hide($content['field_tags']);
  103. print render($content);
  104. ?>
  105. <?php
  106. // Only display the wrapper div if there are tags or links.
  107. $field_tags = render($content['field_tags']);
  108. $links = render($content['links']);
  109. if ($field_tags || $links):
  110. ?>
  111. <footer>
  112. <?php print $field_tags; ?>
  113. <?php print $links; ?>
  114. </footer>
  115. <?php endif; ?>
  116. <?php print render($content['comments']); ?>
  117. </article>

Related topics