Utente: Anonymous

Style sheet

Quando un modulo ha fogli di stile propri, questi devono essere caricati prima di visualizzare il contenuto della pagina generata dal modulo. Nella pagina HTML generata da Drupal i file di stile compaiono secondo la sequenza:

stile/i del modulo corrente
stile/i del modulo corrente contenuti nel tema corrente
stili di default di Drupal
stili del tema corrente

come di seguito indicato.

<style type="text/css" media="all">@import "/sites/all/modules/miomodulo/miomodulo.css"</style>
<style type="text/css" media="all">@import "/sites/all/themes/miotema/miomodulo.css"</style>

<style type="text/css" media="all">@import "/modules/book/book.css"</style>
<style type="text/css" media="all">@import "/modules/node/node.css"</style>
<style type="text/css" media="all">@import "/modules/system/defaults.css"</style>
<style type="text/css" media="all">@import "/modules/system/system.css"</style>
<style type="text/css" media="all">@import "/modules/user/user.css"</style>
...
<style type="text/css" media="all">@import"/sites/all/themes/miotema/style.css"</style>


Per fare questo è utilizzata la funzione drupal_add_css() secondo il codice riportato.
L'esempio riporta il codice necessario per caricare il foglio di stile miomodulo.css.
Questo codice deve essere chiamato dalle funzioni del modulo che preparano codice HTML.

function miomodulo_css_file() {
       $css_files = array();    // array in cui definire i file css
        // Definisce i percorsi dei file di stile
       $file_css_modulo          = drupal_get_path('module', 'miomodulo') . '/miomodulo.css';
       $file_css_modulo_in tema  = path_to_theme() .  '/miomodulo.css'; // se esistente
       // Definisce nell'array lo stile di default del modulo 
       $css_files[] = array('file' => $file_css_modulo, 'type' => 'module', );
        /* 
       Definisce nell'array lo stile ripetuto nella directory del tema corrente
       Se esiste un file di stile nella directory del tema corrente
       con lo stesso nome dello stile del modulo lo carica. 
       */
       if (file_exists($file_css_modulo_in tema) {
           $css_files[] = array('file' => $file_css_modulo_in tema, 'type' => 'theme', );
       }
       // Avvisa Drupal di caricare i fogli definiti
       foreach ($css_files as $css_file)
       {
           drupal_add_css($css_file['file'], $css_file['type'], 'all', false);
       }
}