Bazı yönetici teması CSS kurallarını nasıl geçersiz kılabilirim? [kapalı]


20

Yönetici temasının kendisine dokunmadan (bazı tema işlevleri veya modül kancaları aracılığıyla) yönetici teması tarafından kullanılan bazı CSS kurallarını geçersiz kılmanın bir yolu var mı? Örneğin, text-align: rightyönetici formlarında (ve düzenleme düğümlerinde de) her tamsayı alanına bir eklemek istiyorum .


5
Kapatılmaması gereken çok geçerli bir soru. Genellikle, yeni bir alt tema oluşturmanın aşırıya kaçacağı yönetici temasını (genellikle Yedi) değiştirmeye ihtiyaç vardır.
Kari Kääriäinen

Yanıtlar:


15

Sadece kullanarak yaptım:

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

Bu benim için biraz daha okunabilir.


1
Benim için de mükemmel çalıştı. Temiz çözelti.
Sasha Grievus

Bu kullanışlı kodun drupal 8 sürümü var mı?
petergus

11

Bunu yapmak için çeşitli yollar vardır, ancak tüm yaklaşımlar web sitenizin performansını etkilemek açısından eşit değildir. Örneğin:

  1. Yönetici temasını kopyalarsanız veya yönetici teması dışında bir alt tema oluşturursanız (not, zaten Shiny tabanlı bir alt teması olduğu için Drupal Commerce ile çalışmaz) - ve sonra bir .info aracılığıyla bir css dosyası ekleyin aradığınızda , CSS'yi her sayfaya yükleyeceksiniz.
  2. Yönetici temasını kopyalar veya yönetici temasını temel alan bir alt tema oluşturursanız, template.php dosyanızdaki drupal_add_css () çağrısını kullanabilirsiniz . Bu, stil sayfasını koşullu olarak, yalnızca belirli sayfalarda veya belirli tarayıcılarda aramanıza olanak tanır. Bu iyi çalışıyor, ancak zaten gereğinden fazla dosya çağırıyorsunuz.
  3. Kendi modülünüzü oluşturun ve drupal_add_css () 'i çağırın . Bildiğim kadarıyla, bu, orijinali dokunmadan yönetici temasını değiştirmenin 'en hafif' yoludur ve yönetici temanız zaten bir alt tema ise işe yarayacaktır (örneğin Drupal Commerce Kickstart Yönetici teması Shiny'nin bir alt temasıdır). Bu yöntemi kullanıyorum çünkü her koşulda işe yarayacak. Örnek için aşağıya bakın:

'Mymodule' adlı bir dizin oluşturun (istediğiniz adı kullanın), bu dosyaları içinde oluşturun ve ardından sitelerinize / all / modules / custom dizinine yerleştirin. Ne olduğunu görebilmeniz için aşağıdaki koda yorum ekledim.

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

mymodule.info içeriği:

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

mymodule.module içeriği:

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 daha sonra yönetici temasına eklenen stillerinize sahip olacaktır. Önbelleklerinizi temizleyin, bu modülü etkinleştirin ve yarışlara çıkın! Drupal_add_css hakkında daha fazla bilgiyi buradan edinebilirsiniz .


2
$theme_pathGeçerli modül yolunu kullanırsanız değişkene gerek yoktur ... ve CSS_THEMEbir ağırlık değil bir gruptur:array('group' => CSS_THEME)
MrUpsidown

Bu kullanışlı kodun drupal 8 sürümü var mı?
petergus

9

Ne yaptığım sadece, .infobenzersiz bir CSS dosyası (genellikle adlandırılır overrides.css) ve template.phpgerekirse bir dosya ile kullandığım yönetici teması için bir alt tema oluşturmaktır .


2

CSS Enjektör ne olacak ?

Bir temaya bağlı yapılandırma kuralına izin veriyorsa bilmiyorum, ama yola dayalı bir izin verir varsayalım (yönetici / , düğüm / add / , düğüm / * / düzenleme hile yapmalıdır).


İyi bir fikir. Denedim, ancak işe yaramıyor gibi görünüyor (CSS kuralı aslında kaydedilmedi!). Ayrıca bindirme sistemi ile çalışacağı konusunda şüphelerim var (sorun hiçbir şey kaydetmeden file_unmanaged_save_data () içinde görünüyor. Ama benim kurulum biraz garip - bir OSX vbox içinde bir ubuntu kutusu).
Claudio

Hm. Belki mevcut sürümde bir hata ya da buna benzer bir şey. Ben bindirme içinde teoride çalışması gerektiğini düşünüyorum. Ayrıca bindirmeyi farklı bir temayla da gösterebilir. Bunu basit bir özel modülde de yapabilirim, sanırım css'nizi bir dosyaya kaydedebilir, hook_init () uygulayabilir ve bazı koşullar geçerliyse drupal_add_css () kullanabilirsiniz.
Berdir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.