56b20c3305dac0ba4bcf82aa47edc70cbf60a423
[yaffs-website] / web / core / profiles / demo_umami / themes / umami / templates / content / node.html.twig
1 {#
2 /**
3  * @file
4  * Theme override to display a node.
5  *
6  * Available variables:
7  * - node: The node entity with limited access to object properties and methods.
8  *   Only method names starting with "get", "has", or "is" and a few common
9  *   methods such as "id", "label", and "bundle" are available. For example:
10  *   - node.getCreatedTime() will return the node creation timestamp.
11  *   - node.hasField('field_example') returns TRUE if the node bundle includes
12  *     field_example. (This does not indicate the presence of a value in this
13  *     field.)
14  *   - node.isPublished() will return whether the node is published or not.
15  *   Calling other methods, such as node.delete(), will result in an exception.
16  *   See \Drupal\node\Entity\Node for a full list of public properties and
17  *   methods for the node object.
18  * - label: The title of the node.
19  * - content: All node items. Use {{ content }} to print them all,
20  *   or print a subset such as {{ content.field_example }}. Use
21  *   {{ content|without('field_example') }} to temporarily suppress the printing
22  *   of a given child element.
23  * - author_picture: The node author user entity, rendered using the "compact"
24  *   view mode.
25  * - metadata: Metadata for this node.
26  * - date: Themed creation date field.
27  * - author_name: Themed author name field.
28  * - url: Direct URL of the current node.
29  * - display_submitted: Whether submission information should be displayed.
30  * - attributes: HTML attributes for the containing element.
31  *   The attributes.class element may contain one or more of the following
32  *   classes:
33  *   - node: The current template type (also known as a "theming hook").
34  *   - node--type-[type]: The current node type. For example, if the node is an
35  *     "Article" it would result in "node--type-article". Note that the machine
36  *     name will often be in a short form of the human readable label.
37  *   - node--view-mode-[view_mode]: The View Mode of the node; for example, a
38  *     teaser would result in: "node--view-mode-teaser", and
39  *     full: "node--view-mode-full".
40  *   The following are controlled through the node publishing options.
41  *   - node--promoted: Appears on nodes promoted to the front page.
42  *   - node--sticky: Appears on nodes ordered above other non-sticky nodes in
43  *     teaser listings.
44  *   - node--unpublished: Appears on unpublished nodes visible only to site
45  *     admins.
46  * - title_attributes: Same as attributes, except applied to the main title
47  *   tag that appears in the template.
48  * - content_attributes: Same as attributes, except applied to the main
49  *   content tag that appears in the template.
50  * - author_attributes: Same as attributes, except applied to the author of
51  *   the node tag that appears in the template.
52  * - title_prefix: Additional output populated by modules, intended to be
53  *   displayed in front of the main title tag that appears in the template.
54  * - title_suffix: Additional output populated by modules, intended to be
55  *   displayed after the main title tag that appears in the template.
56  * - view_mode: View mode; for example, "teaser" or "full".
57  * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
58  * - page: Flag for the full page state. Will be true if view_mode is 'full'.
59  * - readmore: Flag for more state. Will be true if the teaser content of the
60  *   node cannot hold the main body content.
61  * - logged_in: Flag for authenticated user status. Will be true when the
62  *   current user is a logged-in member.
63  * - is_admin: Flag for admin user status. Will be true when the current user
64  *   is an administrator.
65  *
66  * @see template_preprocess_node()
67  */
68 #}
69 {%
70   set classes = [
71     'node',
72     'node--type-' ~ node.bundle|clean_class,
73     node.isPromoted() ? 'node--promoted',
74     node.isSticky() ? 'node--sticky',
75     not node.isPublished() ? 'node--unpublished',
76     view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
77   ]
78 %}
79 {% set created_date = node.getCreatedTime|format_date('umami_dates') %}
80 {{ attach_library('classy/node') }}
81
82 <article{{ attributes.addClass(classes) }}>
83
84   {{ title_prefix }}
85   {% if page %}
86   <header class="node__header">
87     <h1 class="page-title">
88       {{ label }}
89     </h1>
90     {% if display_submitted %}
91     <div{{ author_attributes.addClass('node__submitted') }}>
92       {% trans %}<span class="by-author">by {{ author_name }}</span> {{ created_date }}{% endtrans %}
93       {{ metadata }}
94     </div>
95     {% endif %}
96   </header>
97   {% else %}
98     <h2{{ title_attributes }}>
99       <a href="{{ url }}" rel="bookmark">{{ label }}</a>
100     </h2>
101   {% endif %}
102   {{ title_suffix }}
103
104   {% if display_submitted %}
105     <footer class="node__meta">
106       {{ author_picture }}
107       <div{{ author_attributes.addClass('node__submitted') }}>
108         {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
109         {{ metadata }}
110       </div>
111     </footer>
112   {% endif %}
113
114   <div{{ content_attributes.addClass('node__content') }}>
115     {{ content }}
116   </div>
117
118 </article>