Mail: orangedropdesign@gmail.com / Mobile: +39 338.6213493

Header con immagine che cambia per ogni pagina

Immagini di testata dinamiche con PHP

In poche righe di codice vorrei spiegarvi come risolvo un problema che quotidinamente, visti i siti che si fanno, devo affrontare nei layout.

Per aumentare il dinamismo dei siti, per rendere i contenuti meno triti, per offrire un’immaigne migliore, anche i layout più semplici cambiano di pagina in pagina e, anche se solo per un’immagine, a volte può risultare rognoso dover cambiare e inserire per ogni pagina sempre lo stesso elemento che invece, avremmo potuto lasciare nell’header.

Ovviamente ci sono diversi modi di ovviare a questa cosa. Io ho scelto quello dell’automazione!

Esempio di testata dinamica

Esempio di testata dinamica

L’esempio è che in ogni pagina, la testata del sito comprendere una immaigine rappresentativa e che questa cambia in base alla pagina.

Ecco il codice PHP:

<?php
define ('PAGENAME', substr(basename($_SERVER['SCRIPT_NAME']), 0, -4));

function haveBanner(){
    if(file_exists("banner/".PAGENAME.".jpg")){
        echo PAGENAME;
    } else {
        echo "default";
    }
}
?>

Nella prima riga viene definita una costante di nome PAGENAME e che prende il valore del nome del file della pagina (index se la pagina è index.php).

Successivamente viene creata una funzione che, senza parametri e richiamandola direttamente dal codice, controlla se esiste una immagine per quella pagina (per la pagina index.php una immagine nella cartella banner di nome index.jpg) ed eventualmente ne stampa il nome. Se non esiste una immagine specifica viene stampato default.

Ecco la parte HTML che ci riguarda:

<div id="banner">
    <img src="banner/<?php haveBanner(); ?>.jpg)" alt="Immagine della pagina" />
</div>

Oppure

<div id="banner" style="background:url(banner/<?php haveBanner(); ?>.jpg) center #CCC">
[...]
</div>

Con il semplice richiamo della funzione all’interno dell’HTML otteniamo il nome dell’immagine e quindi direttamente il nostro banner!

Tutto questo codice lo possiamo riportare direttamente in un header da includere direttamente sopra i contenuti delle pagine.

  1. In wordpress ad esempio si può pensare di includere l’immagine che dovrà cambiare nell’header…in modo da richiamare per ogni pagina un diverso header (tramite template personalizzato) a cui è associata una diversa immagine..

    • Certo, dipende dall’esigenza. Nel mio caso specifico si e` sempre voluto utilizzare una immagine fissa e statica che rappresenti piu` “l’immagine aziendale” (logo o cosa cosi`) e cosi` non serve rendere dimanica la cosa…

  2. ok allora avevo capito bene a cosa ti riferivi..
    sicuramente questo metodo è più sbrigativo, si gestisce tutto con uno script piuttosto che editare e realizzare diversi header e altrettanti template quindi (almeno per quanto riguarda wordpress)..
    cmq il tuo metodo è valido anche in WP giusto? perché comunque come detto sopra, e pensandoci un secondo di più..è sicuramente più immediato

Lascia una risposta