Cum se adaugă un atribut de clasă unui bloc?

Cum pot adăuga un atribut de clasă la un bloc Drupal 8?

Există multe exemple în nucleul Drupal, cum ar fi modulele de ajutor care setează atributele rol pentru bloc. Deci, după aceea, pot adăuga cu succes o clasă.

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

Este posibil să adăugați o clasă fără cârligul de preproces? În mod ideal, în fișierul de plugin bloc situat în src / Plugin / Block /?

Acest lucru ar ajuta la păstrarea tuturor codurilor legate de un bloc conținut într-o singură locație.

Ați încercat să setați doar #attributes pe matricea de redare returnată de pluginul nostru de blocare?

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

Privind BlockViewBuilder::preRender(), ar trebui să funcționeze.

Răspuns

Puteți verifica modulul Block Class .

Block Class permite utilizatorilor să adauge clase la orice bloc prin interfața de configurare a blocului. Prin adăugarea unui fragment foarte scurt de PHP la o temă „s block.tpl.php fișier, clasele pot fi adăugate elementului părinte al unui bloc. Salut pentru o tematică mai puternică a blocurilor!

Răspuns

găsiți un șablon de crenguță sugestie de nume pentru blocul dvs. (folosind comentarii de depanare a ramurilor) și suprascrieți-l

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

Răspuns

1. Creați fișier hello.config

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

2. Atașați fișierul bibliotecii 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. Setați clasa în fișierul meu_module_name.module

funcția my_module_name_preprocess_block (matrice & $ variabile) {

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

// Obțineți ID-ul blocului

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

// Obțineți regiunea care are bloc

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

4. my_module_name.libraries.yml

aici, my_module_name este numele bibliotecii mele

introduceți descrierea imaginii aici

5. Creați fișierul css css / my_module_name.css

.red {background: red! Important; }

.green {background: green! important; }

.yellow {fundal: galben! important; }

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *