Same filename in this branch
  1. 10 core/modules/system/templates/page.html.twig
  2. 10 core/themes/claro/templates/page.html.twig
  3. 10 core/themes/olivero/templates/layout/page.html.twig
  4. 10 core/themes/stable9/templates/layout/page.html.twig
  5. 10 core/themes/starterkit_theme/templates/layout/page.html.twig
  6. 10 core/profiles/demo_umami/themes/umami/templates/layout/page.html.twig
Same filename and directory in other branches
  1. 8.9.x core/profiles/demo_umami/themes/umami/templates/layout/page.html.twig
  2. 9 core/profiles/demo_umami/themes/umami/templates/layout/page.html.twig

Theme override to display a single page.

The doctype, html, head and body tags are not in this template. Instead they can be found in the html.html.twig template in this directory.

Available variables:

General utility variables:

  • base_path: The base URL path of the Drupal installation. Will usually be "/" unless you have installed Drupal in a sub-directory.
  • is_front: A flag indicating if the current page is the front page.
  • logged_in: A flag indicating if the user is registered and signed in.
  • is_admin: A flag indicating if the user has permission to access administration pages.

Site identity:

  • front_page: The URL of the front page. Use this instead of base_path when linking to the front page. This includes the language domain or prefix.

Page content (in order of occurrence in the default page.html.twig):

  • node: Fully loaded node, if there is an automatically-loaded node associated with the page and the node ID is the second argument in the page's path (e.g. node/12345 and node/12345/revisions, but not comment/reply/12345).

Regions:

  • page.header: Items for the header region.
  • page.primary_menu: Items for the primary menu region.
  • page.secondary_menu: Items for the secondary menu region.
  • page.highlighted: Items for the highlighted content region.
  • page.help: Dynamic help text, mostly for admin pages.
  • page.content: The main content of the current page.
  • page.sidebar_first: Items for the first sidebar.
  • page.sidebar_second: Items for the second sidebar.
  • page.footer: Items for the footer region.
  • page.breadcrumb: Items for the breadcrumb region.

See also

template_preprocess_page()

html.html.twig

3 theme calls to page.html.twig
ElementInfoManagerTest::providerTestGetInfoElementPlugin in core/tests/Drupal/Tests/Core/Render/ElementInfoManagerTest.php
Provides tests data for testGetInfoElementPlugin().
ElementInfoManagerTest::testGetInfoElementPlugin in core/tests/Drupal/Tests/Core/Render/ElementInfoManagerTest.php
Tests the getInfo() method when render element plugins are used.
Page::getInfo in core/lib/Drupal/Core/Render/Element/Page.php
Returns the element properties for this element.

File

core/profiles/demo_umami/themes/umami/templates/layout/page.html.twig
View source
  1. {#
  2. /**
  3. * @file
  4. * Theme override to display a single page.
  5. *
  6. * The doctype, html, head and body tags are not in this template. Instead they
  7. * can be found in the html.html.twig template in this directory.
  8. *
  9. * Available variables:
  10. *
  11. * General utility variables:
  12. * - base_path: The base URL path of the Drupal installation. Will usually be
  13. * "/" unless you have installed Drupal in a sub-directory.
  14. * - is_front: A flag indicating if the current page is the front page.
  15. * - logged_in: A flag indicating if the user is registered and signed in.
  16. * - is_admin: A flag indicating if the user has permission to access
  17. * administration pages.
  18. *
  19. * Site identity:
  20. * - front_page: The URL of the front page. Use this instead of base_path when
  21. * linking to the front page. This includes the language domain or prefix.
  22. *
  23. * Page content (in order of occurrence in the default page.html.twig):
  24. * - node: Fully loaded node, if there is an automatically-loaded node
  25. * associated with the page and the node ID is the second argument in the
  26. * page's path (e.g. node/12345 and node/12345/revisions, but not
  27. * comment/reply/12345).
  28. *
  29. * Regions:
  30. * - page.header: Items for the header region.
  31. * - page.primary_menu: Items for the primary menu region.
  32. * - page.secondary_menu: Items for the secondary menu region.
  33. * - page.highlighted: Items for the highlighted content region.
  34. * - page.help: Dynamic help text, mostly for admin pages.
  35. * - page.content: The main content of the current page.
  36. * - page.sidebar_first: Items for the first sidebar.
  37. * - page.sidebar_second: Items for the second sidebar.
  38. * - page.footer: Items for the footer region.
  39. * - page.breadcrumb: Items for the breadcrumb region.
  40. *
  41. * @see template_preprocess_page()
  42. * @see html.html.twig
  43. */
  44. #}
  45. <div class="layout-container">
  46. {% if page.pre_header|render|striptags|trim is not empty or
  47. page.header|render|striptags|trim is not empty %}
  48. <header class="layout-header" role="banner">
  49. <div class="container">
  50. {% if page.pre_header|render|striptags|trim is not empty %}
  51. {{ page.pre_header }}
  52. {% endif %}
  53. {% if page.header|render|striptags|trim is not empty %}
  54. {{ page.header }}
  55. {% endif %}
  56. </div>
  57. </header>
  58. {% endif %}
  59. {% if page.highlighted %}
  60. <div class="layout-highlighted">
  61. <div class="container">
  62. {{ page.highlighted }}
  63. </div>
  64. </div>
  65. {% endif %}
  66. {% if page.tabs %}
  67. <div class="layout-tabs">
  68. <div class="container">
  69. {{ page.tabs }}
  70. </div>
  71. </div>
  72. {% endif %}
  73. {% if page.banner_top|render|striptags|trim is not empty %}
  74. <div class="layout-banner-top">
  75. {{ page.banner_top }}
  76. </div>
  77. {% endif %}
  78. {% if page.breadcrumbs|render|striptags|trim is not empty %}
  79. <div class="layout-breadcrumbs">
  80. <div class="container">
  81. {{ page.breadcrumbs }}
  82. </div>
  83. </div>
  84. {% endif %}
  85. {% if not node %}
  86. {% if page.page_title|render|striptags|trim is not empty %}
  87. <div class="layout-page-title">
  88. {% if is_front %}
  89. <div class="is-front container">
  90. {{ page.page_title }}
  91. </div>
  92. {% else %}
  93. <div class="container">
  94. {{ page.page_title }}
  95. </div>
  96. {% endif %}
  97. </div>
  98. {% endif %}
  99. {% endif %}
  100. <main role="main" class="main container">
  101. <div class="layout-content">
  102. <a id="main-content" tabindex="-1"></a>{# link is in html.html.twig #}
  103. {{ page.content }}
  104. </div>{# /.layout-content #}
  105. {% if page.sidebar|render|striptags|trim is not empty %}
  106. <aside class="layout-sidebar" role="complementary">
  107. {{ page.sidebar }}
  108. </aside>
  109. {% endif %}
  110. </main>
  111. {% if page.content_bottom|render|striptags|trim is not empty %}
  112. <div class="layout-content-bottom">
  113. {{ page.content_bottom }}
  114. </div>
  115. {% endif %}
  116. {% if page.footer|render|striptags|trim is not empty %}
  117. <div class="layout-footer">
  118. <footer class="footer" role="contentinfo">
  119. <div class="container">
  120. {{ page.footer }}
  121. </div>
  122. </footer>
  123. </div>
  124. {% endif %}
  125. {% if page.bottom|render|striptags|trim is not empty %}
  126. <div class="layout-bottom">
  127. <div class="container">
  128. {{ page.bottom }}
  129. </div>
  130. </div>
  131. {% endif %}
  132. </div>{# /.layout-container #}