Default theme implementation to display a node.
Available variables:
The following are controlled through the node publishing options.
In field variables, 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 may have been applied previously.
@todo Remove the id attribute (or make it a class), because if that gets rendered twice on a page this is invalid CSS for example: two lists in different view modes.
- {#
- /**
- * @file
- * Default theme implementation to display a node.
- *
- * Available variables:
- * - node: Full node entity.
- * - type: The type of the node, for example, "page" or "article".
- * - uid: The user ID of the node author.
- * - created: Formatted creation date. Preprocess functions can reformat it by
- * calling format_date() with the desired parameters on
- * $variables['node']->created.
- * - promote: Whether the node is promoted to the front page.
- * - sticky: Whether the node is 'sticky'. Sticky nodes are ordered above
- * other non-sticky nodes in teaser listings
- * - status: Whether the node is published.
- * - comment: A value representing the comment status of the current node. May
- * be one of the following:
- * - 0: The comment form and any existing comments are hidden.
- * - 1: Comments are closed. No new comments may be posted, but existing
- * comments are displayed.
- * - 2: Comments are open on this node.
- * - comment_count: Number of comments attached to the node.
- * - label: The title of the node.
- * - content: All node items. Use {{ content }} to print them all,
- * or print a subset such as {{ 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.html.twig.
- * - date: Formatted creation date. Preprocess functions can reformat it by
- * calling format_date() with the desired parameters on
- * $variables['created'].
- * - 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: HTML attributes for the containing element.
- * The attributes.class element may contain one or more of the following
- * classes:
- * - node: The current template type (also known as a "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, a teaser
- * would result in: "view-mode-teaser", and full: "view-mode-full".
- * - preview: Whether a node is in preview mode.
- * The following are controlled through the node publishing options.
- * - promoted: Appears on nodes promoted to the front page.
- * - sticky: Appears on nodes ordered above other non-sticky nodes in teaser
- * listings.
- * - unpublished: Appears on unpublished nodes visible only to site admins.
- * - title_prefix: Additional output populated by modules, intended to be
- * displayed in front of the main title tag that appears in the template.
- * - title_suffix: Additional output populated by modules, intended to be
- * displayed after the main title tag that appears in the template.
- * - view_mode: View mode; for example, "teaser" or "full".
- * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
- * - page: Flag for the full page state. Will be true if view_mode is 'full'.
- * - readmore: Flag for more state. Will be true if the teaser content of the
- * node cannot hold the main body content.
- * - is_front: Flag for front. Will be true when presented on the front page.
- * - logged_in: Flag for authenticated user status. Will be true when the
- * current user is a logged-in member.
- * - is_admin: Flag for admin user status. Will be true when the current user
- * is an administrator.
- *
- * In field variables, 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 may have been applied previously.
- *
- * @see template_preprocess()
- * @see template_preprocess_node()
- *
- * @todo Remove the id attribute (or make it a class), because if that gets
- * rendered twice on a page this is invalid CSS for example: two lists
- * in different view modes.
- *
- * @ingroup themeable
- */
- #}
- <article id="node-{{ node.nid }}" class="{{ attributes.class }} clearfix"{{ attributes }}>
-
- {{ title_prefix }}
- {% if not page %}
- <h2{{ title_attributes }}>
- <a href="{{ node_url }}" rel="bookmark">{{ label }}</a>
- </h2>
- {% endif %}
- {{ title_suffix }}
-
- {% if display_submitted %}
- <footer>
- {{ user_picture }}
- <p class="submitted">{{ submitted }}</p>
- </footer>
- {% endif %}
-
- <div{{ content_attributes }}>
- {# We hide the comments and links now so that we can render them later. #}
- {% hide(content.comments) %}
- {% hide(content.links) %}
- {{ content }}
- </div>
-
- {{ content.links }}
- {{ content.comments }}
-
- </article>