node.tpl.php

  1. drupal
    1. 4.7 node.tpl.php
    2. 4.7 node.tpl.php
    3. 4.7 node.tpl.php
    4. 5 node.tpl.php
    5. 5 node.tpl.php
    6. 5 node.tpl.php
    7. 5 node.tpl.php
    8. 6 node.tpl.php
    9. 6 node.tpl.php
    10. 6 node.tpl.php
    11. 6 node.tpl.php
    12. 7 node.tpl.php
    13. 7 node.tpl.php
    14. 7 node.tpl.php
    15. 8 node.tpl.php
    16. 8 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, 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.
  • $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, 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.
  • $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, e.g. '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, 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.

See also

template_preprocess()

template_preprocess_node()

template_process()

View source
  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, i.e., "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, i.e. 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, e.g. '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, e.g. $node->body becomes $body. When needing to access
  70. * a field's raw values, developers/themers are strongly encouraged to use these
  71. * variables. Otherwise they will have to explicitly specify the desired field
  72. * language, e.g. $node->body['en'], thus overriding any language negotiation
  73. * rule that was previously applied.
  74. *
  75. * @see template_preprocess()
  76. * @see template_preprocess_node()
  77. * @see template_process()
  78. */
  79. ?>
  80. <div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
  81. <?php print $user_picture; ?>
  82. <?php print render($title_prefix); ?>
  83. <?php if (!$page): ?>
  84. <h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2>
  85. <?php endif; ?>
  86. <?php print render($title_suffix); ?>
  87. <?php if ($display_submitted): ?>
  88. <div class="submitted">
  89. <?php print $submitted; ?>
  90. </div>
  91. <?php endif; ?>
  92. <div class="content"<?php print $content_attributes; ?>>
  93. <?php
  94. // We hide the comments and links now so that we can render them later.
  95. hide($content['comments']);
  96. hide($content['links']);
  97. print render($content);
  98. ?>
  99. </div>
  100. <?php print render($content['links']); ?>
  101. <?php print render($content['comments']); ?>
  102. </div>

Comments

Accessing Database Values in of Fields

If you need to access the original value (such as an integer) of a field (using the new fields api) as stored in the database (not the displayed value), you can access it from the $contents array.

Assuming you have a field called "work-type," where you want to access the number used in the database, instead of the text that will be visible to the user, you can access it like so:

$content['field_work-type']['#items']['0']['value'];

This assumes that there is only one item for this variable, if multilple, then you might use ['#items']['1']['value'] etc
**This may have negative security implications, if the values aren't sanitized (text etc.)

What if you want to print all

What if you want to print all items available (as in you don't know exactly how many there will be?)

Also suppose you wanted to get the URL to a file upload field?

The $content array is

The $content array is actually a render array, so I suppose you can render the whole thing at once with

<?php
render
($content);
?>
or just a part with
<?php
render
($content['myfield']);
?>

More on render arrays can be found on http://drupal.org/node/930760.

The only problem I have with

The only problem I have with this is that it prints the field label and the field-content. I really am looking for a way to just print the field content from a specific field. Any ideas anyone?

hide labels

You can go to admin -> structure -> content types then choose "manage display" of the chosen content. From there you can choose how the label should be displayed, in your case you want it to be ''.

Hide the label

In that case you can hide the label before rendering it:

$content['body']['#label_display'] = 'hidden';
print render($content['body']);

Field variables

Why do we still talk about using global $field in the documentation (if developers/themers want to access raw value):

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.

If the solution is to use $content['field_work-type']['#items']['0']['value']; ?

Same question.

Is this deprecated? There's odd behavior when running content printed this way through a node-teaser view, i.e., the content does not show up.

In some cases you can use $language instead of permanently declaring the language with 'und' or the like, which should also be documented. Works fine in the core tpl pages, but fails with a lot of contrib.

Same Question again

I'm just learning templating for templating for Drupal. This seems like a very core need for node templating. It makes me a little nervous to use:

print $content['field_my_variable']['#items']['0']['value'];

when the documentation seems to state that developers are strongly encouraged to use something like:

print $field_my_variable

What is the recommended way to access field variable raw values?

I'm wondering the same thing.

I'm wondering the same thing. Did you find out what the recommended way of doing this is?

To Get Array Structure

To get the structure , you can try :
print_r($variables)

example :

print_r($node);

print_r($content);

---
Website Development Services

How to : Printing out list field

Suppose I have a CCK (list)field where user can enter x values based on checkboxes that are defined in the syntax key|value

Please enter spoken languages:
en|English
fr|French
du|Dutch
es|Spanish

and then in node--nodetype.tpl.php
render($content['field_contenttype_languages']) just renders a list like this

English
French
Dutch
Spanish

What I want is this English, French, Dutch, Spanish

I know I'm supposed to be able to reach the individual field values with

$content['field_property_languages']['#items']['0']['value'];

but that just renders out "en" in stead of "English"

Comment #'s

On nodes where is says 5 comments...How do I just make it say 5?

Get plain value output per variable

When you really want to take control of the output you can always override \modules\field\theme\field.tpl.php by copy and pasting this file in your theme folder (don't forget to clear Drupal cache after doing so). When you remove all the added HTML you will end up with a plain value minus the additional DIV soup.

After that you can simply call render($content['field_my_variable']) instead of $content['field_my_variable']['#items']['0']['value'] which I agree with some of you above, is really not a nice way of getting the plain value.

Please do understand the consequences of this action. It will mean that you need to take full control of all locations where variables are outputted and place your own HTML and css around them.

render($content['field_my_var

render($content['field_my_variable']) seems to only work on some node theme variables. For instance to render the authors name will now work with

   <?php print render($content['name']); ?>
but does as

<?php print $name; ?>

Custom node.tpl.php - render one field of a referenced node?

Hi. I'm using D7 and Zen, and a custom node.tpl.php file for the first time, so I can theme my nodes of type "post." So I made a file named "node--post.tpl.php," which is working fine, and I'm using

<?php
print render($content['post_author']);
?>

where 'post_author' is a referenced node of content type "author," which has several fields, so the output of the above is the whole "author" node.

My question is this: How do I just pull one field from that referenced node (author) to show on the node page?

I tried this:

<?php
print render($content['field_post_author']=>['field_author_bio']);
?>

to try to get just the "author_bio" field to render. The above has a PHP syntax error, so obviously it doesn't work. But maybe you can see what I'm trying to do? I'm trying to print one field of a referenced node, rather than all of them, which is what you get with

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

Also, if I use this:

<?php
print render($content['field_author_bio']);
?>

I get no output. Any suggestions?

Thanks!
Tim

Edit: It looks like I posted this in the wrong place. Feel free to move or delete it, or maybe tell me where to put it?

tory burch online outlet

Great job friend! I similar your convert. Thanks for sharing

Login or register to post comments