Drupal 7 - CSS System e CSS Default

Events happening in the community are now at Drupal community events on www.drupal.org.
antoniocardoso's picture

Boa noite, estou a escrever este email, pois tenho umas dúvida em relação aos css.

Estou a desenvolver um site em Drupal7, mas quando estou a visualizar o site (sem fazer login), vejo que no código HTML, está a ser chamado os styles dos diversos módulos automaticamente (no head) e no próprio body gostaria de esconder os diversos styles que são injectados automaticamente.
Estas duas questões são possiveis?

A chamada aos styles poderia ficar quando estou "logado". Todavia, como site final, para o utilizador, gostaria de limpar o código o mais possivel.

Comments

Não percebi bem o que

mariomc's picture

Não percebi bem o que queres.

Remover/substituir os ficheiros .css por defeito?
Podes usar o hook_css_alter (pesquisa a documentacao no api.drupal.org) ou o ficheiro .info do template, usando a sintaxe stylesheets[all][] = css-a-remover.css

Queres obfuscar o nome dos ficheiros?
Podes usar a funcionalidade de aggregation do Drupal em admin/config/development/performance.

Dependendo do tema de base que uses, há uns que dão mais funcionalidades no controlo da markup. Mas no final, tudo é alterável usando os tpls correspondentes.

Espero que ajude.

Gostaria de remover pelo

antoniocardoso's picture

Gostaria de remover pelo .info, mas não percebo a mecanica pois é igual ao inserir css.
Podes explicar melhor?

Por exemplo, estou a usar:

stylesheets[all][] = css/base.css
stylesheets[all][] = css/layout.css

para inserir os styles. Assim sendo, como removo os outros (que fazem parte dos modulos).

Obrigado,
António Manuel Cardoso

António Manuel Cardoso

Podes substituir qualquer

mariomc's picture

Podes substituir qualquer ficheiro de CSS de um módulo Drupal usando essa funcionalidade. Se redeclarares um CSS com o mesmo nome e path e não o usares na tua theme directory, este é removido. Vê aqui: http://drupal.org/node/263967

Se bem que, para o que parece estares a querer, é mesmo melhor usar um hook_css_alter dentro do teu template.php e programaticamente removeres as stylesheets se o user não for admin. Não é difícil, tenta. No link que te enviei acima, estão algumas instruções.

Cumps

Um Override mais simples?

bmateus's picture

Talvez a resposta do mariomc seja a mais correcta, mas eu utilizo uma forma mais simples para mim.

Não removo o css já existente, pois não tens acesso (facilitado) a eles, e a maior parte das vezes apenas se necessita alterar cores, formas e layout, mantendo uma grande parte do css.

O que eu faço é utilizar uma ferramenta como o Chris Pedernick toolbar for Firefox & Google Chrome, ou as "Ferramentas do programador" do Google Chrome, que têm uma opção de inspecionar o ID, Class e parentes de determinada parte da página.

Após saberes o id, classe e restante estrutura, podes, no teu stylesheet css, estilizá-lo como qualquer elemento. Desde que selector css esteja bem construído irá afectar os elementos correctos, sobrepondo-se à configuração anterior.

Pelo exemplo que estás a utilizar, seria no "layout.css".

Espero ter entendido bem e que ajude alguma coisa.

<< I tried others - still returned to Drupal. >>

Um Override mais simples?

bmateus's picture

Talvez a resposta do mariomc seja a mais correcta, mas eu utilizo uma forma mais simples para mim.

Não removo o css já existente, pois não tens acesso (facilitado) a eles, e a maior parte das vezes apenas se necessita alterar cores, formas e layout, mantendo uma grande parte do css.

O que eu faço é utilizar uma ferramenta como o Chris Pedernick toolbar for Firefox & Google Chrome, ou as "Ferramentas do programador" do Google Chrome, que têm uma opção de inspecionar o ID, Class e parentes de determinada parte da página.

Após saberes o id, classe e restante estrutura, podes, no teu stylesheet css, estilizá-lo como qualquer elemento. Desde que selector css esteja bem construído irá afectar os elementos correctos, sobrepondo-se à configuração anterior.

Pelo exemplo que estás a utilizar, seria no "layout.css".

Espero ter entendido bem e que ajude alguma coisa.

<< I tried others - still returned to Drupal. >>

http://getfirebug.com/

Obrigado mariomc . removi a

antoniocardoso's picture

Obrigado mariomc .
removi a partir do ficheiro info .
Penso que neste ficheiro falta uma pequena coisa que é fazer excepções entre o front-end e a área de desenvolvimento. Mas apesar de tudo funciona. Obrigado.

A minha ideia era do tipo:
stylesheets[front][all][] = css/ctools.css
assim só removi/adicionava no site publico :)

IMPORTANTE:
Sabem como no html consigo agora remover as classes que o drupal faz automaticamente?

bmateus,
o que pretendo que isto é diminuir o numero de pedidos bem como o lixo que o drupal faz. O drupal é bom como CMS, mas para limpar código em HTML é uma lástima :)

Abraço,

António Manuel Cardoso

Ah, percebo-te perfeitamente.

bmateus's picture

Ok, já percebi.

Em relação ao markup aconselho-te a utilizares o módulo Fences para limpares o gerado pelo Drupal, sempre ajudará.

No entanto, não sei se continua a ser boa ideia removeres as stylesheets dos módulos. Aliás, quando um user estiver logged-in, irá precisar delas.

Se utilizares a agregação CSS, e se o módulo X não for necessário, ou pedido pela página do momento, em princípio não é carregado. (se não me engano).

Se o que queres é ter dois estilos diferentes de acordo com o status do user (se está logged-in ou não), podes distinguir entre os estados através da classe .not-logged-in e .logged-in (normalmente agregada às tags ou .

Utilizando estas classes, podes estilizar qualquer elemento de qualquer modulo apenas com uma stylesheet para ambos os casos.

Espero que ajude.

<< I tried others - still returned to Drupal. >>

Para fazeres excepções mais

mariomc's picture

Para fazeres excepções mais específicas podes usar um hook_css_alter ou mesmo um hook_preprocess_page para alterares os css de forma mais controlada.
Para removeres as classes podes remove-las também num hook_preprocess_page ou não imprimir as mesmas e alterar a markup no tpl correspondente. Para encontrares qual o tpl, podes usar o módulo Theme Developer que te dá, entre outros, uma interface point-and-click para diagnosticares quais tpls estão a ser chamados na área correspondente. Para efectuares o override de um tpl, basta copia-lo para o teu theme e limpares as caches.
Há temas que já fazem algumas destas coisas, como o Zen e o Omega. Em termos de módulos tens também o Fences, que te dá uma UI para controlares a markup dos fields e outros elementos gerados pelo Drupal, com muita HTML5 goodness.

Não sei se estou a perceber a

ronaldofs's picture

Não sei se estou a perceber a questão...

  • Para sites em produção tens que activar a compressão de CSS. Isto irá agregar os vários ficheiros CSS num só.

  • Se o tema está a carregar ficheiros CSS desnecessários, basta apagar do nome_do_tema.info as linhas stylesheets[]

  • Se os módulos estão a carregar ficheiros CSS que não queres... tens que desinstalar os módulos ou então alterá-los (não aconselhável)

  • As classes e id que aparecem nos elementos html são geradas no tema ou nos módulos. No tema podes alterar os tpl que têm coisas do tipo <div class="<php print $classes>"> para as classes que quiseres. Nos módulos só mesmo alterando o código/tpls (não aconselhável) ou desinstalando...

Abraço

Portugal

Group categories

Classificação

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: