Bagaimana cara mengganti beberapa aturan CSS tema admin? [Tutup]


20

Apakah ada cara untuk mengganti hanya beberapa aturan CSS yang digunakan oleh tema admin, tanpa menyentuh tema admin itu sendiri (melalui beberapa fungsi tema atau pengait modul)? Sebagai contoh, saya ingin menambahkan text-align: rightke setiap bidang bilangan bulat di formulir admin (dan juga dalam mengedit node).


5
Pertanyaan yang valid sempurna yang tidak boleh ditutup. Sering ada kebutuhan untuk mengubah tema admin (biasanya Seven) di mana membuat sub tema baru akan berlebihan.
Kari Kääriäinen

Jawaban:


15

Saya melakukannya hanya menggunakan:

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

Itu sedikit lebih mudah dibaca bagi saya.


1
Bekerja dengan baik untuk saya juga. Solusi bersih.
Sasha Grievus

Apakah ada versi drupal 8 dari kode praktis ini?
petergus

11

Ada beberapa cara untuk melakukan ini, tetapi tidak semua pendekatan sama dalam hal mempengaruhi kinerja situs web Anda. Sebagai contoh:

  1. Jika Anda menyalin tema admin atau membuat subtitle berdasarkan tema admin (perhatikan, ini tidak akan berfungsi dengan Drupal Commerce, karena sudah memiliki subtitle berdasarkan Shiny) - dan kemudian tambahkan file css melalui .info panggilan , Anda akan memuat CSS di setiap halaman.
  2. Jika Anda menyalin tema admin, atau membuat subtitle berdasarkan dari tema admin, Anda dapat menggunakan hook drupal_add_css () di file template.php Anda . Ini akan memungkinkan Anda untuk memanggil stylesheet secara kondisional, pada halaman tertentu saja misalnya, atau untuk browser tertentu. Ini berfungsi dengan baik tetapi Anda sudah memanggil lebih banyak file daripada yang diperlukan.
  3. Buat modul Anda sendiri, dan panggil drupal_add_css () dari modul itu. Sejauh yang saya tahu, ini adalah cara 'paling ringan' untuk mengubah tema admin tanpa menyentuh yang asli dan akan berfungsi jika tema admin Anda sudah menjadi subtema (untuk mantan. Drupal Commerce tema Admin Kickstart Admin adalah subtitle dari Shiny). Saya menggunakan metode ini karena ini akan bekerja dalam semua keadaan. Lihat di bawah untuk contoh:

Buat direktori yang disebut 'mymodule' (gunakan nama apa pun yang Anda inginkan), buat file-file ini di dalamnya, dan kemudian letakkan di dalam direktori situs / semua / modul / kustom Anda. Saya telah menambahkan komentar ke kode di bawah ini sehingga Anda dapat melihat apa yang terjadi.

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

mymodule.info berisi:

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

mymodule.module berisi:

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 kemudian akan memiliki gaya Anda yang ditambahkan ke tema admin. Bersihkan cache Anda, aktifkan modul ini dan Anda siap untuk balapan! Pelajari lebih lanjut tentang drupal_add_css di sini .


2
Tidak perlu untuk $theme_pathvariabel jika Anda menggunakan jalur modul saat ini ... dan CSS_THEMEtidak berat tetapi sebuah kelompok:array('group' => CSS_THEME)
MrUpsidown

Apakah ada versi drupal 8 dari kode praktis ini?
petergus

9

Apa yang saya lakukan adalah membuat sub-tema untuk tema admin apa pun yang saya gunakan hanya dengan .info, file CSS unik (biasanya dinamai overrides.css), dan template.phpfile jika perlu.


2

Bagaimana dengan Injector CSS ?

Saya tidak tahu apakah ini memungkinkan aturan konfigurasi yang bergantung pada tema, tetapi saya menganggap itu mengizinkan satu berdasarkan pada path (jadi admin / , node / add / , node / * / edit harus melakukan trik).


Ide bagus. Sudah mencobanya, tetapi sepertinya tidak berhasil (aturan CSS sebenarnya tidak disimpan!). Saya juga ragu bahwa itu akan bekerja dengan sistem overlay (sepertinya masalah berada di file_unmanaged_save_data () tidak menyimpan apa-apa. Tapi setup saya agak aneh - kotak ubuntu di dalam OSX vbox).
Claudio

Hm Mungkin bug atau sesuatu seperti itu di versi saat ini. Saya pikir itu harus bekerja secara teori di dalam overlay. Ia juga dapat menampilkan hamparan dengan tema yang berbeda .. Anda juga bisa melakukan ini dalam modul khusus sederhana. Saya kira, simpan css Anda ke dalam file, implementasikan hook_init () dan gunakan drupal_add_css () jika ada ketentuan yang berlaku.
Berdir
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.