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
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; }