Initial Drupal 11 with DDEV setup
This commit is contained in:
59
web/core/themes/olivero/templates/layout/html.html.twig
Normal file
59
web/core/themes/olivero/templates/layout/html.html.twig
Normal file
@ -0,0 +1,59 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Theme override for the basic structure of a single Drupal page.
|
||||
*
|
||||
* Variables:
|
||||
* - logged_in: A flag indicating if user is logged in.
|
||||
* - root_path: The root path of the current page (e.g., node, admin, user).
|
||||
* - node_type: The content type for the current node, if the page is a node.
|
||||
* - head_title: List of text elements that make up the head_title variable.
|
||||
* May contain one or more of the following:
|
||||
* - title: The title of the page.
|
||||
* - name: The name of the site.
|
||||
* - slogan: The slogan of the site.
|
||||
* - page_top: Initial rendered markup. This should be printed before 'page'.
|
||||
* - page: The rendered page markup.
|
||||
* - page_bottom: Closing rendered markup. This variable should be printed after
|
||||
* 'page'.
|
||||
* - db_offline: A flag indicating if the database is offline.
|
||||
* - placeholder_token: The token for generating head, css, js and js-bottom
|
||||
* placeholders.
|
||||
* - olivero_path: Returns the path to an Olivero theme.
|
||||
* - noscript_styles: <noscript> content.
|
||||
*
|
||||
* @see \Drupal\Core\Theme\ThemePreprocess::preprocessHtml()
|
||||
*/
|
||||
#}
|
||||
{%
|
||||
set body_classes = [
|
||||
logged_in ? 'user-logged-in',
|
||||
not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class,
|
||||
node_type ? 'page-node-type-' ~ node_type|clean_class,
|
||||
db_offline ? 'db-offline',
|
||||
]
|
||||
%}
|
||||
<!DOCTYPE html>
|
||||
<html{{ html_attributes }}>
|
||||
<head>
|
||||
<head-placeholder token="{{ placeholder_token }}">
|
||||
<title>{{ head_title|safe_join(' | ') }}</title>
|
||||
<css-placeholder token="{{ placeholder_token }}">
|
||||
<js-placeholder token="{{ placeholder_token }}">
|
||||
{% include '@olivero/includes/preload.twig' with {olivero_path: olivero_path} only %}
|
||||
{{ noscript_styles }}
|
||||
</head>
|
||||
<body{{ attributes.addClass(body_classes) }}>
|
||||
{#
|
||||
Keyboard navigation/accessibility link to main content section in
|
||||
page.html.twig.
|
||||
#}
|
||||
<a href="#main-content" class="visually-hidden focusable skip-link">
|
||||
{{ 'Skip to main content'|t }}
|
||||
</a>
|
||||
{{ page_top }}
|
||||
{{ page }}
|
||||
{{ page_bottom }}
|
||||
<js-bottom-placeholder token="{{ placeholder_token }}">
|
||||
</body>
|
||||
</html>
|
||||
135
web/core/themes/olivero/templates/layout/page.html.twig
Normal file
135
web/core/themes/olivero/templates/layout/page.html.twig
Normal file
@ -0,0 +1,135 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme implementation 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 normally located in the
|
||||
* core/modules/system 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.highlighted: Items for the highlighted region.
|
||||
* - page.primary_menu: Items for the primary menu region.
|
||||
* - page.secondary_menu: Items for the secondary menu region.
|
||||
* - page.content: The main content of the current page.
|
||||
* - page.sidebar: Items for the first sidebar.
|
||||
* - page.featured_bottom_first: Items for the first featured bottom region.
|
||||
* - page.featured_bottom_second: Items for the second featured bottom region.
|
||||
* - page.footer_first: Items for the first footer column.
|
||||
* - page.footer_second: Items for the second footer column.
|
||||
* - page.breadcrumb: Items for the breadcrumb region.
|
||||
* - page.social: Items for the social region.
|
||||
*
|
||||
* @see \Drupal\Core\Theme\ThemePreprocess::preprocessPage()
|
||||
* @see html.html.twig
|
||||
*/
|
||||
#}
|
||||
|
||||
<div id="page-wrapper" class="page-wrapper">
|
||||
<div id="page">
|
||||
|
||||
{% if page.header or page.primary_menu or page.secondary_menu %}
|
||||
<header id="header" class="site-header" data-drupal-selector="site-header" role="banner">
|
||||
|
||||
{# Gets fixed by JavaScript at wide widths. #}
|
||||
<div class="site-header__fixable" data-drupal-selector="site-header-fixable">
|
||||
<div class="site-header__initial">
|
||||
<button class="sticky-header-toggle" data-drupal-selector="sticky-header-toggle" role="switch" aria-controls="site-header__inner" aria-label="{{ 'Sticky header'|t }}" aria-checked="false">
|
||||
<span class="sticky-header-toggle__icon">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{# Needs to extend full width so box shadow will also extend. #}
|
||||
<div id="site-header__inner" class="site-header__inner" data-drupal-selector="site-header-inner">
|
||||
<div class="container site-header__inner__container">
|
||||
|
||||
{{ page.header }}
|
||||
|
||||
{% if page.primary_menu or page.secondary_menu %}
|
||||
<div class="mobile-buttons" data-drupal-selector="mobile-buttons">
|
||||
<button class="mobile-nav-button" data-drupal-selector="mobile-nav-button" aria-label="{{ 'Main Menu'|t }}" aria-controls="header-nav" aria-expanded="false">
|
||||
<span class="mobile-nav-button__label">{{ 'Menu'|t }}</span>
|
||||
<span class="mobile-nav-button__icon"></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="header-nav" class="header-nav" data-drupal-selector="header-nav">
|
||||
{{ page.primary_menu }}
|
||||
{{ page.secondary_menu }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{% endif %}
|
||||
|
||||
<div id="main-wrapper" class="layout-main-wrapper layout-container">
|
||||
<div id="main" class="layout-main">
|
||||
<div class="main-content">
|
||||
<a id="main-content" tabindex="-1"></a>
|
||||
{{ page.hero }}
|
||||
<div class="main-content__container container">
|
||||
{{ page.highlighted }}
|
||||
{{ page.breadcrumb }}
|
||||
|
||||
{% if page.sidebar %}
|
||||
<div class="sidebar-grid grid-full">
|
||||
<main role="main" class="site-main">
|
||||
{{ page.content_above }}
|
||||
{{ page.content }}
|
||||
</main>
|
||||
|
||||
{{ page.sidebar }}
|
||||
</div>
|
||||
{% else %}
|
||||
<main role="main">
|
||||
{{ page.content_above }}
|
||||
{{ page.content }}
|
||||
</main>
|
||||
{% endif %}
|
||||
{{ page.content_below }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="social-bar">
|
||||
{{ page.social }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="site-footer__inner container">
|
||||
{{ page.footer_top }}
|
||||
{{ page.footer_bottom }}
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="overlay" data-drupal-selector="overlay"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,29 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the breadcrumb region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
'grid-full',
|
||||
'layout--pass--content-medium',
|
||||
]
|
||||
%}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }}>
|
||||
{{ content }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,29 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the content above region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
'grid-full',
|
||||
'layout--pass--content-medium',
|
||||
]
|
||||
%}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }}>
|
||||
{{ content }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,28 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the content below region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
]
|
||||
%}
|
||||
|
||||
{{ attach_library('olivero/content-below') }}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }}>
|
||||
{{ content }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,29 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the content region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
'grid-full',
|
||||
'layout--pass--content-medium',
|
||||
]
|
||||
%}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }} id="content">
|
||||
{{ content }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,29 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the footer bottom region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
'grid-full',
|
||||
'layout--pass--content-medium',
|
||||
]
|
||||
%}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }}>
|
||||
{{ content }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,31 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the footer top region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
'grid-full',
|
||||
'layout--pass--content-medium',
|
||||
]
|
||||
%}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }}>
|
||||
<div class="region--{{ region }}__inner">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,17 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the header region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{{ content }}
|
||||
<div class="header-nav-overlay" data-drupal-selector="header-nav-overlay"></div>
|
||||
@ -0,0 +1,29 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the content region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
'grid-full',
|
||||
'layout--pass--content-medium',
|
||||
]
|
||||
%}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }}>
|
||||
{{ content }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,16 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the header region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{{ content }}
|
||||
@ -0,0 +1,27 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the header region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
]
|
||||
%}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }}>
|
||||
{{ content }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,28 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the sidebar region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
]
|
||||
%}
|
||||
|
||||
{{ attach_library('olivero/sidebar') }}
|
||||
|
||||
{% if content %}
|
||||
<aside{{ attributes.addClass(classes) }}>
|
||||
{{ content }}
|
||||
</aside>
|
||||
{% endif %}
|
||||
@ -0,0 +1,20 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display the social region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
|
||||
<div class="social-bar__inner fixable">
|
||||
<div class="rotate">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
26
web/core/themes/olivero/templates/layout/region.html.twig
Normal file
26
web/core/themes/olivero/templates/layout/region.html.twig
Normal file
@ -0,0 +1,26 @@
|
||||
{#
|
||||
/**
|
||||
* @file
|
||||
* Olivero's theme override to display a region.
|
||||
*
|
||||
* Available variables:
|
||||
* - content: The content for this region, typically blocks.
|
||||
* - attributes: HTML attributes for the region <div>.
|
||||
* - region: The name of the region variable as defined in the theme's
|
||||
* .info.yml file.
|
||||
*
|
||||
* @see template_preprocess_region()
|
||||
*/
|
||||
#}
|
||||
{%
|
||||
set classes = [
|
||||
'region',
|
||||
'region--' ~ region|clean_class,
|
||||
]
|
||||
%}
|
||||
|
||||
{% if content %}
|
||||
<div{{ attributes.addClass(classes) }}>
|
||||
{{ content }}
|
||||
</div>
|
||||
{% endif %}
|
||||
Reference in New Issue
Block a user