Hur lägger jag till ett klassattribut i ett block?

Hur kan jag lägga till ett klassattribut till ett Drupal 8-block?

Det finns många exempel i Drupal-kärnan som hjälpmodulerna som ställer in attributen roll för blocket. Så efter det kan jag lyckas lägga till en klass.

/** * 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"; } } 

Är det möjligt att lägga till en klass utan förbehandlingshaken? Helst inom block-plugin-filen i src / Plugin / Block /?

Detta skulle hjälpa till att hålla all kod relaterad till ett block som finns på en plats.

Svar

Har du försökt att bara ställa in #attribut på renderingsmatrisen som returneras av vårt blockplugin?

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

Tittar på BlockViewBuilder::preRender(), det ska fungera.

Svar

Du kan kontrollera Blockera klass -modulen.

Blockklass tillåter användare att lägga till klasser i valfritt block genom blockets konfigurationsgränssnitt. Genom att lägga till ett mycket kort utdrag av PHP till temat ”s block.tpl.php fil kan klasser läggas till i blockets överordnade element. Hurra för mer kraftfull blocktema!

Svar

hitta en kvistmall namnförslag för ditt block (med hjälp av felsökningskommentarer) och åsidosätt det

teman / mallar / block – 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. Skapa hello.config-fil

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

2. Bifoga 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. Ställ in klassen i my_module_name.module-filen

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

// Få blockets ID

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

// Få regionen som har blockera

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

4. my_module_name.libraries.yml

här, my_module_name är namnet på mitt bibliotek

ange bildbeskrivning här

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

.röd {bakgrund: röd! Viktigt; }

.grön {bakgrund: grön! viktigt; }

.gul {bakgrund: gul! viktigt; }

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *