Hvordan tilføjes en klasseattribut til en blok?

Hvordan kan jeg tilføje en klasseattribut til en Drupal 8-blok?

Der er mange eksempler i Drupal-kernen såsom hjælpemodulerne der angiver attributterne rolle for blokken. Så efterfølgende kan jeg tilføje en klasse med succes.

/** * 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 muligt at tilføje en klasse uden forbehandlingskrogen? Ideelt set inden for blok-plugin-filen, der er placeret i src / Plugin / Block /?

Dette hjælper med at holde al den kode, der er relateret til en blok, der findes på et sted.

Svar

Har du forsøgt bare at indstille #attributter på gengivelsesarrayet, der returneres af vores blokplugin?

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

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

Svar

Du kan kontrollere Bloker klasse -modul.

Blokklasse giver brugerne mulighed for at tilføje klasser til en hvilken som helst blok gennem blokens konfigurationsinterface. Ved at tilføje et meget kort uddrag af PHP til et tema “s block.tpl.php fil, kan klasser føjes til det overordnede element i en blok. Hurra for mere kraftfuld bloktema!

Svar

find en kvistskabelon forslag til navn til din blok (ved hjælp af kommentar til fejlretningsfejl) og tilsidesætte den

temaer / skabeloner / blok – my-custom-block.html.twig

{% 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. Opret hello.config-fil

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

2. Vedhæft din biblioteksfil 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. Indstil klassen i my_module_name.module-fil

funktion 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"); 

// Hent idet for blokken

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

// Få regionen, der har blokere

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

4. my_module_name.libraries.yml

her er mit_module_name navnet på mit bibliotek

indtast billedebeskrivelse her

5. Opret din css-fil css / my_module_name.css

. Rød {baggrund: rød! Vigtig; }

.grøn {baggrund: grøn! vigtig; }

. gul {baggrund: gul! vigtig; }

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *