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
5. Crea il tuo file css css / my_module_name.css
.red {background: red! Important; }
.green {background: green! important; }
.yellow {background: yellow! important; }