You are here

node--full.html.twig in Open Social 8.9

Theme override to display a node.

Available variables:

  • node: The node entity with limited access to object properties and methods. Only "getter" methods (method names starting with "get", "has", or "is") and a few common methods such as "id" and "label" are available. Calling other methods (such as node.delete) will result in an exception.
  • 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 {{ content|without('field_example') }} to temporarily suppress the printing of a given child element.
  • author_picture: The node author user entity, rendered using the "compact" view mode.
  • metadata: Metadata for this node.
  • date: Themed creation date field.
  • author_name: Themed author name field.
  • url: Direct URL of the current node.
  • display_submitted: Whether submission information should be displayed.
  • 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-[type]: The current node type. For example, if the node is an "Article" it would result in "node--type-article". Note that the machine name will often be in a short form of the human readable label.
    • node--view-mode-[view_mode]: The View Mode of the node; for example, a teaser would result in: "node--view-mode-teaser", and full: "node--view-mode-full".

    The following are controlled through the node publishing options.

    • node--promoted: Appears on nodes promoted to the front page.
    • node--sticky: Appears on nodes ordered above other non-sticky nodes in teaser listings.
    • node--unpublished: Appears on unpublished nodes visible only to site admins.
  • title_attributes: Same as attributes, except applied to the main title tag that appears in the template.
  • content_attributes: Same as attributes, except applied to the main content tag that appears in the template.
  • author_attributes: Same as attributes, except applied to the author of the node tag that appears in the template.
  • 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.
  • 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.

@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

