html.html.twig 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. {#
  2. /**
  3. * @file
  4. * Theme override for the basic structure of a single Drupal page.
  5. *
  6. * Variables:
  7. * - logged_in: A flag indicating if user is logged in.
  8. * - root_path: The root path of the current page (e.g., node, admin, user).
  9. * - node_type: The content type for the current node, if the page is a node.
  10. * - head_title: List of text elements that make up the head_title variable.
  11. * May contain one or more of the following:
  12. * - title: The title of the page.
  13. * - name: The name of the site.
  14. * - slogan: The slogan of the site.
  15. * - page_top: Initial rendered markup. This should be printed before 'page'.
  16. * - page: The rendered page markup.
  17. * - page_bottom: Closing rendered markup. This variable should be printed after
  18. * 'page'.
  19. * - db_offline: A flag indicating if the database is offline.
  20. * - placeholder_token: The token for generating head, css, js and js-bottom
  21. * placeholders.
  22. *
  23. * @see template_preprocess_html()
  24. */
  25. #}
  26. {%
  27. set body_classes = [
  28. logged_in ? 'user-logged-in',
  29. not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class,
  30. node_type ? 'page-node-type-' ~ node_type|clean_class,
  31. db_offline ? 'db-offline',
  32. ]
  33. %}
  34. <!DOCTYPE html>
  35. <html{{ html_attributes }}>
  36. <head>
  37. <head-placeholder token="{{ placeholder_token }}">
  38. <title>{{ head_title|safe_join(' | ') }}</title>
  39. <css-placeholder token="{{ placeholder_token }}">
  40. <js-placeholder token="{{ placeholder_token }}">
  41. </head>
  42. <body{{ attributes.addClass(body_classes) }}>
  43. {#
  44. Keyboard navigation/accessibility link to main content section in
  45. page.html.twig.
  46. #}
  47. <a href="#main-content" class="visually-hidden focusable skip-link">
  48. {{ 'Skip to main content'|t }}
  49. </a>
  50. {{ page_top }}
  51. {{ page }}
  52. {{ page_bottom }}
  53. <js-bottom-placeholder token="{{ placeholder_token }}">
  54. </body>
  55. </html>