home page

This commit is contained in:
2026-01-19 16:28:42 +01:00
parent 263f5bfc57
commit 3d3d01e653
29 changed files with 1611 additions and 13 deletions

View File

@@ -20,6 +20,8 @@
"drupal/core-composer-scaffold": "^10.4", "drupal/core-composer-scaffold": "^10.4",
"drupal/core-project-message": "^10.4", "drupal/core-project-message": "^10.4",
"drupal/core-recommended": "^10.4", "drupal/core-recommended": "^10.4",
"drupal/entity_block": "^2.0",
"drupal/page_manager": "^4.0@RC",
"drupal/upgrade_status": "^4.3", "drupal/upgrade_status": "^4.3",
"wikimedia/composer-merge-plugin": "^2.1" "wikimedia/composer-merge-plugin": "^2.1"
}, },
@@ -104,6 +106,17 @@
"recurse": true, "recurse": true,
"replace": false, "replace": false,
"merge-extra": true "merge-extra": true
},
"patches": {
"drupal/paragraphs": {
"Skip saving empty paragraphs for certain types https://www.drupal.org/project/paragraphs/issues/2877695" : "https://www.drupal.org/files/issues/2021-03-31/2877695-35.patch"
},
"drupal/page_manager": {
"https://www.drupal.org/project/page_manager/issues/3438993": "https://www.drupal.org/files/issues/2024-08-14/page-manager-3438993-MR34-24.patch"
},
"drupal/core": {
"CKEDITOR for summary https://www.drupal.org/project/drupal/issues/2671162":"https://www.drupal.org/files/issues/2025-08-23/2671162-158.patch"
}
} }
} }
} }

