web-dev-qa-db-ja.com

一部の管理テーマCSSルールを上書きするにはどうすればよいですか?

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

20
Claudio

私はそれを使ってそれをやった:

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

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

15
Sebastian

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

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

11
PWM

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

9

CSSインジェクター はどうですか?

テーマに依存する構成ルールが許可されているかどうかはわかりませんが、パスに基づいて許可されていると想定しています(そのため、admin /、node/add /、node/*/editがうまくいくはずです)。

2
Berdir