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
5. Creați fișierul css css / my_module_name.css
.red {background: red! Important; }
.green {background: green! important; }
.yellow {fundal: galben! important; }