Drupal 8ブロックにクラス属性を追加するにはどうすればよいですか?
Drupalコアには、ヘルプモジュールなどの多くの例があります。これは、ブロックの role 属性を設定します。その後、クラスを正常に追加できます。
/** * 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"; } }
前処理フックなしでクラスを追加することはできますか?理想的には、src / Plugin / Block /にあるブロックプラグインファイル内にありますか?
これにより、1つのブロックに関連するすべてのコードを1つの場所に含めることができます。
回答
ブロックプラグインによって返されるレンダー配列に#attributesを設定しようとしましたか?
$build["#attributes"]["class"][] = "my-nice-block";
BlockViewBuilder::preRender()
を見ると、うまくいくはずです。
回答
ブロッククラスモジュールを確認できます。
ブロッククラスを使用すると、ユーザーはブロックの構成インターフェースを介して任意のブロックにクラスを追加できます。テーマにPHPの非常に短いスニペットを追加することにより、
block.tpl.php
ファイルの場合、クラスはブロックの親要素に追加できます。より強力なブロックテーマを作成してください!
回答
小枝テンプレートを探すブロックの提案に名前を付け(twigデバッグコメントを使用)、オーバーライドします
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 %}
回答
1。 hello.configファイルを作成します
my_module_name/config/install/my_module_name.config content this code: color :"blue" color_red: "red"
2。ライブラリファイル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。 my_module_name.moduleファイルにクラスを設定します
function my_module_name_preprocess_block(array & $ variables){
// 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");
//ブロックのIDを取得します
$id= $variables["elements"]["#id"]; $block = Block::load($id);
//ブロック
$region = $block->getRegion(); if($region == "name_of_the_block_id"){ // Set the class $variables["attributes"]["class"][] = $class ; } }
4。 my_module_name.libraries.yml
ここで、my_module_nameはライブラリの名前です
5。 cssファイルを作成しますcss / my_module_name.css
.red {background:red!important; }
.green {background:green!important; }
.yellow {background:yellow!important; }