Como substituir algumas regras CSS do tema de administração? [fechadas]


20

Existe uma maneira de substituir apenas algumas regras CSS usadas pelo tema de administrador, sem tocar no próprio tema de administrador (através de algumas funções de tema ou ganchos de módulo)? Por exemplo, eu gostaria de adicionar um text-align: righta cada campo inteiro nos formulários de administração (e também nos nós de edição).


5
Pergunta perfeitamente válida que não deve ser fechada. Geralmente, é necessário ajustar o tema do administrador (normalmente Sete), onde criar um novo subtema seria um exagero.
Kari Kääriäinen

Respostas:


15

Eu fiz isso apenas usando:

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

Isso é um pouco mais legível para mim.


11
Funcionou perfeitamente para mim também. Solução limpa.
Sasha Grievus

Existe uma versão drupal 8 deste código útil?
31 de

11

Existem várias maneiras de fazer isso, mas nem todas as abordagens são iguais em termos de afetar o desempenho do seu site. Por exemplo:

  1. Se você copiar o tema do administrador ou criar um subtema com base no tema do administrador (observe, isso não funcionará com o Drupal Commerce, pois ele já possui um subtema com base no Shiny) - e adicione um arquivo css via .info chamada , você carregará o CSS em todas as páginas.
  2. Se você copiar o tema do administrador ou criar um subtema com base no tema do administrador, poderá usar o hook drupal_add_css () no seu arquivo template.php . Isso permitirá que você chame a folha de estilo condicionalmente, em determinadas páginas apenas por exemplo ou em determinados navegadores. Isso funciona bem, mas você já está chamando mais arquivos do que o necessário.
  3. Crie seu próprio módulo e chame drupal_add_css () . Até onde eu sei, esta é a maneira 'mais leve' de alterar o tema do administrador sem tocar no original e funcionará se o seu tema do administrador já for um subtema (por exemplo, o tema do Drupal Commerce Kickstart Admin é um subtema do Shiny). Eu uso esse método porque ele funcionará em todas as circunstâncias. Veja abaixo um exemplo:

Crie um diretório chamado 'mymodule' (use o nome que quiser), crie esses arquivos nele e coloque-o no diretório sites / all / modules / custom. Adicionei comentários ao código abaixo para que você possa ver o que está acontecendo.

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

mymodule.info contém:

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

mymodule.module contém:

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 terá seus estilos adicionados ao tema admin. Limpe seus caches, ative este módulo e você estará pronto para as corridas! Saiba mais sobre drupal_add_css aqui .


2
Não há necessidade da $theme_pathvariável se você usar o caminho atual do módulo ... e CSS_THEMEnão for um peso, mas um grupo:array('group' => CSS_THEME)
MrUpsidown

Existe uma versão drupal 8 deste código útil?
31 de

9

O que faço é criar um subtema para qualquer tema de administração que eu esteja usando apenas com .info, um arquivo CSS exclusivo (geralmente chamado overrides.css) e um template.phparquivo, se necessário.


2

E o CSS Injector ?

Não sei se ela permite uma regra de configuração dependente do tema, mas presumo que ela permita uma com base no caminho (portanto, admin / , node / add / , node / * / edit deve fazer o truque).


Boa ideia. Tentei, mas parece não funcionar (a regra CSS não é realmente salva!). Eu também tenho dúvidas de que ele funcionaria com o sistema de sobreposição (parece que o problema está em file_unmanaged_save_data () não salvando nada. Mas minha configuração é meio estranha - uma caixa do ubuntu dentro de um OSX vbox).
Claudio

Hum. Talvez um bug ou algo parecido na versão atual. Eu acho que deveria funcionar em teoria dentro da sobreposição. Ele também é capaz de mostrar a sobreposição com um tema diferente. Você também pode fazer isso em um módulo personalizado simples, eu acho, salve seu css em um arquivo, implemente hook_init () e use drupal_add_css () se algumas condições se aplicarem.
Berdir
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.