Hvordan legge til et klasseattributt til en blokk?

Hvordan kan jeg legge til et klasseattributt til en Drupal 8-blokk?

Det er mange eksempler i Drupal-kjerne, for eksempel hjelpemodulene som setter attributtene rolle for blokken. Så etterpå kan jeg lykkes med å legge til en klasse.

/** * Implements hook_preprocess_HOOK() for block templates. */ function mymodule_preprocess_block(&$variables) { if ($variables["plugin_id"] == "mymodule_my_block") { $variables["attributes"]["class"][] = "my-nice-block"; } } 

Er det mulig å legge til en klasse uten forbehandlingskroken? Ideelt sett innenfor blokk-plugin-filen som ligger i src / Plugin / Block /?

Dette vil bidra til å holde all koden relatert til en blokk som finnes på ett sted.

Svar

Har du prøvd å bare sette #attributter på gjengivelsesmatrisen som er returnert av blokk-pluginet vårt?

$build["#attributes"]["class"][] = "my-nice-block"; 

Ser vi på BlockViewBuilder::preRender(), det skal fungere.

Svar

Du kan sjekke Blokker klasse -modulen.

Block Class tillater brukere å legge til klasser i hvilken som helst blokk gjennom blokkens konfigurasjonsgrensesnitt. Ved å legge til et veldig kort utdrag av PHP til temaet «s block.tpl.php fil, kan klasser legges til i det overordnede elementet i en blokk. Hurra for mer kraftfull blokkering!

Svar

finn en kvistmal navneforslag for blokkeringen din (ved hjelp av feilsøkingskommentarer) og overstyr den

temaer / maler / blokk – my-custom-block.html.twig / p>

{% extends "block.html.twig" %} {# /** * @file * Theme override for tabs. */ #} {% block title %} {{ title_prefix }} {% if label %} <h2{{ title_attributes.addClass(title_classes, "accordion") }}{{ title_attributes.setAttribute("id", "campus") }}> {{ label }} <i class="fa fa-plus" aria-hidden="true"></i> </h2> {% endif %} {{ title_suffix }} {% endblock %} 

Svar

1. Opprett hello.config-fil

 my_module_name/config/install/my_module_name.config content this code: color :"blue" color_red: "red" 

2. Legg til biblioteksfilen my_module_name.libraries.yml

 // This function below is located on my_module_name.module file function my_module_name_page_attachments(array &$page){ $page["#attached"]["library"][]= "my_module_name/library_name"; } 

3. Sett klassen i my_module_name.module-filen

funksjon my_module_name_preprocess_block (array & $ variabler) {

// Get the value of my color content in my_module_name/config/install/my_module_name.config $class = \Drupal::config("my_module_name.config")->get("color"); 

// Få ID for blokken

 $id= $variables["elements"]["#id"]; $block = Block::load($id); 

// Få regionen som har blokker

 $region = $block->getRegion(); if($region == "name_of_the_block_id"){ // Set the class $variables["attributes"]["class"][] = $class ; } } 

4. my_module_name.libraries.yml

her, my_module_name er navnet på biblioteket mitt

skriv inn bildebeskrivelse her

5. Opprett css-filen din css / my_module_name.css

.rød {bakgrunn: rød! Viktig; }

.grønn {bakgrunn: grønn! viktig; }

.gul {bakgrunn: gul! viktig; }

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *