• User Attivo

    Drupal 7: CSS differenti in base al tipo di contenuto

    Ciao a tutti,

    usando Drupal 6 usando un codice che mi era stato dato su un forum riuscivo a associare un particolare foglio di stile a un cento tipo di contenuto ad esempio forum.css a tutti i contenuti del tipo forum. Vorrei fare lo stesso in drupal7 esiste un modo?


  • Super User

    Ti consiglio di usare il modulo themekey che c'è anche per drupal 7.


  • User Attivo

    Non è possibile farlo modificando il template.php. Usando il seguente codice si riesce ad assegnare il css forum.css alla home del forum il problema è che non stilizza tutti gli altri contenuti di tipo forum.

    function nippon_preprocess_page(&$variables) {
    if ((arg(0) == 'forum') || (isset($vars['node']) && $vars['node']->type == 'forum')) {
    drupal_add_css(path_to_theme() . '/css/forum.css','theme','all');
    }
    }


  • User Attivo

    Ciao Nippy,

    ogni tipo di contenuto ha la sua classe personalizzata nel body quindi puoi usare quella per personalizzare la pagina.

    In alternativa puoi impostare un percorso per il forum e aggiungere il css solo per quella path (puoi usare il modulo pathauto).

    Oppure puoi usare la tassonomia, sempre con lo stesso principio di prima.


  • User Attivo

    Ciao grazie per aver risposto, ho provato il modulo sugeritomi themekey ma mi consente di associare a un tipo di contenuto un intero tema non un singolo css. vorrei usare diversi css in modo da non appesentire il caricamento della pagina quindi non vorrei aggiungere le classi personalizzate al medesimo foglio di stile ma avere un foglio aggiuntivo per i contenuti del tipo forum che non venga caricato quando negli altri tipi di contenuto in modo che siano più pesanti solo le pagine di quel tipo non tutti i contenuti. L'alternativa del percorso mi sembra valida perchè tutti i contenuti del tipo forum hanno parzialmente la stessa path del tipo sulgiappone.it/forum/titolo-pagina ma non saprei come metterla in pratica.


  • User Attivo

    La funzione che hai scritto tu stessa è quasi corretta, basta eliminare le altre condizioni:

    function nippon_preprocess_page(&$variables) {
    if ((arg(0) == 'forum'))) {
    drupal_add_css(path_to_theme() . '/css/forum.css','theme','all');
    }
    }

    Spiegazione:
    arg(0) recupera il primo argomento subito dopo l'url del sito (quindi ritorna, nel caso di quell'url "forum"), se tutte le discussioni hanno quella path dovrebbe funzionare.

    Non l'ho testata ma dovrebbe funzionare.

    In ogni caso il css è quello che pesa meno del sito, è giustissimo ottimizzarlo al massimo con questi metodi, specialmente se si usa un sistema di cache.


  • User Attivo

    Inanzitutto ci terrei a dire per correttezza che il codice non l'ho scritto io me lo avevano suggerito su un forum. Ho testato la funzione che hai scritto solo che non capisco come mai mi carica correttamente il css aggiuntivo nelle pagine di sommario del forum (es. sulgiappone.it/forum) ma non nelle singole discussioni (es. sulgiappone.it/forum/konnichiwa-d) ho applicato lo stesso codice anche ai contenuti di tipoo blog e anche qui funziona benissimo per la pagina che fa home o sommario dove sono contenute le anteprime ma non applica i css ai singoli articoli del blog. function nippon_preprocess_page(&$variables) { if ((arg(0) == 'forum')) { drupal_add_css(path_to_theme() . '/css/forum.css','theme','all'); } else if ((arg(0) == 'blog')) { drupal_add_css(path_to_theme() . '/css/blog.css','theme','all'); } }


  • User Attivo

    Prova con questo codice:

    function nippon_preprocess_page(&$variables) {
    $url_comp = explode('/', request_uri());
    if (($url_comp[1] == 'forum'))) {
    drupal_add_css(path_to_theme() . '/css/forum.css','theme','all');
    }
    }


  • User Attivo

    Ciao,

    ho provato il codice funziona perfettamente davvero grazie infinite!