id() == "programmes"){ $rows = $variables['rows']; foreach ($rows as $id => $row) { $variables['rows'][$id]['attributes'] = new Attribute(); $c = $variables['rows'][$id]['content']["#row"]->nid; $variables['rows'][$id]['attributes']->addClass("popsu-node-".$c); } } }; /* implements template_preprocess_region() */ function popsu_preprocess_region(&$variables) { if (isset($variables['region'])) { $variables['attributes']['class'][] = $variables['region'].'_container'; } } /** * Implements hook_preprocess_page(). */ // function popsu_preprocess_page(&$variables){ // $rows = $variables['rows']; // } function popsu_preprocess_views_view_grid(&$variables){ $rows = $variables['rows']; foreach ($rows as $id => $row) { $entity = $row["#row"]->_entity; $prog_id = $entity->get('field_programme')->getString(); // une fois qu'on obtient l'id du programme // on crée une class pour chaque colonne $options = $row["#view"]->style_plugin->options; //V0 $options['col_class_custom'] = "popsu-node-".$prog_id; //notes // $attrs['class'] = "popsu-node-".$prog_id; // $rows[$id]["#options"]["col_class_custom"] = new Attribute($attrs); //$rows[$id]["#options"]["col_class_custom"] = 'class'; } } function popsu_preprocess_views_view_field(&$variables){ // check if link to entoty option is true $settings = isset($variables['field']->options['settings']) ? $variables['field']->options['settings'] : false; if ($settings && isset($settings['link_to_entity']) && $settings['link_to_entity']) { // get the entity and build the classes $entity = $variables['row']->_entity; // build new classes $new_classes = array( $entity->getEntityTypeId(), $entity->getEntityTypeId().'-'.$entity->bundle(), $entity->getEntityTypeId().'-'.$entity->bundle().'-'.$entity->id(), ); // get the entity link and url $link = $entity->toLink(); $url = $entity->toLink()->getUrl(); // set the active_class option to the url $url->setOption('set_active_class', true); // add new classes to the url (without overwriting existing once) $options = $url->getOptions(); if(isset($options['attributes']) && $attributes = $options['attributes']){ if(isset($attributes['class']) && $classes = $attributes['class']){ $attributes['class'] += $new_classes; }else{ $attributes['class'] = $new_classes; } }else{ $attributes = array( "class" => $new_classes ); } $url->setOption('attributes', $attributes); // update the url of the link $link->setUrl($url); // overwrite the output $variables['output'] = $link->toRenderable(); } }