Come aggiungere un attributo di classe a un blocco?

Come posso aggiungere un attributo di classe a un blocco Drupal 8?

Ci sono molti esempi nel core di Drupal come i moduli di aiuto che imposta gli attributi ruolo per il blocco. Quindi in seguito posso aggiungere una classe con successo.

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

È possibile aggiungere una classe senza lhook preprocesso? Idealmente allinterno del file del plug-in di blocco situato in src / Plugin / Block /?

Ciò aiuterebbe a mantenere tutto il codice relativo a un blocco contenuto in una posizione.

Risposta

Hai provato a impostare #attributes sullarray di rendering restituito dal nostro plug-in di blocco?

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

Guardando BlockViewBuilder::preRender(), dovrebbe funzionare.

Risposta

Puoi controllare il modulo Block Class .

Block Class consente agli utenti di aggiungere classi a qualsiasi blocco tramite linterfaccia di configurazione del blocco. Aggiungendo un brevissimo snippet di PHP a un tema “s block.tpl.php file, le classi possono essere aggiunte allelemento genitore di un blocco. Evviva un tema dei blocchi più potente!

Rispondi

trova un modello di ramoscello nomina il suggerimento per il tuo blocco (usando i commenti di debug twig) e sovrascriverlo

temi / templates / 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 %} 

Risposta

1. Crea il file hello.config

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

2. Allega il file della libreria 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. Imposta la classe nel file my_module_name.module

function my_module_name_preprocess_block (array & $ variables) {

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

// Ottieni lID del blocco

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

// Ottieni la regione con il blocco

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

4. my_module_name.libraries.yml

qui, my_module_name è il nome della mia libreria

inserisci qui la descrizione dellimmagine

5. Crea il tuo file css css / my_module_name.css

.red {background: red! Important; }

.green {background: green! important; }

.yellow {background: yellow! important; }

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *