comment.html.twig 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. {#
  2. /**
  3. * @file
  4. * Bartik's theme implementation for comments.
  5. *
  6. * Available variables:
  7. * - author: Comment author. Can be a link or plain text.
  8. * - content: The content-related items for the comment display. Use
  9. * {{ content }} to print them all, or print a subset such as
  10. * {{ content.field_example }}. Use the following code to temporarily suppress
  11. * the printing of a given child element:
  12. * @code
  13. * {{ content|without('field_example') }}
  14. * @endcode
  15. * - created: Formatted date and time for when the comment was created.
  16. * Preprocess functions can reformat it by calling format_date() with the
  17. * desired parameters on the 'comment.created' variable.
  18. * - changed: Formatted date and time for when the comment was last changed.
  19. * Preprocess functions can reformat it by calling format_date() with the
  20. * desired parameters on the 'comment.changed' variable.
  21. * - permalink: Comment permalink.
  22. * - submitted: Submission information created from author and created
  23. * during template_preprocess_comment().
  24. * - user_picture: The comment author's profile picture.
  25. * - status: Comment status. Possible values are:
  26. * unpublished, published, or preview.
  27. * - title: Comment title, linked to the comment.
  28. * - attributes: HTML attributes for the containing element.
  29. * The attributes.class may contain one or more of the following classes:
  30. * - comment: The current template type; e.g., 'theming hook'.
  31. * - by-anonymous: Comment by an unregistered user.
  32. * - by-{entity-type}-author: Comment by the author of the parent entity,
  33. * eg. by-node-author.
  34. * - preview: When previewing a new or edited comment.
  35. * The following applies only to viewers who are registered users:
  36. * - unpublished: An unpublished comment visible only to administrators.
  37. * - title_prefix: Additional output populated by modules, intended to be
  38. * displayed in front of the main title tag that appears in the template.
  39. * - title_suffix: Additional output populated by modules, intended to be
  40. * displayed after the main title tag that appears in the template.
  41. * - title_attributes: Same as attributes, except applied to the main title
  42. * tag that appears in the template.
  43. * - content_attributes: List of classes for the styling of the comment content.
  44. * - threaded: A flag indicating whether the comments are threaded or not.
  45. *
  46. * These variables are provided to give context about the parent comment (if
  47. * any):
  48. * - comment_parent: Full parent comment entity (if any).
  49. * - parent_author: Equivalent to author for the parent comment.
  50. * - parent_created: Equivalent to created for the parent comment.
  51. * - parent_changed: Equivalent to changed for the parent comment.
  52. * - parent_title: Equivalent to title for the parent comment.
  53. * - parent_permalink: Equivalent to permalink for the parent comment.
  54. * - parent: A text string of parent comment submission information created from
  55. * 'parent_author' and 'parent_created' during template_preprocess_comment().
  56. * This information is presented to help screen readers follow lengthy
  57. * discussion threads. You can hide this from sighted users using the class
  58. * visually-hidden.
  59. *
  60. * These two variables are provided for context:
  61. * - comment: Full comment object.
  62. * - entity: Entity the comments are attached to.
  63. *
  64. * @see template_preprocess_comment()
  65. */
  66. #}
  67. {%
  68. set classes = [
  69. 'comment',
  70. 'js-comment',
  71. status != 'published' ? 'comment--' ~ status,
  72. comment.owner.anonymous ? 'by-anonymous',
  73. author_id and author_id == commented_entity.getOwnerId() ? 'by-' ~ commented_entity.getEntityTypeId() ~ '-author',
  74. 'clearfix',
  75. ]
  76. %}
  77. <article role="article"{{ attributes.addClass(classes)|without('role') }}>
  78. {#
  79. Hide the "new" indicator by default, let a piece of JavaScript ask the
  80. server which comments are new for the user. Rendering the final "new"
  81. indicator here would break the render cache.
  82. #}
  83. <span class="hidden" data-comment-timestamp="{{ new_indicator_timestamp }}"></span>
  84. <footer class="comment__meta">
  85. {{ user_picture }}
  86. <p class="comment__author">{{ author }}</p>
  87. <p class="comment__time">{{ created }}</p>
  88. <p class="comment__permalink">{{ permalink }}</p>
  89. {#
  90. Indicate the semantic relationship between parent and child comments
  91. for accessibility. The list is difficult to navigate in a screen
  92. reader without this information.
  93. #}
  94. {% if parent %}
  95. <p class="visually-hidden">{{ parent }}</p>
  96. {% endif %}
  97. </footer>
  98. <div{{ content_attributes.addClass('comment__content') }}>
  99. {% if title %}
  100. {{ title_prefix }}
  101. <h3{{ title_attributes }}>{{ title }}</h3>
  102. {{ title_suffix }}
  103. {% endif %}
  104. {{ content }}
  105. </div>
  106. </article>