Kuinka voin lisätä luokan määritteen Drupal 8 -lohkoon?
Drupal-ytimessä on monia esimerkkejä, kuten ohjemoduulit joka asettaa lohkon rooli määritteet. Joten voin lisätä luokan onnistuneesti sen jälkeen.
/** * 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"; } }
Onko mahdollista lisätä luokka ilman esikäsittelykoukkua? Ihannetapauksessa lohkon laajennustiedostossa, joka sijaitsee src / Plugin / Block /?
Tämä auttaisi pitämään kaikki yhteen lohkoon liittyvät koodit yhdessä paikassa.
Vastaa
Oletko yrittänyt asettaa vain #attribuutit lohkolaajennuksen palauttamaan renderöintiryhmään?
$build["#attributes"]["class"][] = "my-nice-block";
Tarkasteltaessa BlockViewBuilder::preRender()
, sen pitäisi toimia.
Vastaa
Voit tarkistaa Estä luokka -moduulin.
Lohkoluokka antaa käyttäjille mahdollisuuden lisätä luokkia mihin tahansa lohkoon lohkon määritysrajapinnan kautta. Lisäämällä hyvin lyhyt PHP-katkelma teemaan ”s
block.tpl.php
tiedosto, luokat voidaan lisätä lohkon pääelementtiin. Hurraa tehokkaammalle lohkoteemalle!
Vastaa
etsi oksa malli nimen ehdotus lohkollesi (käyttäen virheenkorjauskommentteja) ja ohittamalla sen
themes / 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 %}
vastaus
1. Luo hello.config-tiedosto
my_module_name/config/install/my_module_name.config content this code: color :"blue" color_red: "red"
2. Liitä kirjastotiedosto 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. Aseta luokka my_module_name.module-tiedostossa
function my_module_name_preprocess_block (taulukko & $ muuttujat) {
// 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");
// Hae lohkon tunnus
$id= $variables["elements"]["#id"]; $block = Block::load($id);
// Hanki alue, jolla on esto
$region = $block->getRegion(); if($region == "name_of_the_block_id"){ // Set the class $variables["attributes"]["class"][] = $class ; } }
4. my_module_name.libraries.yml
tässä, my_module_name on kirjastoni nimi
5. Luo css-tiedostosi css / my_module_name.css
.punainen {tausta: punainen! Tärkeä; }
.vihreä {tausta: vihreä! tärkeä; }
.keltainen {tausta: keltainen! tärkeä; }