237 lines
7.9 KiB
PHP
237 lines
7.9 KiB
PHP
<?php
|
|
|
|
|
|
use Drupal\Core\Url;
|
|
use Drupal\Core\Link;
|
|
use Drupal\Core\Render\Markup;
|
|
use Drupal\Component\Utility\Html;
|
|
|
|
|
|
/**
|
|
* @file
|
|
* Functions to support theming in the reha theme.
|
|
*/
|
|
|
|
/**
|
|
* Implements hook_preprocess_HOOK() for html.html.twig.
|
|
*/
|
|
function reha_preprocess_html(&$variables) {
|
|
$node = \Drupal::routeMatch()->getParameter('node');
|
|
if ($node){
|
|
$variables['attributes']['class'][] = 'node-type-' . $node->bundle();
|
|
$variables['attributes']['class'][] = 'node-id-' . $node->id();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Implements hook_preprocess_HOOK() for node.html.twig.
|
|
*/
|
|
|
|
function reha_preprocess_node(&$variables) {
|
|
$node = &$variables['node'];
|
|
$variables['attributes']['class'][] = 'node-type-' . $node->gettype();
|
|
|
|
if ($node->getType() == 'site' || $node->getType() == 'ressource' || $node->getType() == 'actualite') {
|
|
$fields_to_exclude = [
|
|
'field_image', // Remplacez par le nom machine exact de votre champ image
|
|
];
|
|
|
|
$filtered_content = [];
|
|
$image_field_content = '';
|
|
$body_field_content = '';
|
|
$files_field_content = '';
|
|
$liens_field_content = '';
|
|
|
|
foreach ($variables['content'] as $field_name => $field_content) {
|
|
if ($field_name == 'body') {
|
|
$body_field_content = $field_content;
|
|
} elseif ($field_name == 'field_fichiers') {
|
|
$files_field_content = $field_content;
|
|
} elseif ($field_name == 'field_liens') {
|
|
$liens_field_content = $field_content;
|
|
} elseif (!in_array($field_name, $fields_to_exclude)) {
|
|
$filtered_content[$field_name] = $field_content;
|
|
} else {
|
|
$image_field_content = $field_content;
|
|
}
|
|
}
|
|
|
|
$variables['filtered_content'] = $filtered_content;
|
|
$variables['image_field_content'] = $image_field_content;
|
|
$variables['body_field_content'] = $body_field_content;
|
|
$variables['files_field_content'] = $files_field_content;
|
|
$variables['liens_field_content'] = $liens_field_content;
|
|
}
|
|
|
|
// if ($node->getType() == 'site') {
|
|
// $blocks_to_exclude = [
|
|
// 'block-entity-fieldnodefield-image',
|
|
// ];
|
|
|
|
// $filtered_block_content = [];
|
|
// $image_block_content = '';
|
|
|
|
// foreach ($variables['content'] as $block_name => $field_content) {
|
|
// if (!in_array($block_name, $blocks_to_exclude)) {
|
|
// $filtered_block_content[$block_name] = $field_content;
|
|
// } else {
|
|
// $image_block_content = $field_content;
|
|
// }
|
|
// }
|
|
|
|
// // Set variables for the template
|
|
// $variables['filtered_block_content'] = $filtered_block_content;
|
|
// $variables['image_block_content'] = $image_block_content;
|
|
|
|
// }
|
|
}
|
|
|
|
/**
|
|
* Implements hook_preprocess_HOOK() for page templates.
|
|
*/
|
|
// function reha_preprocess_page(&$variables) {
|
|
// // Vérifiez si c'est une page de nœud.
|
|
// if ($node = \Drupal::routeMatch()->getParameter('node')) {
|
|
// if ($node instanceof \Drupal\node\NodeInterface) {
|
|
// // Ajoutez une classe unique basée sur le nid (Node ID).
|
|
// $variables['attributes']['class'][] = 'page-node-' . $node->id();
|
|
|
|
// // Ajoutez un ID unique basé sur le nid.
|
|
// $variables['attributes']['id'] = 'page-node-' . $node->id();
|
|
// }
|
|
// }
|
|
// else {
|
|
// // Si ce n'est pas une page de nœud, vous pouvez ajouter un ID basé sur le nom de la route.
|
|
// $route_name = \Drupal::routeMatch()->getRouteName();
|
|
// $variables['attributes']['id'] = 'page-' . str_replace('.', '-', $route_name);
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// /**
|
|
// * Implements hook_preprocess_HOOK() for node templates.
|
|
// */
|
|
// function reha_preprocess_node(&$variables) {
|
|
// if ($variables['node']->getType() == 'site') {
|
|
// $fields_to_exclude = [
|
|
// 'field--type-image', // Remplacez par le nom machine exact de votre champ image
|
|
// ];
|
|
|
|
// $filtered_content = [];
|
|
// $image_field_content = '';
|
|
|
|
// foreach ($variables['content'] as $field_name => $field_content) {
|
|
// if (!in_array($field_name, $fields_to_exclude)) {
|
|
// $filtered_content[$field_name] = $field_content;
|
|
// } else {
|
|
// $image_field_content = $field_content;
|
|
// }
|
|
// }
|
|
|
|
// $variables['filtered_content'] = $filtered_content;
|
|
// $variables['image_field_content'] = $image_field_content;
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
/**
|
|
* Prepares variables for block templates.
|
|
*
|
|
* Default template: block.html.twig.
|
|
*
|
|
* Prepares the values passed to the theme_block function to be passed
|
|
* into a pluggable template engine. Uses block properties to generate a
|
|
* series of template file suggestions. If none are found, the default
|
|
* block.html.twig is used.
|
|
*
|
|
* Most themes use their own copy of block.html.twig. The default is located
|
|
* inside "core/modules/block/templates/block.html.twig". Look in there for the
|
|
* full list of available variables.
|
|
*
|
|
* @param array $variables
|
|
* An associative array containing:
|
|
* - elements: An associative array containing the properties of the element.
|
|
* Properties used: #block, #configuration, #children, #plugin_id.
|
|
*/
|
|
|
|
//https://www.hashbangcode.com/article/drupal-9-programmatically-creating-and-using-urls-and-links
|
|
|
|
function reha_preprocess_block(&$variables) {
|
|
|
|
// Conserver les IDs existants et générer un ID unique uniquement si aucun ID n'est présent
|
|
if (empty($variables['attributes']['id'])) {
|
|
$block_id = 'block-' . uniqid();
|
|
$variables['attributes']['id'] = $block_id;
|
|
}
|
|
|
|
if ($variables['plugin_id'] === "user_login_block") {
|
|
$url = new Url('user.register', [], ['query' => ['destination' => '/node/add/operation']]);
|
|
$link = new Link('proposer une opération', $url);
|
|
$variables['content']['reha'] = array(
|
|
'#theme' => 'item_list',
|
|
'#items' => [
|
|
'operations' => [
|
|
"add_operation" => $link->toRenderable(),
|
|
"description" => [
|
|
"#markup" => Markup::create("<p>Créer un compte pour charger une opération</p>")
|
|
]
|
|
]
|
|
]
|
|
);
|
|
}
|
|
if ($variables['plugin_id'] === "page_title_block") {
|
|
if (\Drupal::routeMatch()->getRouteName() === 'node.add') {
|
|
$node_type = \Drupal::routeMatch()->getParameter('node_type');
|
|
if ($node_type->id() === 'operation') {
|
|
$variables['content'] = [
|
|
'#type' => 'page_title',
|
|
'#title' => 'Proposer une opération'
|
|
];
|
|
}
|
|
}
|
|
|
|
// // Extraction du texte du <h2> et transformation en ID
|
|
// if (isset($variables['content']['#contextual_links']['block']['h2'])) {
|
|
// $h2_text = $variables['content']['#contextual_links']['block']['h2'];
|
|
// $block_id = Html::cleanCssIdentifier($h2_text);
|
|
// $variables['attributes']['id'] = $block_id;
|
|
// } elseif (isset($variables['content']['#block_content']['body']['0']['#text'])) {
|
|
// $h2_text = $variables['content']['#block_content']['body']['0']['#text'];
|
|
// $block_id = Html::cleanCssIdentifier(strip_tags($h2_text));
|
|
// $variables['attributes']['id'] = $block_id;
|
|
// } else {
|
|
// // Fallback ID if no <h2> is found
|
|
// $block_id = Html::cleanCssIdentifier($variables['plugin_id']);
|
|
// $variables['attributes']['id'] = $block_id;
|
|
// }
|
|
|
|
}
|
|
// if ($variables['plugin_id'] == 'actus-block-1') {
|
|
// $fields_to_exclude = [
|
|
// 'field_image', // Remplacez par le nom machine exact du champ que vous souhaitez exclure
|
|
// ];
|
|
|
|
// $filtered_content = [];
|
|
// $excluded_field_content = '';
|
|
|
|
// foreach ($variables['content'] as $field_name => $field_content) {
|
|
// if (!in_array($field_name, $fields_to_exclude)) {
|
|
// $filtered_content[$field_name] = $field_content;
|
|
// } else {
|
|
// $excluded_field_content = $field_content;
|
|
// }
|
|
// }
|
|
|
|
// $variables['filtered_content'] = $filtered_content;
|
|
// $variables['excluded_field_content'] = $excluded_field_content;
|
|
// }
|
|
|
|
}
|
|
|