html.html.twig 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. {#
  2. /**
  3. * @file
  4. * Default theme implementation 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. * @ingroup themeable
  26. */
  27. #}
  28. {%
  29. set body_classes = [
  30. logged_in ? 'user-logged-in',
  31. not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class,
  32. node_type ? 'page-node-type-' ~ node_type|clean_class,
  33. db_offline ? 'db-offline',
  34. ]
  35. %}
  36. <!DOCTYPE html>
  37. <html{{ html_attributes }}>
  38. <head>
  39. <head-placeholder token="{{ placeholder_token }}">
  40. <title>{{ head_title|safe_join(' | ') }}</title>
  41. <css-placeholder token="{{ placeholder_token }}">
  42. <js-placeholder token="{{ placeholder_token }}">
  43. </head>
  44. <body{{ attributes }}>
  45. {#
  46. Keyboard navigation/accessibility link to main content section in
  47. page.html.twig.
  48. #}
  49. <a href="#main-content" class="visually-hidden focusable">
  50. {{ 'Skip to main content'|t }}
  51. </a>
  52. {{ page_top }}
  53. {{ page }}
  54. {{ page_bottom }}
  55. <js-bottom-placeholder token="{{ placeholder_token }}">
  56. </body>
  57. </html>