Banner per le news

torna alla home page

Per fare in modo che gli utenti che accedono al nostro sito web siano tenuti aggiornati circa gli ultimi argomenti trattati, si ricorre al sistema di visualizzare una breve descrizione delle news, accompagnata dal link alle news stesse. Per far ciò si utilizza il banner, cioè un supporto grafico dove appare, una alla volta, la descrizione delle notizie alle quali vogliamo dare risalto.

Esistono molti sistemi per realizzare un banner, quello che vi vado ad illustrare non é il più semplice ma é estremamente versatile dal momento che ogni componente del progetto é realizzato autonomamente. Il progetto consente future implementazioni come quella di interfacciare dinamicamente il banner con un archivio notizie.

Nel corso della realizzazione

punto elenco

utilizziamo il software The GIMP, con il quale realizziamo la grafica

punto elenco

il linguaggio PHP che ci consente di scrivere le nostre news sulla grafica

punto elenco

il linguaggio JavaScript con il quale visualizziamo ciclicamente le notizie
ed interagiamo con il mouse.

Realizzazione della base grafica con The GIMP

The GIMP è un software di grafica appartenente al Mondo Open Source, con licenza GNU, il che  ci consente di utilizzarlo senza restrizioni. The GIMP è reperibile sul sito http://gimp.linux.it/www/: sono disponibili versioni per Linux, Window e Mac.  Una piccola guida sul funzionamento di The GIMP si trova su http://grafica.html.it/guide/leggi/15/guida-gimp/ e risorse per The GIMP  su http://www.volalibero.it/gimp.html

L'immagine precedente che utilizziamo come base per visualizzare le nostre news é stata realizzata con The GIMP tramite i seguenti passaggi:

punto elenco

apriamo The GIMP e scegliamo FILE > nuovo > larghezza 728, altezza 90

punto elenco

Script-Fu > Decorazioni > Angoli arrotondati

punto elenco

nella finestra Livelli selezionare il livello Background

punto elenco

nella finestra di The GIMP scegliere il colore di sfondo (normalmente è settato sul bianco)

punto elenco

nella finestra IMMAGINE > Modifica > Riempi con il colore di sfondo

punto elenco

nella finestra IMMAGINE > Immagine > Scala immagine > cliccare sulla catena per rendere le due dimensioni indipendenti e scrivere: larghezza 730, altezza 70

punto elenco

nella finestra IMMAGINE > file > Salva con nome > Seleziona tipo di file scegliere JPG > esporta > OK

The GIMP è un software che richiede una notevole applicazione per scoprirne tutte le possibilità ma i risultati ripagano ampiamente lo studio.

Scriviamo le news sulla base grafica con PHP

Contenuto del file creaimage.php

<?php
// Set the
content-type
header("Content-type: image/jpeg");

// Create the
image
$im = imageCreateFromJpeg("immagine.jpg");

// Create some
colors
$white = imagecolorallocate($im, 255, 255, 255);
$gray = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);

// The
text to draw
$text = $_GET["messaggio"];
//
Replace path by your own font path
$font = 'arial.ttf';

//
Add some shadow to the text
imagettftext($im, 20, 0, 16, 37, $gray, $font, $text);

//
Add the text
imagettftext($im, 20, 0, 14, 35, $black, $font, $text);

//
Using imagepng() results in clearer text compared with imagejpeg()
imagejpeg($im);
imagedestroy($im);
?>

PHP è un software Server (cioè interagisce direttamente con il server e produce in output una pagina HTML che sarà visualizzata dal browser) di script (trattasi di piccoli programmi autonomi contenuti all'interno dei tag <?php ... ?>) . Per testare i propri script al di fuori dell'Host Web è necessario creare sul computer l'ambiente PHP, reperibile in rete su http://www.easyphp.org/telechargements.php3 (in questo caso essendo presenti istruzioni grafiche si deve abilitare la dll gd2 nella configurazione PHP togliendo il segno ; presente all'inizio della riga).  Per testare il funzionamento del banner è necessario scaricare i tre files del progetto dentro la cartella www di easyphp. Va da se che lo spazio web che si utilizza dovrà avere abilitato il PHP e le librerie grafiche.

 Risorse, guide e manuali su PHP sono scaricabili da http://pro.html.it

Analizziamo le istruzioni contenute nello script creaimage.php

punto elenco

con l' istruzione header("Content-type: image/jpeg"); stabilisco il corretto tipo d'immagine

punto elenco

con l'istruzione $im = imageCreateFromJpeg("immagine.jpg"); riservo spazio dove memorizzare nella variabile $im l'immagine

punto elenco

con le istruzioni:

$white = imagecolorallocate($im, 255, 255, 255);
$gray = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);

predispongo i tre colori (bianco, grigio e nero) che utilizzo nelle scritte

punto elenco

con l'istruzione $text = $_GET["messaggio"]; carico nella variabile $text il contenuto della variabile messaggio inclusa nella chiamata dello script (creaimage.php?messaggio=news n. 1)

punto elenco

con l'istruzione $font = 'arial.ttf'; scelgo il font (in questo caso arial: i font disponibili sono nella cartella fonts di window)

punto elenco

con le due istruzioni successive

imagettftext($im, 20, 0, 16, 37, $gray, $font, $text);
imagettftext($im, 20, 0, 14, 35, $black, $font, $text);
aggiungo il contenuto della variabile $text all'immagine, usando i colori grigio e nero e sposto di 2 pixel una scritta dall'altra per far sembrare quella grigia l'ombra di quella nera

punto elenco

costruisco l'immagine completa dalla variabile $im imagejpeg($im);

punto elenco

distruggo la variabile $im per recuperare spazio imagedestroy($im);

Visualizziamo ciclicamente le notizie con JavaScript

Contenuto del file provaimage.htm all'interno del tag <body> ... </body>

<body bgcolor="#80A0C0">
<a
href="" id="link"><img border="0" src="" id="immagine" class="cursore" alt="" onmouseover="ritardo=ritardo*2;" onmouseout="ritardo=ritardo/2;"></a>
<script>
<!
--
var
frames=0;
var ritardo=3000;
link1="http://www.ir3ip.net/i0jfe";
link2="http://www.qsl.net/i0jfe";
link0="http://www.csarieti.it";
messaggio1="Ultime dal sito:
attenuatore PGreco";
messaggio2="Ultime dal sito: calcoli con le impedenze";
messaggio0="Ultime dal sito: gli Italiani in classifica Morse
Runner";
var
primimm=new Image();
var
secoimm=new Image();
var
zeroimm=new Image();
primimm.src="creaimage.php?messaggio="+messaggio1;
secoimm.src="creaimage.php?messaggio="+messaggio2;
zeroimm.src="creaimage.php?messaggio="+messaggio0;
function doblink (){
++frames;
switch (frames)
{
case (1):
document.getElementById("immagine").src=primimm.src;
document.getElementById("immagine").alt=messaggio1;
document.getElementById("link").href=link1;
break;
case (2):
document.getElementById("immagine").src=secoimm.src;
document.getElementById("immagine").alt=messaggio2;
document.getElementById("link").href=link2;
break;
default:
frames=0;
document.getElementById("immagine").src=zeroimm.src;
document.getElementById("immagine").alt=messaggio0;
document.getElementById("link").href=link0;
}
setTimeout("doblink()",ritardo);
}
doblink();
//
-->
</script>
<
noscript>
<h3
align="center">Attenzione:<br /> il browser non supporta JavaScript!</h3>
</
noscript>
</body>

JavaScript è un software Client (cioè interagisce direttamente con il browser dell'utente) di script (trattasi di piccoli programmi autonomi contenuti all'interno dei tag <script> ... </script>). JavaScript è un programma orientato agli eventi (l'evento è posizionare o meno il mouse sopra l'immagine del banner) e agli oggetti (gli oggetti in questo caso sono l'immagine del banner identificata con id=immagine e il collegamento ipertestuale identificato con id=link).

Mi servo dell'istruzione setTimeout per richiamare dopo un certo numero dei secondi la funzione doblink tramite la quale visualizzo ciclicamente le news.

Risorse, guide e manuali su JavaScript sono scaricabili da http://pro.html.it

Analizziamo le istruzioni contenute nella pagina provaimage.htm

punto elenco

<body bgcolor="#80A0C0">
<a href="" id="link"><img border="0" src="" id="immagine" class="cursore" alt="" onmouseover="ritardo=ritardo*2;" onmouseout="ritardo=ritardo/2;"></a>
Attribuisco allo sfondo della pagina il colore #80A0C0 e riservo spazio nella pagina per l'immagine del banner ed il suo link. Inoltre attivo il gestore degli eventi onmouseover e onmouseout in modo che la variabile ritardo raddoppi o dimezzi il proprio valore (ciò consente di visualizzare le news più lentamente quando si posiziona il mouse sopra il banner)

punto elenco

var frames=0;
var ritardo=3000;
link1="http://www.ir3ip.net/i0jfe";
link2="http://www.qsl.net/i0jfe";
link0="http://www.csarieti.it";
messaggio1="Ultime dal sito: attenuatore PGreco";
messaggio2="Ultime dal sito: calcoli con le impedenze";
messaggio0="Ultime dal sito: gli Italiani in classifica Morse Runner";

Attribuisco alle variabili dei valori: in particolare stabilisco gli indirizzi dei link e i messaggi che verranno visualizzati nel banner. Come si vede le news visualizzate sono tre.

punto elenco

var primimm=new Image();
var secoimm=new Image();
var zeroimm=new Image();
primimm.src="creaimage.php?messaggio="+messaggio1;
secoimm.src="creaimage.php?messaggio="+messaggio2;
zeroimm.src="creaimage.php?messaggio="+messaggio0;
Riservo lo spazio per tre immagini e le costruisco chiamando lo script creaimage.php con i contenuti delle variabili messaggio.

punto elenco

function doblink (){
++frames;
switch (frames)
{
case (1):
document.getElementById("immagine").src=primimm.src;
document.getElementById("immagine").alt=messaggio1;
document.getElementById("link").href=link1;
break;
case (2):
document.getElementById("immagine").src=secoimm.src;
document.getElementById("immagine").alt=messaggio2;
document.getElementById("link").href=link2;
break;
default:
frames=0;
document.getElementById("immagine").src=zeroimm.src;
document.getElementById("immagine").alt=messaggio0;
document.getElementById("link").href=link0;
}
setTimeout("doblink()",ritardo);
}
La funzione doblink è il cuore dello script. Per prima cosa incremento la variabile globale frames portandola a uno (la variabile è globale e manterrà il suo valore durante le varie chiamate alla funzione stessa perché è stata dichiarata all'inizio dello script prima di ogni funzione).

Con l'istruzione switch (frames) vado ad attribuire agli oggetti immagine: src e alt e all'oggetto link dei valori a seconda che frames valga 1, 2 o 3; in particolare se frames vale 3 gli sarà attribuito il valore 0 per far si che il ciclo ricominci dall'inizio.

Tramite setTimeout richiamo la funzione doblink dopo un certo numero di secondi stabilito dal valore assunto dalla variabile ritardo.

punto elenco

doblink();
//-->
</script>
<noscript>
<h3 align="center">Attenzione:<br /> il browser non supporta JavaScript!</h3>
</noscript>
Con l'istruzione doblink() chiamo la funzione la prima volta. Le altre istruzioni servono a segnalare all'utente che il browser non supporta JavaScript in modo che venga abilitato.

L'intero progetto è contenuto nel file scritta_grafica.zip

Giovanni Franceschini