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) // S’assurer que l’article 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'] = []; } }