themes/socialbase/templates/node/node--full.html.twig
View source
  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 "getter" methods (method names starting with "get", "has", or "is")
  9. and a few common methods such as "id" and "label" are available. Calling
  10. other methods (such as node.delete) will result in an exception.
  11. * - label: The title of the node.
  12. * - content: All node items. Use {{ content }} to print them all,
  13. * or print a subset such as {{ content.field_example }}. Use
  14. * {{ content|without('field_example') }} to temporarily suppress the printing
  15. * of a given child element.
  16. * - author_picture: The node author user entity, rendered using the "compact"
  17. * view mode.
  18. * - metadata: Metadata for this node.
  19. * - date: Themed creation date field.
  20. * - author_name: Themed author name field.
  21. * - url: Direct URL of the current node.
  22. * - display_submitted: Whether submission information should be displayed.
  23. * - attributes: HTML attributes for the containing element.
  24. * The attributes.class element may contain one or more of the following
  25. * classes:
  26. * - node: The current template type (also known as a "theming hook").
  27. * - node--type-[type]: The current node type. For example, if the node is an
  28. * "Article" it would result in "node--type-article". Note that the machine
  29. * name will often be in a short form of the human readable label.
  30. * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
  31. * teaser would result in: "node--view-mode-teaser", and
  32. * full: "node--view-mode-full".
  33. * The following are controlled through the node publishing options.
  34. * - node--promoted: Appears on nodes promoted to the front page.
  35. * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
  36. * teaser listings.
  37. * - node--unpublished: Appears on unpublished nodes visible only to site
  38. * admins.
  39. * - title_attributes: Same as attributes, except applied to the main title
  40. * tag that appears in the template.
  41. * - content_attributes: Same as attributes, except applied to the main
  42. * content tag that appears in the template.
  43. * - author_attributes: Same as attributes, except applied to the author of
  44. * the node tag that appears in the template.
  45. * - title_prefix: Additional output populated by modules, intended to be
  46. * displayed in front of the main title tag that appears in the template.
  47. * - title_suffix: Additional output populated by modules, intended to be
  48. * displayed after the main title tag that appears in the template.
  49. * - view_mode: View mode; for example, "teaser" or "full".
  50. * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
  51. * - page: Flag for the full page state. Will be true if view_mode is 'full'.
  52. * - readmore: Flag for more state. Will be true if the teaser content of the
  53. * node cannot hold the main body content.
  54. * - logged_in: Flag for authenticated user status. Will be true when the
  55. * current user is a logged-in member.
  56. * - is_admin: Flag for admin user status. Will be true when the current user
  57. * is an administrator.
  58. *
  59. * @see template_preprocess_node()
  60. *
  61. * @todo Remove the id attribute (or make it a class), because if that gets
  62. * rendered twice on a page this is invalid CSS for example: two lists
  63. * in different view modes.
  64. */
  65. #}
  66. {{ attach_library('socialbase/page-node')}}
  67. {%
  68. set classes = [
  69. 'card',
  70. node.isPromoted() ? 'node--promoted',
  71. not node.isPublished() ? 'node--unpublished',
  72. ]
  73. %}
  74. {% if details_label %}
  75. <h4 class="section-title section-title-node">
  76. {{ details_label }}
  77. </h4>
  78. {% endif %}
  79. <article{{ attributes.addClass(classes) }}>
  80. <div{{ content_attributes.addClass('card__body') }}>
  81. {% if not node.isPublished() %}
  82. <div class="node--unpublished__label">{% trans %} unpublished {% endtrans %}</div>
  83. {% endif %}
  84. {% if display_submitted %}
  85. {% block metainfo %}
  86. <header class="metainfo">
  87. <div class="metainfo__avatar">
  88. {{ author_picture }}
  89. </div>
  90. <div class="metainfo__content">
  91. {{ author }}
  92. <span class="metainfo__published-date">&bullet; {{ created_date_formatted }} </span>
  93. <div>
  94. {% if event_type %}
  95. {{ event_type }}
  96. {% endif %}
  97. {% if topic_type %}
  98. {{ topic_type }}
  99. {% endif %}
  100. {% if group_link %}
  101. {% trans %} in group {% endtrans %}
  102. {{ group_link }}
  103. {% endif %}
  104. </div>
  105. </div>
  106. {{ content.links.moderation }}
  107. </header>
  108. {% endblock %}
  109. {% endif %}
  110. {% if event_date %}
  111. {% block nodefull_specialfields %}
  112. {{ content }}
  113. {% endblock %}
  114. {% endif %}
  115. {% if node.isSticky() or comment_field_status is not empty or logged_in %}
  116. {% block metaengage %}
  117. <div class="meta-engage">
  118. <div class="meta-engage--buttons">
  119. {% if content.field_event_addtocal is not empty and logged_in %}
  120. <div class="meta-addtocal">
  121. {{ content.field_event_addtocal }}
  122. </div>
  123. {% endif %}
  124. {% if content.flag_follow_content|render is not empty and logged_in %}
  125. <div class="meta-follow">
  126. {{ content.flag_follow_content }}
  127. </div>
  128. {% endif %}
  129. {% if node.isSticky() %}
  130. <span class="badge badge-accent badge--large">{% trans %}Featured{% endtrans %}</span>
  131. {% endif %}
  132. </div>
  133. <div class="meta-engage--badges">
  134. {% if comment_field_status is not empty %}
  135. <a href="#section-comments" class="badge badge-default badge--large badge--pill badge--comment-count" title="{% trans %}Total amount of comments{% endtrans %}">
  136. <span class="badge__container">
  137. <svg class="badge__icon">
  138. <use xlink:href="#icon-comment"></use>
  139. </svg>
  140. <span class="badge__label">
  141. {{ comment_count }}
  142. </span>
  143. <span class="badge__label badge__label--description">
  144. {% trans %}
  145. comment
  146. {% plural comment_count %}
  147. comments
  148. {% endtrans %}
  149. </span>
  150. </span>
  151. </a>
  152. {% endif %}
  153. {% if likes_count is not empty %}
  154. <div class="badge badge-default badge--large badge--pill" title="{% trans %}Total amount of likes{% endtrans %}">
  155. <span class="badge__container">
  156. <svg class="badge__icon">
  157. <use xlink:href="#icon-like"></use>
  158. </svg>
  159. <span class="badge__label">
  160. {{ likes_count }}
  161. </span>
  162. <span class="badge__label badge__label--description">
  163. {% trans %}
  164. like
  165. {% plural likes_count %}
  166. likes
  167. {% endtrans %}
  168. </span>
  169. </span>
  170. </div>
  171. {% endif %}
  172. {% if visibility_icon and visibility_label %}
  173. <div class="badge badge-default badge--large badge--pill" title="{% trans %}The visibility of this content is set to {{ visibility_label }}{% endtrans %} ">
  174. <span class="badge__container">
  175. <svg class="badge__icon">
  176. <use xlink:href="#icon-{{ visibility_icon }}"></use>
  177. </svg>
  178. <span class="badge__label">&nbsp;</span>
  179. <span class="badge__label badge__label--description">{{ visibility_label }}</span>
  180. </span>
  181. </div>
  182. {% endif %}
  183. {% if views_count is not empty and views_label %}
  184. <div class="badge badge-default badge--large badge--pill" title="{% trans %}Total amount of views{% endtrans %}">
  185. <span class="badge__container">
  186. <svg class="badge__icon">
  187. <use xlink:href="#icon-views"></use>
  188. </svg>
  189. <span class="badge__label">
  190. {{ views_count }}
  191. </span>
  192. <span class="badge__label badge__label--description">{{ views_label }}</span>
  193. </span>
  194. </div>
  195. {% endif %}
  196. </div>
  197. </div>
  198. {% endblock %}
  199. {% endif %}
  200. {% block nodefull_body %}
  201. {{ content|without('flag_follow_content', 'links') }}
  202. {% endblock %}
  203. </div>
  204. </article>
  205. {% block nodefull_below_content %}
  206. {{ below_content }}
  207. {% endblock %}