Jak přidat atribut třídy do bloku?

Jak mohu přidat atribut třídy do bloku Drupal 8?

V jádru Drupalu je mnoho příkladů, například moduly nápovědy který nastavuje atributy role pro blok. Takže po tomto mohu úspěšně přidat třídu.

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

Je možné přidat třídu bez háku předzpracování? Ideálně v souboru blokového pluginu umístěného v src / Plugin / Block /?

To by pomohlo zachovat veškerý kód týkající se jednoho bloku obsaženého na jednom místě.

Odpověď

Zkusili jste jen nastavit #attributes na renderovacím poli vráceném naším blokovým pluginem?

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

Při pohledu na BlockViewBuilder::preRender() by to mělo fungovat.

Odpověď

Můžete zkontrolovat modul Block Class .

Třída bloku umožňuje uživatelům přidávat třídy do libovolného bloku prostřednictvím konfiguračního rozhraní bloku. Přidáním velmi krátkého fragmentu PHP k tématu block.tpl.php souboru, třídy lze přidat do nadřazeného prvku bloku. Hurá na výkonnější blokování motivů!

odpověď

najděte šablonu větvičky navrhněte název svého bloku (pomocí komentářů ladění větviček) a přepište ho

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

odpověď

1. Vytvořte soubor hello.config

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

2. Připojte soubor knihovny 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. Nastavte třídu v souboru my_module_name.module

funkce my_module_name_preprocess_block (pole & $ proměnné) {

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

// Získejte ID bloku

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

// Získejte region s blok

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

4. my_module_name.libraries.yml

zde moje_module_name je název mé knihovny

zde zadejte popis obrázku

5. Vytvořte svůj css soubor css / my_module_name.css

.red {pozadí: red! Important; }

.green {pozadí: green! important; }

.yellow {pozadí: žlutá! důležité; }

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *