Files
d9-eql/web/themes/custom/eql/eql.theme
T
2025-05-23 09:10:23 +02:00

216 lines
7.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/*
* @files
* Theme Template Funtions
*/
// use Drupal\Core\Template\Attribute;
// use Drupal\Core\Link;
// use Drupal\Core\Url;
use Drupal\Component\Utility\Html;
use Drupal\Component\Transliteration\TransliterationInterface;
use Drupal\taxonomy\Entity\Term;
use Drupal\Core\Template\Attribute;
function eql_preprocess_html(&$variables) {
$node = \Drupal::routeMatch()->getParameter('node');
if ($node){
$variables['attributes']['class'][] = 'node-type-' . $node->bundle();
$variables['attributes']['class'][] = 'node-id-' . $node->id();
}
}
function eql_preprocess_node(&$variables){
$node = &$variables['node'];
$variables['attributes']['class'][] = 'node-type-' . $node->gettype();
if($node->gettype() == "actualite") {
$actu_type = $node->get('field_actu_type')->getString();
$variables['attributes']['class'][] = 'actu-type-' . $actu_type;
}
if($node->gettype() == "offre_de_service") {
$type_protagoniste = $node->get('field_type_de_protagoniste')->getString();
$variables['attributes']['class'][] = 'type-de-protagoniste-' . $type_protagoniste;
}
// if ($node->hasField('field_type_de_ressource') && !$node->get('field_type_de_ressource')->isEmpty()) {
// // Récupère la valeur de field_type_de_ressource
// $type_de_ressource_entity = $node->get('field_type_de_ressource')->entity;
// if ($type_de_ressource_entity) {
// $type_de_ressource_name = $type_de_ressource_entity->getName();
// // Ajoute la classe CSS basée sur la valeur du type de ressource
// $variables['attributes']['class'][] = 'type-de-ressource-' . Html::cleanCssIdentifier($type_de_ressource_name);
// }
// }
// if ($node->getType() === 'ressource' && $node->hasField('field_type_de_ressource') && !$node->get('field_type_de_ressource')->isEmpty()) {
// foreach ($node->get('field_type_de_ressource')->referencedEntities() as $term) {
// $label = $term->label(); // ex: "Presse"
// $class = 'type-' . Html::cleanCssIdentifier(strtolower($label));
// $variables['attributes']['class'][] = $class;
// }
// }
}
function eql_preprocess_field(&$variables) {
$node = \Drupal::routeMatch()->getParameter('node');
$field_name = &$variables['field_name'];
if($node) {
if ($field_name == 'field_type_de_protagoniste'){
$type_protagoniste = $node->get('field_type_de_protagoniste')->getString();
$variables['attributes']['class'][] = 'type-de-protagoniste-' . $type_protagoniste;
}
}
$field_name = &$variables['field_name'];
if($node) {
if ($field_name == 'field-type-de-ressource'){
$type_ressource = $node->get('field-type-de-ressource')->getString();
$variables['attributes']['class'][] = 'type-de-ressource-' . $type_ressource;
}
}
}
////////////
function eql_preprocess_layout__threecol_25_50_25(&$variables) {
$node = \Drupal::routeMatch()->getParameter('node');
if($node->gettype() == "projet"){
$variables['content']['top_bottom'] = []; /////// déclare les nvx array
$variables['content']['top_right'] = [];
$variables['content']['top_left'] = [];
$variables['content']['top_bottom_left'] = [];
foreach ($variables['content']['top'] as $key => $value) {
if(isset($value['#base_plugin_id']) && $value['#base_plugin_id']== 'entity_field'){ ////// isset pour voir si existe && si oui fait ce que tu as à faire. $Value c'est l'attribut
if($value['#derivative_plugin_id']=="node:field_region" || $value['#derivative_plugin_id']=="node:field_adresse") {
$variables['content']['top_bottom_left'][] = $variables['content']['top'][$key];
unset($variables["content"]["top"][$key]);
}
if($value['#derivative_plugin_id']=="node:field_type_de_moa" || $value['#derivative_plugin_id']=="node:field_type_de_projet" || $value['#derivative_plugin_id']=="node:field_etape_du_projet") {
$variables['content']['top_bottom'][] = $variables['content']['top'][$key];
unset($variables["content"]["top"][$key]);
}
if($value['#derivative_plugin_id']=="node:title" || $value['#derivative_plugin_id']=="node:field_equipe" || $value['#derivative_plugin_id']=="node:field_incube"){
$variables['content']['top_right'][] = $variables['content']['top'][$key];
unset($variables["content"]["top"][$key]);
}
if($value['#derivative_plugin_id']=="node:field_photo"){
$variables['content']['top_left'][] = $variables['content']['top'][$key];
unset($variables["content"]["top"][$key]);
}
}
}
}
}
// function eql_preprocess_views_view_unformatted(&$variables) {
// // On utilise le service de translittération de Drupal
// $transliterator = \Drupal::service('transliteration');
// foreach ($variables['rows'] as &$row) {
// if (isset($row['content']['#node'])) {
// $node = $row['content']['#node'];
// if ($node->hasField('field_type_de_ressource') && !$node->get('field_type_de_ressource')->isEmpty()) {
// foreach ($node->get('field_type_de_ressource')->referencedEntities() as $term) {
// $label = $term->label();
// // Supprimer les accents
// $label_ascii = $transliterator->transliterate($label);
// // Nettoyer pour que ce soit une classe CSS valide
// $class = 'type-' . Html::cleanCssIdentifier(strtolower($label_ascii));
// $row['attributes']->addClass($class);
// }
// }
// }
// }
// }
function eql_preprocess_views_view_unformatted(array &$variables) {
$view = $variables['view'];
if ($view->id() === 'base_de_donnees') {
$transliterator = \Drupal::service('transliteration');
$allowed_types = [
'type-paroles-de-laureats',
'type-publication-issue-du-programme-eqld',
'type-presse',
'type-projets-en-images',
];
$slides = [];
foreach ($allowed_types as $type) {
$slides[$type] = [
'label' => ucwords(str_replace(['type-', '-', '---'], ['', ' ', ' / '], $type)),
'rows' => [],
];
}
$unclassified_rows = [];
foreach ($variables['rows'] as &$row) {
$matched = FALSE;
if (!isset($row['content']['#node'])) {
$unclassified_rows[] = $row;
continue;
}
$node = $row['content']['#node'];
if ($node->hasField('field_type_de_ressource') && !$node->get('field_type_de_ressource')->isEmpty()) {
foreach ($node->get('field_type_de_ressource')->referencedEntities() as $term) {
$label = $term->label();
$label_ascii = $transliterator->transliterate($label);
$type_class = 'type-' . Html::cleanCssIdentifier(strtolower($label_ascii));
// ✅ Ajoute la classe sur le conteneur .views-row
if (!empty($row['attributes'])) {
$row['attributes']->addClass($type_class);
}
// ✅ Ajoute la classe aussi sur l'article (si tu veux)
// Sassurer que larticle a un attribut HTML
if (!isset($row['content']['#attributes']) || !($row['content']['#attributes'] instanceof Attribute)) {
$row['content']['#attributes'] = new Attribute();
}
$row['content']['#attributes']->addClass($type_class);
if (isset($slides[$type_class])) {
$slides[$type_class]['rows'][] = $row;
$matched = TRUE;
}
}
}
if (!$matched) {
$unclassified_rows[] = $row;
}
}
$variables['grouped_rows'] = array_filter($slides, fn($s) => !empty($s['rows']));
$variables['unclassified_rows'] = $unclassified_rows;
$variables['rows'] = [];
}
}