Як замінити деякі правила CSS для теми теми адміністратора? [зачинено]


20

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


5
Ідеально правильне питання, яке не слід закривати. Часто виникає потреба підправити тему адміністратора (як правило, сім), де створення нової підтеми було б надмірним.
Kari 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 Admin - підтема блискучих). Я використовую цей метод, оскільки він спрацює за будь-яких обставин. Дивіться приклад нижче:

Створіть каталог під назвою "mymodule" (використовуйте будь-яке ім'я), створіть ці файли всередині нього, а потім розмістіть його в каталозі сайтів / all / module / 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 ?

Я не знаю, чи дозволяє це правило конфігурації залежно від теми, але я припускаю, що він дозволяє дозволити один на основі шляху (тому адміністратор / , вузол / додати / , вузол / * / редагування повинен зробити трюк).


Гарна ідея. Спробував це, але, здається, не працює (правило CSS насправді не збережено!). У мене також є сумніви, що це буде працювати з накладеною системою (здається, проблема в файлі_unmanaged_save_data () нічого не економить. Але моя настройка начебто дивна - вікно ubuntu всередині vx OSX).
Клаудіо

Гм. Можливо, помилка чи щось подібне у поточній версії. Я думаю, що це повинно теоретично працювати всередині накладки. Він також може показувати накладку з іншою темою. Ви також можете це зробити у простому користувальницькому модулі, я думаю, збережіть свій css у файл, реалізуйте крюк_init () та використовуйте drupal_add_css (), якщо застосовуються деякі умови.
Бердір
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.