Ho dovuto aggiungere due file css al sito www.nsoe.info, un file front-page.css per la frontpage e un file admin.css per tutte le pagine admin.
Nel file template.php ho notato il seguente codice:
/* Only use this section if you are including stylesheets based on certain conditions. */
<php?
// Example: optionally add a fixed width CSS file.
if (theme_get_setting('STARTERKIT_fixed')) {
drupal_add_css(path_to_theme() . '/layout-fixed.css', 'theme', 'all');
}
?>
ma non sono riuscito a capire come usarlo per aggiungere i file front-page.css e admin.css, ammesso che si possa.
Quindi, cercando su drupal.org, ho trovato il seguente snippet che funziona alla grande (vedi http://drupal.org/node/225868):
<?php
function mytheme_preprocess_page(&$variables) {
$front_style = path_to_theme() .'/front-page.css';
$path_style = path_to_theme() .'/path-'. arg(0) .'.css';
if (file_exists($front_style) && $variables['is_front']) {
$include_style = $front_style;
}
elseif (file_exists($path_style)) {
$include_style = $path_style;
}
if (isset($include_style)) {
drupal_add_css($include_style, 'theme', 'all', FALSE);
$variables['styles'] = drupal_get_css();
}
}
?>
MA... la frontpage e tutte le pagine admin "non leggono" il file ie.css. Mentre nel sorgente di tutte le altre pagine posso vedere il codice
<!--[if IE]>
<link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/mytheme/ie.css?M" />
<![endif]-->
nel sorgente della frontpage e delle pagine admin questo codice non viene mostrato e, naturalmente, IE6 & 7 non lo leggono. Ho ovviato inserendo gli hack direttamente nei file css (layout.css ecc) ma mi piacerebbe trovare una soluzione standard per poter usare sempre il file ie.css.
Qualche idea?
Ciao :-)
devi aggiungere i nuovi stylesheets nel file
TUOTEMA.info
una cosa tipo
stylesheets[all][] = il-mio-stile-uno.css
stylesheets[all][] = il-mio-stile-due.css
nota: l'ordine in cui li inserisci si riflette nella cascata, quindi valuta bene in quali posizione inserire ciascun CSS
Certified to Rock
Ciao bohz e grazie per la risposta.
Ho aggiunto i stylesheedts nel file miotema.info e ho provato in tutte le combinazioni di ordine, ma se li metto prima del file layout.css e miotema.css vengono ignorati, mentre se li metto dopo sovrascrivono i due file precedenti (per effetto del cascade). Rileggendo le istruzioni, anche qui http://drupal.org/node/171209, mi sembra di capire che nel file miotema.info vanno aggiunti solo i file css che vengono usati SEMPRE, mentre nel mio caso sono dinamici e devono essere caricati solo quando si visualizza la frontpage oppure le pagine admin. Per cui, al momento, continuo ad usare lo snippet postato in precedenza.
Mi è sfuggito qualcosa del tuo suggerimento? ;)
Ammetto di non aver letto bene il tuo post...scusami.
Purtroppo non ho idea di come inserire anche gli stili condizionali nello snippet che riporti.
Però, visto che se non sbaglio stai usando zen, potresti utilizzare le body classes invece di creare un CSS specifico per la front page.
Mi spiego:
se guardi la sorgente della tua homepage dovresti vedere qualcosa tipo
<body class="front [altri selettori]">
ora, visto che zen è così gentile da mettere la classe "front" solo in homepage, ti basta aggiungere
body.front
davanti a tutti gli stili specifici per la homepage e metterli in tuotema.css, ad esempio:
#miostile {background:red}
body.front #miostile{background:blue}
in questo modo oltre a non doverti preoccupare dei CSS per ie hai un foglio di stile in meno da caricare.
ovviamente in questo caso devi riportare tuotema.css allo stato originale!
se non ti va questo metodo c'è un modulo per gestire i CSS condizionali
-> http://drupal.org/project/conditional_styles
Certified to Rock
Lo stylesheet condizionale non lo aggiungi con drupal_add_css, ma con drupal_set_html_head
http://api.drupal.org/api/function/drupal_set_html_head/6
Grazie, Pinolo!
Certified to Rock
Grazie infinite bohz, con le body classes ho risolto definitivamente.
Ciao :)
Molto più pulito usare i selettori nel body e far caricare sempre tutti i CSS, in questo modo (tramite compressione) vengono raggruppati e l'utente li ha sempre in cache (riducendo le richieste al server e quindi i tempi di caricamento della pagina).
Ciao
Marco
--
My blog
Working at @agavee