いくつかの管理テーマCSSルールをオーバーライドする方法は?[閉まっている]


20

管理テーマ自体に触れることなく、管理テーマで使用される一部のCSSルールのみをオーバーライドする方法はありますか(テーマ関数またはモジュールフックを使用)。たとえばtext-align: right、管理フォーム(および編集ノード)のすべての整数フィールドにaを追加したいと思います。


5
閉じてはならない完全に有効な質問。多くの場合、新しいサブテーマの作成がやり過ぎになる管理テーマ(通常は7)を微調整する必要があります。
カリKääriäinen15年

回答:


15

私はそれを使ってそれをしました:

function mymodule_preprocess_html(&$variables) {

  global $theme;

  if ($theme === variable_get('admin_theme', 'seven')) {

    // Reference your custom stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

それは私にとってもう少し読みやすいです。


1
私にとっても完璧に働きました。きれいなソリューション。
サーシャグリバス

この便利なコードのdrupal 8バージョンはありますか?
ペテルガス

11

これを行う方法はいくつかありますが、すべてのアプローチがWebサイトのパフォーマンスに影響するという点で同じというわけではありません。例えば:

  1. adminテーマをコピーするか、adminテーマに基づいてサブテーマを作成する場合(これは、Drupal Commerceでは動作しません。既にShinyに基づくサブテーマがあるため)-そして、.infoを介してcssファイルを追加しますcall、すべてのページにCSSをロードします。
  2. 管理テーマをコピーするか、管理テーマに基づいてサブテーマを作成する場合、template.phpファイルでフックdrupal_add_css()を使用できます。これにより、スタイルシートを条件付きで、たとえば特定のページでのみ、または特定のブラウザーで呼び出すことができます。これは問題なく動作しますが、すでに必要以上のファイルを呼び出しています。
  3. 独自のモジュールを作成し、そこからdrupal_add_css()を呼び出します。私の知る限り、これはオリジナルに触れることなく管理テーマを変更する「最も軽い」方法であり、管理テーマがすでにサブテーマである場合に機能します(たとえば、Drupal Commerce Kickstart管理テーマはShinyのサブテーマです)。あらゆる状況で機能するため、この方法を使用します。例については、以下を参照してください。

「mymodule」という名前のディレクトリを作成し(任意の名前を使用)、その中にこれらのファイルを作成し、sites / all / modules / customディレクトリに配置します。下のコードにコメントを追加して、何が起きているのかを確認できるようにしました。

  • mymodule.info
  • mymodule.module
  • css / mymodule.css

mymodule.infoの内容:

name = mymodule
description = Custom alterations for admin pages on my website
core = 7.x

mymodule.moduleの内容:

function mymodule_preprocess_html(&$variables) {
  // Add conditional stylesheets for admin pages on admin theme.
  if (arg(0) === "admin") {
    // Reference your current admin theme.
    $theme_path = drupal_get_path('theme', 'commerce_kickstart_admin');
    // Reference your own stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

css / mymodule.cssには、管理テーマに追加されたスタイルがあります。キャッシュをクリアし、このモジュールを有効にして、レースに出かけましょう!drupal_add_cssの詳細については、こちらをご覧ください


2
$theme_path現在のモジュールパスを使用する場合、変数は必要ありません...そしてCSS_THEME、重みではなくグループですarray('group' => CSS_THEME)
。– MrUpsidown

この便利なコードのdrupal 8バージョンはありますか?
ペテルガス

9

私がやっていることは、使用している管理テーマのサブテーマを、、.info一意のCSSファイル(通常は名前overrides.css)、template.php必要に応じてファイルだけで作成することです。


2

何についてのCSSインジェクター

テーマ依存の構成ルールを許可するかどうかはわかりませんが、パスに基づいたルールを許可すると仮定します(したがって、admin / 、node / add /、node / * / editがトリックを行う必要があります)。


良いアイデア。試しましたが、うまくいかないようです(CSSルールは実際には保存されません!)。また、オーバーレイシステムで動作することにも疑問があります(file_unmanaged_save_data()に問題があるようです。しかし、私のセットアップはちょっと奇妙です-OSX vbox内のUbuntuボックス)。
クラウディオ

ふむ おそらく、現在のバージョンのバグかそのようなものです。オーバーレイ内で理論的に機能するはずです。また、別のテーマでオーバーレイを表示することもできます。また、単純なカスタムモジュールでこれを実行し、CSSをファイルに保存し、hook_init()を実装し、条件が適用される場合はdrupal_add_css()を使用できます。
ベルディール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.