クラス属性をブロックに追加するにはどうすればよいですか?

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です