2010-02-26 8 views
9

J'essaie d'accomplir ce qui suit. Je dois utiliser Drupal 6 comme une exigence de projet, mais je veux l'utiliser avec mes propres feuilles de style HTML et CSS pour chaque nœud/vue/panneau etc.Comment se débarrasser des feuilles de style CSS Drupal?

Le problème est, quel que soit le thème, j'ai toujours trouvé que Drupal applique à mon contenu HTML à la fois mes feuilles de style CSS et le CSS lié au thème choisi. J'ai également essayé, sans succès, d'utiliser le module stylestripper (installé dans sites/all/modules). Peu importe ce que je fais, 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 stylestripper ne fonctionne pas du tout? Y at-il un thème complètement vide disponible? 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.

Répondre

6
<?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); 
?> 

En lire plus au drupal.org.

Mise à jour:
La place de mettre cette fonction, est dans le fichier template.php de votre thème. En fait, dans votre cas, vous devez passer un tableau de noms de fichiers CSS que vous souhaitez exclure.
L'appel à drupal_add_css() sans arguments passés, fournira $css avec un tableau de fichiers CSS qui vont être attachés à votre thème. Donc, c'est le bon moment pour entrer!

Comme vous le voyez, dans la première boucle foreach nous cherchons simplement le tableau $css pour les noms de fichiers qui sont existaient dans le passé tableau $exclude, pour la suppression de style. Et nous faisons le même travail dans la deuxième boucle pour l'insertion de style. Et à la fin de cela, nous retournons une représentation thématique de tous les styles qui devraient être attachés au thème en utilisant la fonction drupal_get_css(). (peut-être rien dans votre cas)

Bien, Où appeler cette fonction? Vous pouvez appeler cette fonction d'assistance au _phptemplate_variables() pour D5 ou YOUR_THEME_preprocess() pour D6. Comme on le voit dans cette 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 exclure « em all;)

+0

Merci, cela semble être parfait. Pouvez-vous s'il vous plaît ajouter les détails manquants nécessaires pour utiliser réellement la fonction? Dans quel fichier dois-je mettre la fonction? Comment l'appeler pour exclure toutes les feuilles de style CSS? –

+0

De rien, je vais 'mettre à jour la réponse;) – sepehr

+0

Excellent! C'était exactement ce que je cherchais! Merci de partager cela! –

0

Je ne pas que cela fonctionne, mais je pense que supprimez la ligne suivante dans le page.tpl.php de votre thème

<?php echo $styles ?> 

puis sera pas drupal de ses propres styles ..
cela peut être le travail pour vous.


Nitz

1

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

See the .info file for the Tao theme for an example

+0

Réponse intéressante! – sepehr

Questions connexes