...
 
Commits (2)
{# See "@stable/block/block.html.twig" #}
{% block content %}
{{ content }}
{% endblock %}
{#
/**
* @file
* Theme override to display a node.
*
* Available variables:
* - node: The node entity with limited access to object properties and methods.
* Only method names starting with "get", "has", or "is" and a few common
* methods such as "id", "label", and "bundle" are available. For example:
* - node.getCreatedTime() will return the node creation timestamp.
* - node.hasField('field_example') returns TRUE if the node bundle includes
* field_example. (This does not indicate the presence of a value in this
* field.)
* - node.isPublished() will return whether the node is published or not.
* Calling other methods, such as node.delete(), will result in an exception.
* See \Drupal\node\Entity\Node for a full list of public properties and
* methods for the node object.
* - label: The title of the node.
* - content: All node items. Use {{ content }} to print them all,
* or print a subset such as {{ content.field_example }}. Use
* {{ content|without('field_example') }} to temporarily suppress the printing
* of a given child element.
* - author_picture: The node author user entity, rendered using the "compact"
* view mode.
* - metadata: Metadata for this node.
* - date: Themed creation date field.
* - author_name: Themed author name field.
* - url: Direct URL of the current node.
* - display_submitted: Whether submission information should be displayed.
* - attributes: HTML attributes for the containing element.
* The attributes.class element may contain one or more of the following
* classes:
* - node: The current template type (also known as a "theming hook").
* - node--type-[type]: The current node type. For example, if the node is an
* "Article" it would result in "node--type-article". Note that the machine
* name will often be in a short form of the human readable label.
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
* teaser would result in: "node--view-mode-teaser", and
* full: "node--view-mode-full".
* The following are controlled through the node publishing options.
* - node--promoted: Appears on nodes promoted to the front page.
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
* teaser listings.
* - node--unpublished: Appears on unpublished nodes visible only to site
* admins.
* - title_attributes: Same as attributes, except applied to the main title
* tag that appears in the template.
* - content_attributes: Same as attributes, except applied to the main
* content tag that appears in the template.
* - author_attributes: Same as attributes, except applied to the author of
* the node tag that appears in the template.
* - title_prefix: Additional output populated by modules, intended to be
* displayed in front of the main title tag that appears in the template.
* - title_suffix: Additional output populated by modules, intended to be
* displayed after the main title tag that appears in the template.
* - view_mode: View mode; for example, "teaser" or "full".
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
* - readmore: Flag for more state. Will be true if the teaser content of the
* node cannot hold the main body content.
* - logged_in: Flag for authenticated user status. Will be true when the
* current user is a logged-in member.
* - is_admin: Flag for admin user status. Will be true when the current user
* is an administrator.
*
* @see template_preprocess_node()
*
* @todo Remove the id attribute (or make it a class), because if that gets
* rendered twice on a page this is invalid CSS for example: two lists
* in different view modes.
*/
#}
{% set title_paragraph_index = null %}
{% set has_title_paragraph = false %}
{% if content.field_body_paragraph %}
{% for i, paragraph in content.field_body_paragraph if i|first != '#' %}
{% if content.field_body_paragraph['#items'][i].entity.type.0.entity.id == 'title' %}
{% set has_title_paragraph = true %}
{% set title_paragraph_index = i %}
{{ paragraph }}
{% endif %}
{% endfor %}
{% endif %}
{% if not has_title_paragraph %}
{% set classes = [ 'hero', 'hero-' ~ node.bundle|replace({"_": "-"}) ] %}
{# Header hero region #}
<section{{ attributes.addClass(classes) }}>
<div class="hero-body">
<div class="container">
<h1 class="title is-2">{{ label }}</h1>
</div>
</div>
</section>
{% endif %}
<section class="section" data-headerbg="light">
<div class="container">
<div class="flow content">
{% if content.field_body_paragraph %}
{% for i, paragraph in content.field_body_paragraph if i|first != '#' %}
{% if i is not same as(title_paragraph_index) %}
{{ paragraph }}
{% endif %}
{% endfor %}
{% endif %}
{# No, i do not understand why content doesn't print the paragraphs but only
content.content does that #}
{{ content|without('content', 'field_body_paragraph', 'uid', 'created') }}
</div>
</div>
</section>
{% extends "@octavia/layout/page.html.twig" %}
{% block navbar %}
{% if page.navbar_branding or page.navbar_social or page.primary_menu %}
{# Top navbar #}
<div class="is-fixed">
<nav id="navbar" class="navbar">
<div class="navbar-brand">
{% if page.navbar_branding %}
{# TODO: remove this link if is_front and *probably* add visually-hidden h1
with "agaric", again only on the front page, and only if we can't put our
name in an h1 on the front page in some other way. #}
<a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home me" class="h-card fn org navbar-item">
{{ page.navbar_branding }}
</a>
{% endif %}
<div class="navbar-burger burger" data-target="navbar-menu">
<span></span>
<span></span>
<span></span>
</div>
</div>
<div id="navbar-menu" class="navbar-menu">
{% if page.navbar_social %}
<div class="navbar-start">
{{ page.navbar_social }}
</div>
{% endif %}
{% if page.primary_menu %}
{{ page.primary_menu }}
{% endif %}
</div>
</nav>
</div>
{% endif %}
{{ page.help }}
{% endblock navbar %}
{% set header_section_attributes = create_attribute() %}
{% if not node %}
{% set header_section_attributes = header_section_attributes.addClass(['hero']).setAttribute('data-headerbg', 'dark') %}
{% endif %}
{# We do not want the secondary menu printed where Bulma's page.html.twig prints
it; we want it with the header section which may be printed in node content.
To make that possible the regionincontent module is used; but all that is
handled elsewhere (including immediately below); here we just blank it out. #}
{% block secondary_menu %}
{% endblock secondary_menu %}
{% block header %}
{# We've moved the header section to the content level for nodes. #}
{% if not node %}
<section{{ header_section_attributes }}>
{% block header_title %}
{% if page.header %}
{# Header hero region #}
<div class="hero-body">
<div class="container">
{% if is_front and site_slogan %}
<h1 class="title is-2">{{ site_slogan }}</h1>
{% else %}
<div class="titlebar">
{{ page.header }}
{% if page.secondary_menu or page.header_search %}
<div class="titlebar_links">
{{ page.secondary_menu }}
{{ page.header_search }}
</div>
{% endif %}
</div>
{% endif %}
</div>
</div>
{% endif %}
{% endblock header_title %}
</section>
{% endif %}
{% block tabs %}
{# Drupal tabs #}
{% if page.header_tabs %}
<div class="floating-tabs">
{{ page.header_tabs }}
</div>
{% endif %}
{% endblock tabs %}
{% endblock header %}
{% block main %}
{# Main section #}
{# Only group the main content into one wrapping element if it needs to be
separated from a sidebar or two. #}
{% set has_columns=false %}
{% if page.sidebar_first or page.sidebar_second %}
{% set has_columns=true %}
{% endif %}
{% if has_columns %}
<section class="section">
<main role="main" class="container">
{% endif %}
<a id="main-content" tabindex="-1"></a>{# link is in html.html.twig #}
{{ page.highlighted }}
{% block main_content %}
{# Set attributes for content. #}
{% if not page.content_attributes %}
{%
set page = page|merge({
'content_attributes': create_attribute().addClass([
'main-content',
]),
})
%}
{% endif %}
{% if has_columns %}
<div{{page.content_attributes }}>
{% endif %}
{# Main content #}
{{ page.content }}
{% if has_columns %}
</div>
{% endif %}
{% endblock main_content %}
{% block sidebar_first %}
{# Sidebar first #}
{% if page.sidebar_first %}
{# Set attributes for content. #}
{% if not page.sidebar_first_attributes %}
{%
set page = page|merge({
'sidebar_first_attributes': create_attribute().addClass([
'sidebar-first',
'column',
'is-2',
]),
})
%}
{% endif %}
<aside{{page.sidebar_first_attributes|without('role')}} role="complimentary">
{{ page.sidebar_first }}
</aside>
{% endif %}
{% endblock sidebar_first %}
{% block sidebar_second %}
{# Sidebar second #}
{% if page.sidebar_second %}
{% if not page.sidebar_second_attributes %}
{%
set page = page|merge({
'sidebar_second_attributes': create_attribute().addClass([
'sidebar-second',
'column',
'is-2',
]),
})
%}
{% endif %}
<aside{{page.sidebar_second_attributes|without('role')}} role="complimentary">
{{ page.sidebar_second }}
</aside>
{% endif %}
{% endblock sidebar_second %}
{{ page.content_bottom }}
{% if page.sidebar_first or page.sidebar_second %}
</main>
</section>
{% endif %}
{% endblock main %}