2016-05-26 6 views
2

カスタムDrupal 8モジュールを構築していますが、管理者のスタイリングを制御したいと考えています。たとえば、テーブルの上にあるデフォルトのリンクのスタイルを設定し、「MISSING」という単語を適切なアイコンなどに変換します。Drupal 8モジュールのスタイルを設定するには?

すべてはCSSとTwigで簡単に行うことができますが、どのように上書きするのですか?私たちはデフォルトの7つの管理用テンプレートを使い続けたいと思います。 だから、CSSとTwigはすべて私が推測するモジュールの中になければなりません。 それ以外の場合は、モジュールをインストールする新しいユーザーは新しいテンプレートを取得しません。

更新 我々はhook_thme方法は、移動するための方法だったと思うが、それでも上品/ 7ブロック上書きするいかなる大成功:

function ejb_project_theme() { 
    $theme['block'] = [ 
    'template' => 'block', 
    ]; 
    $theme['block__ejb_project'] = [ 
    'template' => 'block', 
    ]; 
    $theme['block--ejb_project'] = [ 
    'template' => 'block', 
    ]; 
    $theme['page--block'] = [ 
    'template' => 'block', 
    ]; 

    return $theme; 
} 

答えて

0

はい、あなたはを通してモジュールにテーマを追加する必要がありませんモジュールフォルダのlibraries.ymlファイル詳細については、https://www.drupal.org/developing/api/8/assetsを参照してください。チェックCreate custom twig templates from custom moduleとのDrupalを上書きするテンプレート作成のための /8からOverride template with module

+0

ありがとうございます。これはCSSのためだけです.JSは正しいのですか? 7つのテンプレートはどのように上書きできますか? – user3411864

+0

@ user3411864正確に何をしたいのか分かりませんが、これらのリンクは役に立つでしょう:https://www.drupal.org/node/2640110とhttps://www.drupal.org/node/2499827 –

+0

洗練された/ 7つのデフォルトブロックを上書きするためにhook_themeを実行しようとしましたが、これは成功しませんでした。 関数ejb_project_theme(){ $テーマ['ブロック'] = [ 'テンプレート' => 'ブロック'、 ]; $ theme ['block__ejb_project'] = [ 'テンプレート' => 'ブロック'、 ]; $ theme ['block-ejb_project'] = [ 'テンプレート' => 'ブロック'、 ]; $ theme ['page-block'] = [ 'テンプレート' => 'ブロック'、 ]; return $ theme; } – user3411864

-1

あなたは試すことができます:

use \Symfony\Component\HttpFoundation\RedirectResponse; 

function hook_page_attachments_alter(array &$attachments) { 
    $route_match = \Drupal::service('current_route_match'); 
    $route_name = $route_match->getRouteName(); 
    if ($route_name == 'some.route') { 
    $response = new RedirectResponse("your_path"); 
    $response->send(); 
    } 

どちらかあなたがパスにリダイレクトするか、your_moduleになりますカスタムテンプレートを呼び出すようにしてください/テンプレートのディレクトリを

+0

リダイレクト応答は、テンプレートを変更しないで別のURLにユーザーをリダイレクトするためのものです。 – acrosman

+0

はい、あなたは正しい@acrosmanですが、テンプレートを上書きできない場合は、カスタムコードを書くことができる別のパスにユーザーを送ることができます。 これは適切な解決策ではありませんが、この方法でも実行できます。 –

0

あなたが考えているアプローチは良いものです:hook_theme()を使って私たちのテーマファイルを定義してください。あなたのマークアップを提供するために、ejb-admin-block.html.twig

function ejb_project_theme($existing, $type, $theme, $path) { 
    return [ 
    'ejb_admin_block'  => [ 
     'variables' => [ 
     'attributes' => [], 
     'var_1' => 'default_output', 
     ], 
    ], 
    ]; 
} 

はその後、モジュールのtemplatesディレクトリにという名前のファイルを作成することができます:あなたの.moduleファイルで

これは基本的に説明したものの逆です。セブンのテンプレートを上書きするのではなく、新しいテンプレートを定義しています。管理者のテーマにはあなたの設定を上書きするオプションがあります。

hook_themeの配列の詳細については、上のドキュメントとDrupal.orgのtheme system overview articleを参照してください。

0

これも確認できます。スクリーンショットhere 場所をfile_name.html.twigテーマ/ yourtheme/templatesディレクトリに配置

出力がどこから来ているかのファイル名もあります。そのファイルをコピーしてyourtheme/template dirに貼り付けることができます。キャッシュの消去。これはうまくいくでしょう。

関連する問題