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