9 votes

Comment se débarrasser des feuilles de style CSS de Drupal ?

J'essaie d'accomplir ce qui suit. Je dois utiliser Drupal 6 dans le cadre d'un projet, mais je veux l'utiliser avec mes propres feuilles de style HTML et CSS pour chaque nœud/vue/panneau, etc.

Le problème est que, quel que soit le thème, j'ai toujours constaté que Drupal applique à mon contenu HTML à la fois mes feuilles de style CSS et les CSS liées au thème choisi. J'ai également essayé, sans succès, d'utiliser le module stylestripper (installé dans sites/all/modules). Quoi que je fasse, des feuilles de style CSS supplémentaires sont appliquées à mes pages, détruisant complètement ma mise en page.

Quelle est la bonne façon d'y parvenir ? Pourquoi le stylestripper ne fonctionne-t-il pas du tout ? Existe-t-il un thème entièrement vierge ? J'ai essayé basic, mothership, zen etc, mais je vois toujours des feuilles de style CSS supplémentaires appliquées à mes pages.

Cela me rend fou, Drupal a été choisi par quelqu'un d'autre pour sa flexibilité. Merci d'avance.

6voto

Sepehr Lajevardi Points 7165
<?php
/**
 * Helper function to allow easy CSS excludes + includes
 */
function _phptemplate_get_css($exclude = array(), $include = array()){
$css = drupal_add_css();
foreach ($css['all']['module'] as $k => $path) {
   $file = substr($k, strrpos($k, '/') + 1);
   if (in_array($file, $exclude)){
     unset($css['all']['module'][$k]);
   }
}
foreach ($include as $file){
   $css['all']['theme'][path_to_theme() .'/'. $file] = true;
}
return drupal_get_css($css);
?>

Plus d'informations sur drupal.org .

Mise à jour :
Le bon endroit pour placer cette fonction, c'est dans la section template.php de votre thème. En fait, dans votre cas, vous devez passer un tableau de noms de fichiers css que vous voulez exclure.
L'appel à drupal_add_css() sans passer d'arguments, fournira $css avec un ensemble de fichiers CSS qui vont être attachés à votre thème. C'est donc le bon moment pour s'y mettre !

Comme vous le voyez, dans le premier foreach boucle, nous cherchons simplement la $css pour les noms de fichiers qui existent dans le fichier passé. $exclude pour la suppression du style. Et nous faisons le même travail dans la seconde boucle pour l'insertion des styles. Et à la fin, nous renvoyons une représentation thématique de tous les styles qui devraient être attachés au thème en faisant usage de drupal_get_css() fonction. (peut-être rien dans votre cas)

Eh bien, où appeler cette fonction ? Vous pouvez appeler cette fonction d'aide dans _phptemplate_variables() pour D5 ou YOUR_THEME_preprocess() pour D6. Comme nous le voyons en action pour D6 (non testé) :

function YOUR_THEME_preprocess(&$vars, $hook){
    // Stylesheet filenames to be excluded.
    $css_exclude_list = array(
        'lightbox.css',
        'lightbox_lite.css',
    );

    // Making use of previously defined helper function.
    $vars['styles'] = _phptemplate_get_css($css_exclude_list);
}

Je suis sûr que vous savez comment les exclure tous ;)

1voto

Simon Points 22764

Si vous définissez des fichiers CSS et/ou JavaScript dans le fichier .info de votre thème en utilisant des noms de fichiers qui correspondent aux fichiers de base, vous les remplacez. Si vos remplacements n'existent pas, ils ne sont pas inclus.

Voir le fichier .info du thème Tao pour un exemple.

0voto

Nitz Points 637

Je ne sais pas si cela va fonctionner mais je pense qu'il suffit de supprimer la ligne suivante dans le fichier page.tpl.php de votre thème.

 <?php echo $styles ?>

et alors drupal n'aura aucun de ses propres styles
cela peut être un travail pour vous.


Nitz

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X