"Gli Jatravartid di Viltvodle VI credono invece che il cosmo sia nato dallo starnuto di un essere chiamato il Grande Ciaparche Verde."

Towel Day - Non fatevi prendere dal Panico

Guida Galattica per gli Autostoppisti

Pillole di Joomla: inserire CSS incorporato

Logo Joomla
Immagine da Joomla

L'uso dei CSS in linea è deprecato, soprattutto per la ragione che NON distingue tra contenuti e stile.

Nella mia innata pigrizia, confesso che spesso ne ho fatto uso in queste pagine; il fatto che questo sito abbia scopi amatoriali non è una scusante, visto che l'ho messo in piedi per migliorare le mie conoscenze e creare pagine sintatticamente corrette in Joomla.

I contenuti pubblicati da oggi non avranno più CSS in linea, promesso.

Quando voglio applicare uno stile destinato ad apparire solo in una pagina, mi limiterò a CSS incorporati.

Gli stili CSS incorporati si dichiarano all'interno della sezione head.

Joomla costruisce dinamicamente la pagina HTML da inviare al browser e si occupa di generare il codice relativo, compresa la sezione head.

Questo significa che, quando si scrive un articolo, non si ha nessun controllo diretto di quanto viene inserito in tale sezione, escludendo alcuni metadata.

Niente vieta di inserire CSS incorporati all'interno di un articolo: lo stile viene applicato correttamente.

Però, al di là della scarsa eleganza del codice generato, questo impedisce una corretta validazione HTML.

Fortunatamente Joomla è abbastanza flessibile e permette di manipolare i contenuti generati tramite le API native (con un aiutino di plugin/moduli esterni ...).

L'uso delle API e di codice PHP ci permette di aggiungere codice CSS incorporato in modo corretto e con semplicità.

Uno dei plugin che installo in ogni sito Joomla è DirectPHP, che permette di inserire codice PHP in un articolo in modo immediato.

Tutto quello che occorre per inserire CSS incorporato è questo "metacodice" PHP:

<?php
  $doc =& JFactory::getDocument();
  $stile1="... ";
  $stile2="... ";
  ...
  $stilen="... ";
  $doc->addStyleDeclaration($stile1);
  $doc->addStyleDeclaration($stile2);
  ...
  $doc->addStyleDeclaration($stilen);
?>

Ripeto, si tratta di un "metacodice": ossia una struttura di massima da prendere come modello per ottenere il risultato desiderato, poi va completata nella parti mancanti, contrassegnate dai puntini (...)

Nel seguito propongo un esempio reale.

Il codice è davvero semplice: una volta inizializzato l'oggetto globale documento (variabile $doc), si definiscono le variabili stringa che contengono le varie regole di stile (variabili $stile1... $stilen).

Al termine si usa il metodo addStyleDeclaration, che inserisce il CSS incorporato all'interno della sezione head.

Vediamo un esempio, applicato in questa pagina:

<?php
  $doc =& JFactory::getDocument();
  $stile1=".blocco1 { width: 360px; padding: 0 10px 10px 10px; margin: 10px 0 10px 0; background-color: #cccccc; border: 2px solid #000000;}";
  $stile2=".blocco2 { font-weight: bold; font-size: 18px; color: #0000ff; }";
  $doc->addStyleDeclaration($stile1);
  $doc->addStyleDeclaration($stile2);
?>

Definisco due stili che vengono applicati ai blocchi con classe blocco1 e blocco2, usati nel codice HTML in questo modo:

<div class="blocco1">
  <p>Sono all'interno di "blocco1"</p>
  <div class="blocco2">Sono all'interno di "blocco1" e "blocco2"</div>
</div>

Questo è il risultato:

Sono all'interno di "blocco1"

Sono all'interno di "blocco1" e "blocco2"

La pagina è sintatticamente corretta, come provato dalla validazione HTML5.

Se si analizza il codice generato, si troverà all'interno della sezione head il codice CSS che abbiamo incorporato:

<style type="text/css">
.blocco1 { width: 360px; padding: 0 10px 10px 10px; margin: 10px 0 10px 0; background-color: #cccccc; border: 2px solid #000000;}
.blocco2 { font-weight: bold; font-size: 18px; color: #0000ff; }
....

Concludo ricordando che questo modo di procedere è applicabile, anzi va applicato, a tutte le sezioni che dovrebbero essere inserite all'interno di head. Codice Javascript, ad esempio: in questo caso esiste il metodo addScriptDeclaration.

Per maggiori dettagli si può consultare la documentazione delle API di Joomla.

Tags: Joomla, Pillole di Joomla, Javascript, HTML, CSS, PHP

Contattami, ma pensaci bene

  • Scrivimi, affinchè possa ignorarti con calma
  • Pubblico questa roba dalla Bassa Modenese. Sì, la zona del terremoto di maggio 2012...

    ... tromba d'aria nel 2013...

    ... alluvione nel 2014...

    ... nuova tromba d'aria nel 2014

Cominciamo ad essere un po' scocciati

E questo Ciaparche, cos'è?

Se ti punge vaghezza di conoscere la risposta e dimostrare così la tua ignoranza, non temere: nessuno dal monitor ti osserva (sicuro? Meglio essere attenti... controlla le impostazioni di privacy della fotocamera), per cui corri ad informarti facendo clic sul link sotto.

Se sei tra quegli eletti che hanno colto la citazione, hai tutta la mia approvazione.

Soddisfa la tua curiosità

Riassunto per pigri

Se i titoli dei menu non ti sono chiari, al tuo posto mi preoccuperei. Vabbè oggi mi sento magnanimo e ammetto che alcuni sono criptici o ambigui, per cui ho deciso di metterti a disposizione un riassunto che ti spiega in breve cosa troverai in questo sito.

Dissipa i tuoi dubbi