2010-02-26 5 views
9

Sto provando a realizzare quanto segue. Ho bisogno di usare Drupal 6 come requisito di progetto, ma voglio usarlo con i miei fogli di stile HTML e CSS per ogni nodo/vista/pannello ecc.Come sbarazzarsi dei fogli di stile CSS Drupal?

Il problema è che, indipendentemente dal tema, ho sempre trovato che Drupal applica al mio contenuto HTML sia i miei fogli di stile CSS che i CSS relativi al tema scelto. Ho anche provato, senza successo, usando il modulo stylestripper (installato in siti/tutti/moduli). Non importa quello che faccio, fogli di stile CSS aggiuntivi vengono applicati alle mie pagine, distruggendo completamente il mio layout.

Qual è il modo corretto per raggiungere questo obiettivo? Perché lo stylestripper non funziona affatto? È disponibile un tema completamente vuoto? Ho provato base, nave madre, zen ecc., Ma vedo sempre fogli di stile CSS aggiuntivi applicati alle mie pagine.

Questo mi sta facendo impazzire, Drupal è stato scelto da qualcun altro per la sua flessibilità. Grazie in anticipo.

risposta

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

Ulteriori informazioni a drupal.org.

Aggiornamento:
Il posto giusto per mettere questa funzione, si trova nel file template.php del vostro tema. In realtà nel tuo caso devi passare una serie di nomi di file CSS che vuoi escludere.
La chiamata a drupal_add_css() senza argomenti passati fornirà $css con una serie di file CSS che verranno allegati al tema. Quindi questo è il momento giusto per entrare!

Come si vede, nel primo ciclo foreach abbiamo semplicemente cercano la matrice $css per i nomi di file che sono esistite nel passato $exclude matrice, per l'eliminazione stile. E facciamo lo stesso lavoro nel secondo ciclo per l'inserimento dello stile. E alla fine di questo, restituiamo una rappresentazione a tema di tutti gli stili che dovrebbero essere collegati al tema facendo uso della funzione drupal_get_css(). (forse niente nel tuo caso)

Beh, Dove chiamare questa funzione? È possibile chiamare questa funzione di supporto in _phptemplate_variables() per D5 o YOUR_THEME_preprocess() per D6. Come si vede in azione per D6 (non testata):

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

Sono sicuro di sapere come escludere 'em all;)

+0

Grazie, questo sembra essere perfetto. Potete per favore aggiungere i dettagli mancanti necessari per utilizzare effettivamente la funzione? In quale file dovrei inserire la funzione? Come chiamarlo per escludere tutti i fogli di stile CSS? –

+0

Prego, sto andando 'per aggiornare la risposta;) – sepehr

+0

Eccellente! Questo era esattamente quello che stavo cercando! Grazie per aver condiviso questo! –

0

io non questo funzionerà ma penso solo rimuovere la seguente riga nel page.tpl.php del vostro tema

<?php echo $styles ?> 

e poi Drupal non uno qualsiasi dei suoi propri stili ..
questo può essere il lavoro per voi.


Nitz