Как переопределить некоторые правила CSS для темы администратора? [закрыто]


20

Есть ли способ переопределить только некоторые правила CSS, используемые темой администратора, не затрагивая саму тему администратора (через некоторые функции темы или хуки модулей)? Например, я хотел бы добавить text-align: rightк каждому целочисленному полю в формах администратора (и в узлах редактирования тоже).


5
Совершенно актуальный вопрос, который не следует закрывать. Часто возникает необходимость настроить админ-тему (обычно семерку), чтобы создание новой подтемы было бы излишним.
Кари Kääriäinen

Ответы:


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?
petergus

11

Есть несколько способов сделать это, но не все подходы одинаковы с точки зрения влияния на производительность вашего сайта. Например:

  1. Если вы скопируете тему администратора или создадите подтему, основанную на теме администратора (обратите внимание, это не будет работать с Drupal Commerce, поскольку у нее уже есть подтема, основанная на Shiny), а затем добавьте файл css через .info позвоните , вы будете загружать CSS на каждой странице.
  2. Если вы копируете тему администратора или создаете подтему на основе темы администратора, вы можете использовать ловушку drupal_add_css () в вашем файле template.php . Это позволит вам вызывать таблицу стилей условно, например, на определенных страницах или для определенных браузеров. Это работает хорошо, но вы уже вызываете больше файлов, чем необходимо.
  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?
petergus

9

То, что я делаю, - это создаю подтему для любой темы администратора, которую я использую, только .infoс уникальным CSS-файлом (обычно с именем overrides.css) и template.phpфайлом, если это необходимо.


2

А как насчет CSS Injector ?

Я не знаю, разрешает ли оно правило, зависящее от темы, но я предполагаю, что оно разрешает правило, основанное на пути (так что admin / , node / add / , node / * / edit должны помочь).


Хорошая идея. Пробовал, но, похоже, не работает (правило CSS на самом деле не сохраняется!). Я также сомневаюсь, что он будет работать с оверлейной системой (кажется, проблема в том, что file_unmanaged_save_data () ничего не сохраняет. Но мои настройки довольно странные - окно ubuntu внутри OSX vbox).
Клаудио

Гектометр Может быть, ошибка или что-то подобное в текущей версии. Я думаю, что это должно работать теоретически внутри оверлея. Он также может отображать оверлей с другой темой. Я думаю, вы также можете сделать это в простом пользовательском модуле, сохранить ваши CSS в файл, реализовать hook_init () и использовать drupal_add_css (), если применяются некоторые условия.
Бердир
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.