138
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "066db43487766081dd580faa75f8ccd7", "content-hash": "cc3d29c7253fdc07cd13d6d07968ca95",
"packages": [ "packages": [
{ {
"name": "asm89/stack-cors", "name": "asm89/stack-cors",
@@ -3735,6 +3735,70 @@
"issues": "https://www.drupal.org/project/issues/entity" "issues": "https://www.drupal.org/project/issues/entity"
} }
}, },
{
"name": "drupal/entity_block",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://git.drupalcode.org/project/entity_block.git",
"reference": "2.0.0"
},
"dist": {
"type": "zip",
"url": "https://ftp.drupal.org/files/projects/entity_block-2.0.0.zip",
"reference": "2.0.0",
"shasum": "06b2cdbd4bbdd503c87185ee01ad6f2bc1e298e0"
},
"require": {
"drupal/core": "^10.3 || ^11"
},
"type": "drupal-module",
"extra": {
"drupal": {
"version": "2.0.0",
"datestamp": "1736279748",
"security-coverage": {
"status": "covered",
"message": "Covered by Drupal's security advisory policy"
}
}
},
"notification-url": "https://packages.drupal.org/8/downloads",
"license": [
"GPL-2.0-or-later"
],
"authors": [
{
"name": "floretan",
"homepage": "https://www.drupal.org/user/66163"
},
{
"name": "Jaesin",
"homepage": "https://www.drupal.org/user/841054"
},
{
"name": "mglaman",
"homepage": "https://www.drupal.org/user/2416470"
},
{
"name": "rrrob",
"homepage": "https://www.drupal.org/user/273533"
},
{
"name": "shadcn",
"homepage": "https://www.drupal.org/user/571032"
},
{
"name": "smustgrave",
"homepage": "https://www.drupal.org/user/3252890"
}
],
"description": "Let site administrators place content entities as blocks.",
"homepage": "https://www.drupal.org/project/entity_block",
"support": {
"source": "https://git.drupalcode.org/project/entity_block"
}
},
{ {
"name": "drupal/entity_browser", "name": "drupal/entity_browser",
"version": "2.15.0", "version": "2.15.0",
@@ -5412,6 +5476,77 @@
"issues": "https://www.drupal.org/project/issues/menu_position" "issues": "https://www.drupal.org/project/issues/menu_position"
} }
}, },
{
"name": "drupal/page_manager",
"version": "4.0.0-rc3",
"source": {
"type": "git",
"url": "https://git.drupalcode.org/project/page_manager.git",
"reference": "8.x-4.0-rc3"
},
"dist": {
"type": "zip",
"url": "https://ftp.drupal.org/files/projects/page_manager-8.x-4.0-rc3.zip",
"reference": "8.x-4.0-rc3",
"shasum": "9c68ed3e87196e42ceeb80d53064494d7a104abc"
},
"require": {
"drupal/core": "^9.5 || ^10 || ^11",
"drupal/ctools": "^3.15 || ^4.1"
},
"type": "drupal-module",
"extra": {
"drupal": {
"version": "8.x-4.0-rc3",
"datestamp": "1721976404",
"security-coverage": {
"status": "not-covered",
"message": "RC releases are not covered by Drupal security advisories."
}
},
"branch-alias": {
"dev-8.x-4.x": "4.x-dev"
}
},
"notification-url": "https://packages.drupal.org/8/downloads",
"license": [
"GPL-2.0-or-later"
],
"authors": [
{
"name": "Tim Plunkett",
"homepage": "https://www.drupal.org/u/tim.plunkett",
"role": "Maintainer"
},
{
"name": "EclipseGc",
"homepage": "https://www.drupal.org/user/61203"
},
{
"name": "japerry",
"homepage": "https://www.drupal.org/user/45640"
},
{
"name": "joelpittet",
"homepage": "https://www.drupal.org/user/160302"
},
{
"name": "manuel.adan",
"homepage": "https://www.drupal.org/user/516420"
},
{
"name": "phenaproxima",
"homepage": "https://www.drupal.org/user/205645"
}
],
"description": "Provides a way to place blocks on a custom page.",
"homepage": "https://www.drupal.org/project/page_manager",
"support": {
"source": "https://git.drupal.org/project/page_manager.git",
"issues": "https://www.drupal.org/project/issues/page_manager",
"irc": "irc://irc.freenode.org/drupal-contribute"
}
},
{ {
"name": "drupal/pagerer", "name": "drupal/pagerer",
"version": "3.1.1", "version": "3.1.1",
@@ -11985,6 +12120,7 @@
"drupal/maxlength": 10, "drupal/maxlength": 10,
"drupal/menu_block": 20, "drupal/menu_block": 20,
"drupal/menu_position": 20, "drupal/menu_position": 20,
"drupal/page_manager": 5,
"drupal/path_alias_xt": 20, "drupal/path_alias_xt": 20,
"drupal/pathologic": 15, "drupal/pathologic": 15,
"drupal/profile": 5, "drupal/profile": 5,

View File

@@ -6,7 +6,9 @@ dependencies:
- field.field.node.static.body - field.field.node.static.body
- node.type.static - node.type.static
module: module:
- advanced_text_formatter
- field_group - field_group
- maxlength
- path - path
- text - text
third_party_settings: third_party_settings:
@@ -14,7 +16,6 @@ third_party_settings:
group_details: group_details:
children: children:
- langcode - langcode
- translation
label: Details label: Details
region: content region: content
parent_name: '' parent_name: ''
@@ -42,10 +43,18 @@ content:
region: content region: content
settings: settings:
rows: 9 rows: 9
summary_rows: 3 summary_rows: 10
placeholder: '' placeholder: ''
show_summary: false show_summary: false
third_party_settings: { } third_party_settings:
maxlength:
maxlength_js: null
maxlength_js_label: 'Contenu limité à @limit caractères, restant : <strong>@remaining</strong>'
maxlength_js_summary: null
maxlength_js_label_summary: 'Contenu limité à @limit caractères, restant : <strong>@remaining</strong>'
maxlength_js_enforce: false
advanced_text_formatter:
show_token_tree: 0
created: created:
type: datetime_timestamp type: datetime_timestamp
weight: 4 weight: 4

View File

@@ -0,0 +1,49 @@
uuid: 522686f4-4476-44da-90b7-01c41efdb51a
langcode: fr
status: true
dependencies:
config:
- core.entity_view_mode.node.home
- field.field.node.chapitre.body
- field.field.node.chapitre.field_chapitre_num
- field.field.node.chapitre.field_parties
- node.type.chapitre
module:
- layout_builder
- text
- user
third_party_settings:
layout_builder:
enabled: false
allow_custom: false
id: node.chapitre.home
targetEntityType: node
bundle: chapitre
mode: home
content:
body:
type: text_summary_or_trimmed
label: hidden
settings:
trim_length: 600
third_party_settings: { }
weight: 1
region: content
field_chapitre_num:
type: number_integer
label: inline
settings:
thousand_separator: ''
prefix_suffix: true
third_party_settings: { }
weight: 0
region: content
links:
settings: { }
third_party_settings: { }
weight: 2
region: content
hidden:
field_parties: true
langcode: true
search_api_excerpt: true

View File

@@ -0,0 +1,39 @@
uuid: c87053aa-10df-4e5b-98f8-0b0a76f06a16
langcode: fr
status: true
dependencies:
config:
- core.entity_view_mode.node.home
- field.field.node.static.body
- node.type.static
module:
- layout_builder
- text
- user
third_party_settings:
layout_builder:
enabled: false
allow_custom: false
_core:
default_config_hash: 9mgezio6-8HiMYhQHSfouZjKyY4BFKR71Yh4kbSmAYU
id: node.static.home
targetEntityType: node
bundle: static
mode: home
content:
body:
type: text_summary_or_trimmed
label: hidden
settings:
trim_length: 600
third_party_settings: { }
weight: 0
region: content
links:
settings: { }
third_party_settings: { }
weight: 1
region: content
hidden:
langcode: true
search_api_excerpt: true

View File

@@ -0,0 +1,39 @@
uuid: dc86777a-d572-4e87-b4f1-0413cccb1a02
langcode: fr
status: true
dependencies:
config:
- core.entity_view_mode.node.teaser
- field.field.node.static.body
- node.type.static
module:
- layout_builder
- text
- user
third_party_settings:
layout_builder:
enabled: false
allow_custom: false
_core:
default_config_hash: 9mgezio6-8HiMYhQHSfouZjKyY4BFKR71Yh4kbSmAYU
id: node.static.teaser
targetEntityType: node
bundle: static
mode: teaser
content:
body:
type: text_summary_or_trimmed
label: hidden
settings:
trim_length: 100
third_party_settings: { }
weight: 0
region: content
links:
settings: { }
third_party_settings: { }
weight: 1
region: content
hidden:
langcode: true
search_api_excerpt: true

View File

@@ -0,0 +1,13 @@
uuid: a7558c64-a75d-42d5-a75e-68c909b019fd
langcode: fr
status: false
dependencies:
module:
- block_content
_core:
default_config_hash: Q7yUUYeRLByl-MCGveKKF_KhAtNICLCMJuKWfugCvso
id: block_content.full
label: Complet
description: ''
targetEntityType: block_content
cache: true

View File

@@ -0,0 +1,11 @@
uuid: 5c23d4c6-8032-4d42-a111-6e2d1a31fc37
langcode: fr
status: true
dependencies:
module:
- node
id: node.home
label: home
description: ''
targetEntityType: node
cache: true

View File

@@ -11,6 +11,7 @@ module:
better_exposed_filters: 0 better_exposed_filters: 0
block: 0 block: 0
block_class: 0 block_class: 0
block_content: 0
breakpoint: 0 breakpoint: 0
bulkdelete: 0 bulkdelete: 0
cer: 0 cer: 0
@@ -40,6 +41,7 @@ module:
editor: 0 editor: 0
email_registration: 0 email_registration: 0
embed: 0 embed: 0
entity_block: 0
entity_browser: 0 entity_browser: 0
entity_browser_enhanced: 0 entity_browser_enhanced: 0
field: 0 field: 0
@@ -54,6 +56,8 @@ module:
image: 0 image: 0
inline_entity_form: 0 inline_entity_form: 0
language: 0 language: 0
layout_builder: 0
layout_discovery: 0
link: 0 link: 0
link_attributes: 0 link_attributes: 0
linkit: 0 linkit: 0
@@ -68,6 +72,8 @@ module:
node: 0 node: 0
options: 0 options: 0
page_cache: 0 page_cache: 0
page_manager: 0
page_manager_ui: 0
pagerer: 0 pagerer: 0
path: 0 path: 0
path_alias: 0 path_alias: 0

View File

@@ -4,6 +4,7 @@ status: true
dependencies: dependencies:
config: config:
- field.storage.node.body - field.storage.node.body
- filter.format.wysiwyg
- node.type.static - node.type.static
module: module:
- text - text
@@ -22,5 +23,6 @@ default_value_callback: ''
settings: settings:
display_summary: true display_summary: true
required_summary: false required_summary: false
allowed_formats: { } allowed_formats:
- wysiwyg
field_type: text_with_summary field_type: text_with_summary

View File

@@ -0,0 +1,21 @@
uuid: a17026db-c6b5-4a6d-9eb2-dc648d8faaba
langcode: en
status: true
dependencies:
module:
- block_content
- text
_core:
default_config_hash: eS0snV_L3dx9shtWRTzm5eblwOJ7qKWC9IE-4GMTDFc
id: block_content.body
field_name: body
entity_type: block_content
type: text_with_summary
settings: { }
module: text
locked: false
cardinality: 1
translatable: true
indexes: { }
persist_with_no_fields: true
custom_storage: false

View File

@@ -0,0 +1,12 @@
uuid: fb91329a-cf33-4771-8563-a03002a85f56
langcode: fr
status: true
dependencies: { }
id: home
label: home
description: ''
use_admin_theme: false
path: /home
access_logic: and
access_conditions: { }
parameters: { }

View File

@@ -0,0 +1,18 @@
uuid: f03ff0d8-0f57-4d38-a451-4a98af9a8ff9
langcode: fr
status: true
dependencies: { }
_core:
default_config_hash: RCVWP-yHwxSNiQORMIabDgHMEVqOMW58w80BQgRFJ4k
id: node_view
label: 'Node view'
description: 'When enabled, this overrides the default Drupal behavior for displaying nodes at <em>/node/{node}</em>. If you add variants, you may use selection criteria such as node type or language or user access to provide different views of nodes. If no variant is selected, the default Drupal node view will be used. This page only affects nodes viewed as pages, it will not affect nodes viewed in lists or at other locations.'
use_admin_theme: false
path: '/node/{node}'
access_logic: and
access_conditions: { }
parameters:
node:
machine_name: node
label: Nœud
type: 'entity:node'

View File

@@ -0,0 +1,59 @@
uuid: 963f9420-969f-470d-9456-3fc481f7661f
langcode: fr
status: true
dependencies:
config:
- page_manager.page.home
- views.view.chapitres
module:
- entity_block
- layout_discovery
- views
id: home-layout_builder-0
label: 'Layout Builder'
weight: 0
variant: layout_builder
variant_settings:
id: layout_builder
label: null
weight: 0
uuid: 3a14630d-426d-4294-bdca-f76a37ffced7
sections:
-
layout_id: layout_onecol
layout_settings:
label: main
context_mapping: { }
components:
e318efd7-86c6-4a38-a53e-825027ccd254:
uuid: e318efd7-86c6-4a38-a53e-825027ccd254
region: content
configuration:
id: 'entity_block:node'
label: 'Présentation (Contenu)'
label_display: '0'
provider: entity_block
view_mode: home
context_mapping: { }
entity: '1'
weight: 0
additional: { }
3f8348bb-e1d8-485a-9914-dcdf777d9b73:
uuid: 3f8348bb-e1d8-485a-9914-dcdf777d9b73
region: content
configuration:
id: 'views_block:chapitres-block_1'
label: ''
label_display: '0'
provider: views
context_mapping: { }
views_label: ''
items_per_page: none
exposed: { }
weight: 1
additional: { }
third_party_settings: { }
page: home
selection_criteria: { }
selection_logic: and
static_context: { }

View File

@@ -8,7 +8,7 @@ slogan: ''
page: page:
403: '' 403: ''
404: '' 404: ''
front: /node/1 front: /home
admin_compact_mode: false admin_compact_mode: false
weight_select_max: 100 weight_select_max: 100
default_langcode: fr default_langcode: fr

View File

@@ -0,0 +1,553 @@
uuid: b28999fa-6d0e-47b7-9646-9a4fe6965d95
langcode: fr
status: true
dependencies:
module:
- block_content
- user
_core:
default_config_hash: HfvTcWhiVuvxchoh4DjIkXhKkj9ow2TGgHkLHSvRLq8
id: block_content
label: 'Blocs de contenu'
module: views
description: 'Trouver et gérer les blocs de contenu.'
tag: default
base_table: block_content_field_data
base_field: id
display:
default:
id: default
display_title: 'Par défaut'
display_plugin: default
position: 0
display_options:
title: 'Blocs de contenu'
fields:
info:
id: info
table: block_content_field_data
field: info
relationship: none
group_type: group
admin_label: ''
entity_type: null
entity_field: info
plugin_id: field
label: 'Description du bloc'
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: true
ellipsis: true
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: true
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: value
type: string
settings:
link_to_entity: true
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
type:
id: type
table: block_content_field_data
field: type
relationship: none
group_type: group
admin_label: ''
entity_type: block_content
entity_field: type
plugin_id: field
label: 'Type de bloc'
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: true
ellipsis: true
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: true
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: target_id
type: entity_reference_label
settings:
link: false
group_column: target_id
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
changed:
id: changed
table: block_content_field_data
field: changed
relationship: none
group_type: group
admin_label: ''
entity_type: block_content
entity_field: changed
plugin_id: field
label: 'Mis à jour'
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: true
ellipsis: true
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: true
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
type: timestamp
settings:
date_format: short
custom_date_format: ''
timezone: ''
tooltip:
date_format: long
custom_date_format: ''
time_diff:
enabled: false
future_format: '@interval hence'
past_format: '@interval ago'
granularity: 2
refresh: 60
operations:
id: operations
table: block_content
field: operations
relationship: none
group_type: group
admin_label: ''
entity_type: block_content
plugin_id: entity_operations
label: Actions
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: true
ellipsis: true
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: true
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
destination: true
pager:
type: mini
options:
offset: 0
pagination_heading_level: h4
items_per_page: 50
total_pages: null
id: 0
tags:
next: 'Suivant '
previous: ' Précédent'
expose:
items_per_page: false
items_per_page_label: 'Éléments par page'
items_per_page_options: '5, 10, 25, 50'
items_per_page_options_all: false
items_per_page_options_all_label: '- Tout -'
offset: false
offset_label: Décalage
exposed_form:
type: basic
options:
submit_button: Appliquer
reset_button: true
reset_button_label: Réinitialiser
exposed_sorts_label: 'Trier par'
expose_sort_order: true
sort_asc_label: Asc
sort_desc_label: Desc
access:
type: perm
options:
perm: 'access block library'
cache:
type: tag
options: { }
empty:
area_text_custom:
id: area_text_custom
table: views
field: area_text_custom
relationship: none
group_type: group
admin_label: ''
plugin_id: text_custom
empty: true
content: "Il n'y a pas de bloc de contenu disponible."
tokenize: false
block_content_listing_empty:
id: block_content_listing_empty
table: block_content
field: block_content_listing_empty
relationship: none
group_type: group
admin_label: ''
entity_type: block_content
plugin_id: block_content_listing_empty
label: ''
empty: true
sorts: { }
arguments: { }
filters:
info:
id: info
table: block_content_field_data
field: info
relationship: none
group_type: group
admin_label: ''
entity_type: block_content
entity_field: info
plugin_id: string
operator: contains
value: ''
group: 1
exposed: true
expose:
operator_id: info_op
label: 'Description du bloc'
description: ''
use_operator: false
operator: info_op
operator_limit_selection: false
operator_list: { }
identifier: info
required: false
remember: false
multiple: false
remember_roles:
authenticated: authenticated
anonymous: '0'
administrator: '0'
is_grouped: false
group_info:
label: ''
description: ''
identifier: ''
optional: true
widget: select
multiple: false
remember: false
default_group: All
default_group_multiple: { }
group_items: { }
type:
id: type
table: block_content_field_data
field: type
relationship: none
group_type: group
admin_label: ''
entity_type: block_content
entity_field: type
plugin_id: bundle
operator: in
value: { }
group: 1
exposed: true
expose:
operator_id: type_op
label: 'Type de bloc'
description: ''
use_operator: false
operator: type_op
operator_limit_selection: false
operator_list: { }
identifier: type
required: false
remember: false
multiple: false
remember_roles:
authenticated: authenticated
anonymous: '0'
administrator: '0'
reduce: false
is_grouped: false
group_info:
label: ''
description: ''
identifier: ''
optional: true
widget: select
multiple: false
remember: false
default_group: All
default_group_multiple: { }
group_items: { }
reusable:
id: reusable
table: block_content_field_data
field: reusable
relationship: none
group_type: group
admin_label: ''
entity_type: block_content
entity_field: reusable
plugin_id: boolean
operator: '='
value: '1'
group: 1
exposed: false
expose:
operator_id: ''
label: ''
description: ''
use_operator: false
operator: ''
operator_limit_selection: false
operator_list: { }
identifier: ''
required: false
remember: false
multiple: false
remember_roles:
authenticated: authenticated
is_grouped: false
group_info:
label: ''
description: ''
identifier: ''
optional: true
widget: select
multiple: false
remember: false
default_group: All
default_group_multiple: { }
group_items: { }
style:
type: table
options:
grouping: { }
row_class: ''
default_row_class: true
columns:
info: info
type: type
changed: changed
operations: operations
default: changed
info:
info:
sortable: true
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
type:
sortable: true
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
changed:
sortable: true
default_sort_order: desc
align: ''
separator: ''
empty_column: false
responsive: ''
operations:
sortable: false
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
override: true
sticky: false
summary: ''
empty_table: true
caption: ''
description: ''
row:
type: fields
query:
type: views_query
options:
query_comment: ''
disable_sql_rewrite: false
distinct: false
replica: false
query_tags: { }
relationships: { }
header: { }
footer: { }
display_extenders: { }
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- url.query_args
- user.permissions
tags: { }
page_1:
id: page_1
display_title: Page
display_plugin: page
position: 1
display_options:
display_extenders: { }
path: admin/content/block
menu:
type: tab
title: Blocs
description: 'Créer et modifier les blocs de contenu.'
weight: 0
menu_name: admin
parent: system.admin_content
context: '0'
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- url.query_args
- user.permissions
tags: { }

View File

@@ -0,0 +1,175 @@
uuid: 9eece6d3-6ae6-4b98-863a-489d8d76499d
langcode: fr
status: true
dependencies:
config:
- core.entity_view_mode.node.home
- node.type.chapitre
module:
- node
- user
id: chapitres
label: Chapitres
module: views
description: ''
tag: ''
base_table: node_field_data
base_field: nid
display:
default:
id: default
display_title: Default
display_plugin: default
position: 0
display_options:
title: Chapitres
fields:
title:
id: title
table: node_field_data
field: title
relationship: none
group_type: group
admin_label: ''
entity_type: node
entity_field: title
plugin_id: field
label: ''
exclude: false
alter:
alter_text: false
make_link: false
absolute: false
word_boundary: false
ellipsis: false
strip_tags: false
trim: false
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: true
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: value
type: string
settings:
link_to_entity: true
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
pager:
type: none
options:
offset: 0
items_per_page: null
exposed_form:
type: basic
options:
submit_button: Appliquer
reset_button: false
reset_button_label: Réinitialiser
exposed_sorts_label: 'Trier par'
expose_sort_order: true
sort_asc_label: Asc
sort_desc_label: Desc
access:
type: perm
options:
perm: 'access content'
cache:
type: tag
options: { }
empty: { }
sorts:
field_chapitre_num_value:
id: field_chapitre_num_value
table: node__field_chapitre_num
field: field_chapitre_num_value
relationship: none
group_type: group
admin_label: ''
plugin_id: standard
order: ASC
expose:
label: ''
field_identifier: ''
exposed: false
arguments: { }
filters:
status:
id: status
table: node_field_data
field: status
entity_type: node
entity_field: status
plugin_id: boolean
value: '1'
group: 1
expose:
operator: ''
type:
id: type
table: node_field_data
field: type
entity_type: node
entity_field: type
plugin_id: bundle
value:
chapitre: chapitre
style:
type: default
row:
type: 'entity:node'
options:
relationship: none
view_mode: home
query:
type: views_query
options:
query_comment: ''
disable_sql_rewrite: false
distinct: false
replica: false
query_tags: { }
relationships: { }
css_class: views-home-chapitres
header: { }
footer: { }
display_extenders: { }
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- 'user.node_grants:view'
- user.permissions
tags: { }
block_1:
id: block_1
display_title: Block
display_plugin: block
position: 1
display_options:
display_extenders: { }
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- 'user.node_grants:view'
- user.permissions
tags: { }

26
layout--onecol.html.twig Normal file
View File

@@ -0,0 +1,26 @@
{#
/**
* @file
* Default theme implementation to display a one-column layout.
*
* Available variables:
* - in_preview: Whether the plugin is being rendered in preview mode.
* - content: The content for this layout.
* - attributes: HTML attributes for the layout <div>.
*
* @ingroup themeable
*/
#}
{%
set classes = [
'layout',
'layout--onecol',
]
%}
{% if content %}
<div{{ attributes.addClass(classes) }}>
<div {{ region_attributes.content.addClass('layout__region', 'layout__region--content') }}>
{{ content.content }}
</div>
</div>
{% endif %}

View File

@@ -82,12 +82,13 @@ header[role="banner"]{
>div#burger-btn{ >div#burger-btn{
position:relative; position:relative;
transition-duration: 0.5s;
top: 8.5px;
&, &::before, &::after{ &, &::before, &::after{
// position: absolute; // position: absolute;
width:20px; height:3px; width:20px; height:3px;
background-color: $bleu_site; background-color: $bleu_site;
} }
top: 8.5px;
&::before, &::after{ &::before, &::after{
content: ""; content: "";
position: absolute; position: absolute;
@@ -101,7 +102,6 @@ header[role="banner"]{
bottom: 6px; bottom: 6px;
} }
transition-duration: 0.5s;
&[opened]{ &[opened]{
transform: rotate(90deg); transform: rotate(90deg);
} }
@@ -117,10 +117,10 @@ header[role="banner"]{
width:100vw; width:100vw;
height: 0; height: 0;
overflow: hidden; overflow: hidden;
transition-duration: 0.5s;
&[opened]{ &[opened]{
height: calc(100vh - $header_height); height: calc(100vh - $header_height);
} }
transition-duration: 0.5s;
&>nav{ &>nav{
padding-top: 10px; padding-top: 10px;
background-color: #fff; background-color: #fff;
@@ -148,6 +148,9 @@ header[role="banner"]{
display: block; display: block;
font-size: 0.756em; font-size: 0.756em;
padding:0 0 0.25em 0; padding:0 0 0.25em 0;
&:has(+ a:hover){
color: $rose;
}
} }
a{ a{
font-size: 1.13em; font-size: 1.13em;
@@ -175,12 +178,12 @@ header[role="banner"]{
justify-content: flex-end; justify-content: flex-end;
list-style: none; list-style: none;
li{ li{
&:not(:last-child){
}
margin-right: 1em; margin-right: 1em;
background-color: $bleu_site; background-color: $bleu_site;
color: #fff; color: #fff;
padding:0.5em 1em; padding:0.5em 1em;
&:not(:last-child){
}
} }
} }
} }
@@ -193,6 +196,7 @@ main[role="main"]{
div.layout-content{ div.layout-content{
padding:5em 0; padding:5em 0;
article{ article{
position: relative;
background-color: #fff; background-color: #fff;
padding:2em; padding:2em;
box-shadow: 0 0 10px rgba(0,0,0,0.25); box-shadow: 0 0 10px rgba(0,0,0,0.25);
@@ -203,6 +207,36 @@ main[role="main"]{
@include titre_h2; @include titre_h2;
margin:0; margin:0;
} }
div.field-chapitre-num{
background-color: $bleu_site;
color: #fff;
display: inline-flex;
gap: 0.5em;
padding: 0.5em 1em;
// transform: translateY(-3em);
position: absolute;
top:-1em;
&>*{
font-weight: 600;
}
}
}
// HOME
div.views-home-chapitres{
display: flex;
gap: 2em;
padding:1em;
>.views-row{
max-width: 700px;
article.node-type-chapitre{
h2{
@include titre_h3;
}
}
}
} }
} }
} }

View File

@@ -1,2 +1,3 @@
$bleu_site: #1642bc; $bleu_site: #1642bc;
$bleu_typo: #0b1e52; $bleu_typo: #0b1e52;
$rose: #f661e2

View File

@@ -16,4 +16,8 @@ body{
color: $bleu_typo; color: $bleu_typo;
} }
@mixin titre_h3{
@include titre_h2();
font-size: 2em;
}

View File

@@ -30,7 +30,7 @@ function mathallo_preprocess_page(&$variables) {
} }
function mathallo_preprocess_region(&$variables) { function mathallo_preprocess_region(&$variables) {
if (isset($variables["attributes"]['class'])) { if (!isset($variables["attributes"]['class'])) {
$variables["attributes"]['class'] = []; $variables["attributes"]['class'] = [];
} }
$variables["attributes"]['class'][] = "wrapper"; $variables["attributes"]['class'][] = "wrapper";
@@ -67,7 +67,11 @@ function parse_menu_item(&$items, $key){
* Implements hook_preprocess_HOOK() for node.html.twig. * Implements hook_preprocess_HOOK() for node.html.twig.
*/ */
function mathallo_preprocess_node(&$variables) { function mathallo_preprocess_node(&$variables) {
$node_type = $variables['node']->getType();
if (!isset($variables["attributes"]['class'])) {
$variables["attributes"]['class'] = [];
}
$variables["attributes"]['class'][] = "node-type-{$node_type}";
} }

View File

@@ -0,0 +1,32 @@
{#
/**
* @file
* Default theme implementation to display a block.
*
* Available variables:
* - plugin_id: The ID of the block implementation.
* - label: The configured label of the block if visible.
* - configuration: A list of the block's configuration values.
* - label: The configured label for the block.
* - label_display: The display settings for the label.
* - provider: The module or other provider that provided this block plugin.
* - Block plugin specific settings will also be stored here.
* - in_preview: Whether the plugin is being rendered in preview mode.
* - content: The content of this block.
* - attributes: array of HTML attributes populated by modules, intended to
* be added to the main container tag of this template.
* - id: A valid HTML ID and guaranteed unique.
* - title_attributes: Same as attributes, except applied to the main title
* 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.
*
* @see template_preprocess_block()
*
* @ingroup themeable
*/
#}
{{ content }}

View File

@@ -0,0 +1,40 @@
{#
/**
* @file
* Default theme implementation to display a block.
*
* Available variables:
* - plugin_id: The ID of the block implementation.
* - label: The configured label of the block if visible.
* - configuration: A list of the block's configuration values.
* - label: The configured label for the block.
* - label_display: The display settings for the label.
* - provider: The module or other provider that provided this block plugin.
* - Block plugin specific settings will also be stored here.
* - in_preview: Whether the plugin is being rendered in preview mode.
* - content: The content of this block.
* - attributes: array of HTML attributes populated by modules, intended to
* be added to the main container tag of this template.
* - id: A valid HTML ID and guaranteed unique.
* - title_attributes: Same as attributes, except applied to the main title
* 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.
*
* @see template_preprocess_block()
*
* @ingroup themeable
*/
#}
<div{{ attributes }}>
{{ title_prefix }}
{% if label %}
<h2{{ title_attributes }}>{{ label }}</h2>
{% endif %}
{{ title_suffix }}
{% block content %}
{{ content }}
{% endblock %}
</div>

View File

@@ -0,0 +1,64 @@
{#
/**
* @file
* Default theme implementation for a field.
*
* To override output, copy the "field.html.twig" from the templates directory
* to your theme's directory and customize it, just like customizing other
* Drupal templates such as page.html.twig or node.html.twig.
*
* Instead of overriding the theming for all fields, you can also just override
* theming for a subset of fields using
* @link themeable Theme hook suggestions. @endlink For example,
* here are some theme hook suggestions that can be used for a field_foo field
* on an article node type:
* - field--node--field-foo--article.html.twig
* - field--node--field-foo.html.twig
* - field--node--article.html.twig
* - field--field-foo.html.twig
* - field--text-with-summary.html.twig
* - field.html.twig
*
* Available variables:
* - attributes: HTML attributes for the containing element.
* - label_hidden: Whether to show the field label or not.
* - title_attributes: HTML attributes for the title.
* - label: The label for the field.
* - multiple: TRUE if a field can contain multiple items.
* - items: List of all the field items. Each item contains:
* - attributes: List of HTML attributes for each item.
* - content: The field item's content.
* - entity_type: The entity type to which the field belongs.
* - field_name: The name of the field.
* - field_type: The type of the field.
* - label_display: The display settings for the label.
*
* @see template_preprocess_field()
*
* @ingroup themeable
*/
#}
{%
set title_classes = [
label_display == 'visually_hidden' ? 'visually-hidden',
]
%}
{% if label_hidden %}
{% if multiple %}
<div{{ attributes }}>
{% for item in items %}
<div{{ item.attributes }}>{{ item.content }}</div>
{% endfor %}
</div>
{% else %}
{% for item in items %}
<div{{ attributes }}>{{ item.content }}</div>
{% endfor %}
{% endif %}
{% else %}
<label>{{ label }}</label>
{% for item in items %}
<div{{ item.attributes }}>{{ item.content }}</div>
{% endfor %}
{% endif %}

View File

@@ -0,0 +1,72 @@
{#
/**
* @file
* Default theme implementation for a field.
*
* To override output, copy the "field.html.twig" from the templates directory
* to your theme's directory and customize it, just like customizing other
* Drupal templates such as page.html.twig or node.html.twig.
*
* Instead of overriding the theming for all fields, you can also just override
* theming for a subset of fields using
* @link themeable Theme hook suggestions. @endlink For example,
* here are some theme hook suggestions that can be used for a field_foo field
* on an article node type:
* - field--node--field-foo--article.html.twig
* - field--node--field-foo.html.twig
* - field--node--article.html.twig
* - field--field-foo.html.twig
* - field--text-with-summary.html.twig
* - field.html.twig
*
* Available variables:
* - attributes: HTML attributes for the containing element.
* - label_hidden: Whether to show the field label or not.
* - title_attributes: HTML attributes for the title.
* - label: The label for the field.
* - multiple: TRUE if a field can contain multiple items.
* - items: List of all the field items. Each item contains:
* - attributes: List of HTML attributes for each item.
* - content: The field item's content.
* - entity_type: The entity type to which the field belongs.
* - field_name: The name of the field.
* - field_type: The type of the field.
* - label_display: The display settings for the label.
*
* @see template_preprocess_field()
*
* @ingroup themeable
*/
#}
{%
set title_classes = [
label_display == 'visually_hidden' ? 'visually-hidden',
]
%}
{% if label_hidden %}
{% if multiple %}
<div{{ attributes }}>
{% for item in items %}
<div{{ item.attributes }}>{{ item.content }}</div>
{% endfor %}
</div>
{% else %}
{% for item in items %}
<div{{ attributes }}>{{ item.content }}</div>
{% endfor %}
{% endif %}
{% else %}
<div{{ attributes }}>
<div{{ title_attributes.addClass(title_classes) }}>{{ label }}</div>
{% if multiple %}
<div>
{% endif %}
{% for item in items %}
<div{{ item.attributes }}>{{ item.content }}</div>
{% endfor %}
{% if multiple %}
</div>
{% endif %}
</div>
{% endif %}

View File

@@ -0,0 +1,14 @@
{#
/**
* @file
* Default theme implementation to display a one-column layout.
*
* Available variables:
* - in_preview: Whether the plugin is being rendered in preview mode.
* - content: The content for this layout.
* - attributes: HTML attributes for the layout <div>.
*
* @ingroup themeable
*/
#}
{{ content.content }}

View File

@@ -0,0 +1,81 @@
{#
/**
* @file
* Default theme implementation 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: (optional) 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: (optional) Themed creation date field.
* - author_name: (optional) 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'.
*
* @see template_preprocess_node()
*
* @ingroup themeable
*/
#}
<article{{ attributes }}>
<div class="field-chapitre-num">
{{ content.field_chapitre_num }}
</div>
{{ title_prefix }}
{% if label and not page %}
<h2{{ title_attributes }}>
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
</h2>
{% endif %}
{{ title_suffix }}
<div{{ content_attributes }}>
{{ content|without('field_chapitre_num') }}
</div>
</article>

View File

@@ -0,0 +1,71 @@
{#
/**
* @file
* Default theme implementation for main view template.
*
* Available variables:
* - attributes: Remaining HTML attributes for the element.
* - css_name: A CSS-safe version of the view name.
* - css_class: The user-specified classes names, if any.
* - header: The optional header.
* - footer: The optional footer.
* - rows: The results of the view query, if any.
* - empty: The content to display if there are no rows.
* - pager: The optional pager next/prev links to display.
* - exposed: Exposed widget form/info to display.
* - feed_icons: Optional feed icons to display.
* - more: An optional link to the next page of results.
* - title: Title of the view, only used when displaying in the admin preview.
* - title_prefix: Additional output populated by modules, intended to be
* displayed in front of the view title.
* - title_suffix: Additional output populated by modules, intended to be
* displayed after the view title.
* - attachment_before: An optional attachment view to be displayed before the
* view content.
* - attachment_after: An optional attachment view to be displayed after the
* view content.
* - dom_id: Unique id for every view being printed to give unique class for
* JavaScript.
*
* @see template_preprocess_views_view()
*
* @ingroup themeable
*/
#}
{%
set classes = [
dom_id ? 'js-view-dom-id-' ~ dom_id,
]
%}
<div{{ attributes.addClass(classes) }}>
{{ title_prefix }}
{{ title }}
{{ title_suffix }}
{% if header %}
<header>
{{ header }}
</header>
{% endif %}
{{ exposed }}
{{ attachment_before }}
{% if rows -%}
{{ rows }}
{% elseif empty -%}
{{ empty }}
{% endif %}
{{ pager }}
{{ attachment_after }}
{{ more }}
{% if footer %}
<footer>
{{ footer }}
</footer>
{% endif %}
{{ feed_icons }}
</div>