<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>diploD &#187; Php</title>
	<atom:link href="http://www.diplod.it/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diplod.it</link>
	<description>by Davide Del Monte</description>
	<lastBuildDate>Fri, 13 Feb 2015 14:26:10 +0000</lastBuildDate>
	<language>it-IT</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>WordPress: creare uno sliseshow con gli articoli in rilievo stile magazine</title>
		<link>http://www.diplod.it/2009/09/06/wordpress-creare-uno-sliseshow-con-gli-articoli-in-rilievo-stile-magazine/</link>
		<comments>http://www.diplod.it/2009/09/06/wordpress-creare-uno-sliseshow-con-gli-articoli-in-rilievo-stile-magazine/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 23:19:02 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[magazine]]></category>
		<category><![CDATA[notizie]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[slideshow]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=845</guid>
		<description><![CDATA[Quante volte abbiamo visto siti di magazine dotati di spettacolari slideshow a centro pagina che presentano gli ultimi articoli con immagini a ripetizione? La soluzione che propongo in questo articolo pubblica invece la prima foto allegata al post e la fa girare a rotazione assieme al titolo e all'excerpt (il riassunto). Il risultato finale è visibile in una demo.]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;">
<p style="text-align: center; "><img class="size-full wp-image-851  aligncenter" title="Anteprima Slideshow" src="http://www.diplod.it/wp-content/uploads/2009/08/demo.png" alt="Anteprima Slideshow WordPress" width="430" height="312" /></p>
<p>Quante volte abbiamo visto <strong>siti di magazine</strong> dotati di <strong>spettacolari slideshow</strong> a centro pagina che presentano gli <strong>ultimi articoli</strong> con immagini a ripetizione? Basta guardare il sito di <a title="Wired Italia" href="http://www.wired.it/" target="_blank">wired</a> o dell&#8217;<a title="Economist" href="http://www.economist.com/" target="_blank">Economist</a>.. Molti temi wordpress per magazine presentano soluzioni di questo tipo, spesso però pescano le immagini da presentare tra i <em>custom fields</em> di wordpress.</p>
<p>La soluzione che propongo in questo articolo pubblica invece la prima foto allegata al post e la fa girare a rotazione assieme al titolo e all&#8217;excerpt (il riassunto). <strong>Il risultato finale è <a title="diploD Magazine Demo" href="http://lab.diplod.it/demo/index.php?wptheme=diploD%20Magazine" target="_blank">visibile in questa demo</a></strong>.</p>
<p>Per fare il tutto ho scelto un javascript gratuito: <a title="Slideshow javascript" href="http://www.electricprism.com/aeron/slideshow/" target="_blank">Slideshow2!</a> Grazie a questa splendida classe per <a title="Mootools" href="http://mootools.net/" target="_blank">Mootools</a> è possibile creare in pochi istanti effetti davvero accattivanti.<br />
Ci sono diversi  plugin per wordpress in giro che utilizzano i più noti script per generare slideshow e gallerie, ma tutti quelli che ho visto servono per creare una gallery a partire da un singolo post. Il mio obbiettivo era diverso: <strong>creare uno slideshow con la prima immagine degli ultimi articoli pubblicati</strong>. Vediamo come fare..</p>
<p><span id="more-845"></span></p>
<p>Prima di tutto il codice.</p>
<p><code>&lt;link rel="stylesheet" type="text/css" href="&lt;?php bloginfo('template_url'); ?&gt;/css/slideshow.css" media="screen" /&gt;<br />
&lt;script type="text/javascript" src="&lt;?php bloginfo('template_url'); ?&gt;/js/mootools.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="&lt;?php bloginfo('template_url'); ?&gt;/js/slideshow.js"&gt;&lt;/script&gt;<br />
</code></p>
<p>Questa prima parte va aggiunta nell&#8217;elemento &lt;head&gt;, nel file <em>header.php</em> del template wordpress. Non fa altro che caricare un file CSS, la libreria mootools e lo script slideshow. Sempre all&#8217;interno dell&#8217;elemento &lt;head&gt; va inserito il codice sottostante. Si può posizionare questa porzione di codice anche appena prima del <em>div</em> in cui si desidera far apparire lo slideshow, tipicamente nel file <em>index.php</em> del template wordpress.</p>
<p><code>&lt;script type="text/javascript"&gt;<br />
//&lt;![CDATA[<br />
window.addEvent('domready', function(){<br />
var data = {<br />
&lt;?php $temp_query3 = $wp_query; ?&gt;<br />
&lt;?php query_posts('<strong>showposts=5&amp;cat=4</strong>'); ?&gt;<br />
&lt;?php if (have_posts()) : ?&gt;<br />
&lt;?php $conta=0; ?&gt;<br />
&lt;?php while (have_posts()) : the_post(); ?&gt;<br />
&lt;?php<br />
// Rileva ID del post<br />
$iPostID = $post-&gt;ID;<br />
// Rileva immagini per questo post<br />
$arrImages =&amp; get_children('post_type=attachment&amp;post_mime_type=image&amp;post_parent=' . $iPostID );<br />
// Se esistono immagini allegate al post<br />
if($arrImages) {<br />
// Rileva array con le chiavi che rappresentano le immagini allegate<br />
$arrKeys = array_keys($arrImages);<br />
// Rileva la prima immagine allegata<br />
$iNum = $arrKeys[0];<br />
// Rileva url thumbnail<br />
// $sThumbUrl = wp_get_attachment_thumb_url($iNum);<br />
// Rileva url full-size<br />
$sUrl = wp_get_attachment_image_src($iNum,'full');<br />
// Rileva excerpt - riassunto del post<br />
$descrizione = get_the_excerpt();<br />
// Rimpiazza caratteri particolari<br />
$descrizione = str_replace("'", "\'", $descrizione);<br />
$descrizione = str_replace("\n", " ", $descrizione);<br />
?&gt;<br />
&lt;?php if ($conta&gt;0) { ?&gt;, &lt;?php } ?&gt;&lt;?php } ?&gt;&lt;?php $conta++; ?&gt;<br />
'&lt;?php echo($sUrl[0]) ?&gt;': { caption: '&lt;p&gt;&lt;a href="&lt;?php the_permalink() ?&gt;" rel="bookmark" title="Permanent Link a &lt;?php the_title(); ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;br/&gt;&lt;?php echo($descrizione) ?&gt;&lt;/p&gt;' }</code></p>
<p><code> &lt;?php } ?&gt;<br />
&lt;?php endwhile; ?&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php //Reset Query<br />
wp_reset_query(); ?&gt;<br />
};<br />
var myShow = new Slideshow('<strong>show</strong>', data, {captions: true, controller: true, delay: 5000, duration: 2000, height: 300, thumbnails: false, width: 780});<br />
});<br />
//]]&gt;<br />
&lt;/script&gt;</code></p>
<p>Questa seconda parte serve per far apparire lo slideshow nel <em>div</em> con <em>ID=&#8221;show&#8221;</em>. All&#8217;inizio vengono indicati il numero di post e la categoria relativa che si desidera far apparire, nella funzione <em>query_posts()</em>. Il codice è ben commentato e non fa altro che rilevare la prima immagine di ogni post per pubblicarla assieme al titolo e al riassunto del post.<br />
La parte HTML necessaria all&#8217;interno del &lt;body&gt; è questa:</p>
<p><code>&lt;div id="show"&gt;<br />
&lt;img src="&lt;?php bloginfo('template_url'); ?&gt;/images/default.jpg" alt="welcome" /&gt;<br />
&lt;/div&gt;</code></p>
<p>Dove come <em>default.jpg</em> verrà caricata una immagine standard, utile nel caso non ci siano articoli da visualizzare oppure l&#8217;utente abbia disabilitato javascript.<br />
Per aggiungere l&#8217;<strong>effetto di zoom in movimento</strong> è possibile utilizzare l&#8217;estensione kenburns dello script Slideshow. Caricando nell&#8217; &lt;head&gt; un altro javascrip:</p>
<p><code>&lt;script type="text/javascript" src="&lt;?php bloginfo('template_url'); ?&gt;/js/slideshow.kenburns.js"&gt;&lt;/script&gt;</code></p>
<p>e modificando le ultime righe dello script sopra in questo modo:</p>
<p><code>var myShow = new Slideshow.KenBurns('show', data, {captions: true, controller: true, delay: 5000, duration: 2000, height: 300, thumbnails: false, width: 670, zoom: 50, pan: [25, 75]});</code></p>
<p>Le proprietà di <em>zoom</em> e <em>pan</em> sono da regolare per ottenere effetti diversi.</p>
<p>Il <strong>risultato HTML</strong> è il seguente:</p>
<p><code>&lt;script type="text/javascript" src="http://lab.diplod.it/demo/wp-content/themes/diplo-magazine/js/slideshow.kenburns.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
//&lt;![CDATA[<br />
<span style="white-space: pre;"> </span>window.addEvent('domready', function(){<br />
<span style="white-space: pre;"> </span>//avvio slideshow<br />
<span style="white-space: pre;"> </span>var data = {<br />
<span style="white-space: pre;"> </span>'http://lab.diplod.it/demo/wp-content/uploads/2009/08/3691087551_74e61f4da0_b.jpg': { caption: '&lt;p&gt;&lt;a href="http://lab.diplod.it/demo/2009/08/29/campo-di-grano/" rel="bookmark" title="Permanent Link a Campo di Grano"&gt;Campo di Grano&lt;\/a&gt;&lt;br/&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&lt;\/p&gt;' },<br />
<span style="white-space: pre;"> </span> 'http://lab.diplod.it/demo/wp-content/uploads/2009/08/3691896442_cafb3a1487_b.jpg': { caption: '&lt;p&gt;&lt;a href="http://lab.diplod.it/demo/2009/08/29/le-braccia-del-costruttore/" rel="bookmark" title="Permanent Link a Le braccia del Costruttore"&gt;Le braccia del Costruttore&lt;\/a&gt;&lt;br/&gt;Le braccia del costruttore ha un riassunto molto breve..&lt;\/p&gt;' },<br />
<span style="white-space: pre;"> </span> 'http://lab.diplod.it/demo/wp-content/uploads/2009/08/3166795508_d5cd33c968_b.jpg': { caption: '&lt;p&gt;&lt;a href="http://lab.diplod.it/demo/2009/08/29/secondo-articolo-in-rilievo/" rel="bookmark" title="Permanent Link a Secondo Articolo in Rilievo"&gt;Secondo Articolo in Rilievo&lt;\/a&gt;&lt;br/&gt;Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem&lt;\/p&gt;' },<br />
<span style="white-space: pre;"> </span> 'http://lab.diplod.it/demo/wp-content/uploads/2009/08/3691094985_4327680ea2_b.jpg': { caption: '&lt;p&gt;&lt;a href="http://lab.diplod.it/demo/2009/08/29/primo-articolo-in-rilievo/" rel="bookmark" title="Permanent Link a Primo articolo in Rilievo"&gt;Primo articolo in Rilievo&lt;\/a&gt;&lt;br/&gt; Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat [...]&lt;\/p&gt;' },<br />
<span style="white-space: pre;"> </span> };<br />
<span style="white-space: pre;"> </span> var myShow = new Slideshow.KenBurns('show', data, {captions: true, controller: true, delay: 5000, duration: 2000, height: 300, thumbnails: false, width: 670, zoom: 50, pan: [25, 75]});<br />
<span style="white-space: pre;"> </span> });<br />
<span style="white-space: pre;"> </span> //]]&gt;<br />
&lt;/script&gt;</code></p>
<p>Per quanto riguarda il <strong>CSS</strong>, quello proposto assieme allo script è sicuramente un buon <strong>punto di partenza</strong>, da sistemare se si vogliono cambiare le dimensioni del <em>div</em> che presenta lo slideshow.</p>
<p><strong>Buon design a tutti..</strong></p>
<p>PS: Nel caso in cui qualcuno si stesse domandando da dove provenga il design della demo sopra.. beh: seguite questo blog, prossimamente arriverà un tema wordpress in stile magazine, completamente personalizzabile dal pannello di amministrazione e soprattutto italianissimo. ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2009/09/06/wordpress-creare-uno-sliseshow-con-gli-articoli-in-rilievo-stile-magazine/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Redesign del blog: attenzione sui dettagli</title>
		<link>http://www.diplod.it/2008/07/29/redesign-del-blog-attenzione-sui-dettagli/</link>
		<comments>http://www.diplod.it/2008/07/29/redesign-del-blog-attenzione-sui-dettagli/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 06:06:49 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[redesign]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=585</guid>
		<description><![CDATA[Illustrazione delle tecniche e del codice usato per costruire i calendarietti della data e il form dei commenti nel nuovo tema di diploD]]></description>
				<content:encoded><![CDATA[<p>Si torna a parlare del redesign di diploD: ero partito dalla testata, questa volta mi soffermerò su alcuni dettagli come  il form per i commenti o la data a fianco dei post.</p>
<p>Quando si mette in pratica un&#8217;azione di redesign, si pensa anche alla riprogettazione strutturale delle categorie. Ultimamente sentivo sempre più forte l&#8217;esigenza di separare gli articoli &#8220;tecnici&#8221; (passatemi il termine) da quelli prettamente personali. I contenuti di un post sulle <a title="vacanze in irlanda" href="http://www.diplod.it/2008/05/09/irish-memories/" target="_self">vacanze in irlanda</a> sono decisamente diversi da quelli di un articolo sul <a title="knowledge management" href="http://www.diplod.it/2008/06/09/knowledge-management-e-risorse-umane-due-casi-studio/" target="_self">knowledge management</a>. E&#8217; nell&#8217;utilità dei lettori far percepire questi articoli come diversi: una esigenza che deve necessariamente prendere forma nel design.</p>
<p>A parte la separazione dei feed (a cui sto lavorando), il primo passo è quello di differenziare visivamente questi contenuti. Ho quindi pensato di realizzare il calendarietto che solitamente sta a fianco del titolo in due versioni differenti: una classica e una in stile post-it.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2008/07/date.gif" alt="data" width="60" height="70" /> <img src="http://www.diplod.it/wp-content/uploads/2008/07/date-personale.gif" alt="data personale" width="60" height="70" /></p>
<p>Già con un primo colpo d&#8217;occhio sarà quindi intuibile il taglio dell&#8217;articolo (tecnico piuttosto che personale). I box grigi sotto il calendarietto servono a contenere i <strong>link all&#8217;articolo precedente e successivo</strong>.</p>
<p><span id="more-585"></span></p>
<p>Questo è lo screenshot di come appare una pagina di ricerca.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2008/07/esempio1.png" alt="esempio" width="926" height="534" /></p>
<p>Per quanto riguarda il codice css e xhtml, lo riporto di seguito con commenti a lato.</p>
<p>Partiamo dall&#8217;<strong>xhtml</strong>:<br />
<code><br />
&lt;div class="data personale"&gt;<br />
&lt;span class="d"&gt;10&lt;/span&gt; &lt;span class="m"&gt;DIC&lt;/span&gt;<br />
&lt;!--div che contiene i link agli articoli prec. e succ.--&gt;<br />
&lt;div class="scroller"&gt;<br />
&lt;!--sui link l'attributo onclick richiama il javascript jquery--&gt;<br />
&lt;a class="scroll-link scroll-up" href="#header" title="post precedente" onclick="$diplod('#header').ScrollTo(800); return false;"&gt;pre&lt;/a&gt;<br />
&lt;a class="scroll-link scroll-down" href="#footer-wrap" title="post successivo" onclick="$diplod('#footer-wrap').ScrollTo(800); return false;"&gt;suc&lt;/a&gt;<br />
&lt;/div&gt;&lt;!--fine div scroller--&gt;<br />
&lt;/div&gt;&lt;!--fine div data--&gt;<br />
</code></p>
<p>Ed ecco il <strong>CSS</strong>:<br />
<code><br />
div.data {<br />
float: left; /* la data fluttua a sinistra per lasciare spazio al titolo sulla destra */<br />
clear: both;<br />
width: 60px; /* stessa larghezza dell'immagine di sfondo*/<br />
height: 70px;<br />
margin: 0 5px 0 0;<br />
text-align: center;<br />
color: #666;<br />
padding-bottom: 0;<br />
background: transparent url(images/date.gif) no-repeat;<br />
line-height: 1.3em;<br />
}<br />
div.personale { /*classe per riconoscere gli articoli di determinate categorie */<br />
background: transparent url(images/date-personale.gif) no-repeat;<br />
}<br />
div.data span.d { /*stili per il giorno */<br />
display: block;<br />
height: 16px;<br />
font-size: 150%;<br />
font-weight: bold;<br />
color: #666;<br />
padding-top: 20px;<br />
background: transparent;<br />
}<br />
div.data span.m { /*stili per il mese */<br />
text-transform: uppercase;<br />
font-size: 90%;<br />
padding-top: 5px;<br />
height: 15px;<br />
}<br />
</code></p>
<p>Veniamo ora all&#8217;<strong>implementazione in wordpress</strong>, che forse è la cosa più interessante.<br />
<code><br />
&lt;?php $postcount=0;   ?&gt;<br />
&lt;?php if (have_posts()) : ?&gt;<br />
&lt;?php while (have_posts()) : the_post(); ?&gt;<br />
&lt;?php $postcount=$postcount+1; ?&gt;<br />
&lt;div id="scroll-&lt;?php echo $postcount; ?&gt;" class="data&lt;?php if(in_category(260) || in_category(14) || in_category(1)) { echo(' personale'); } ?&gt;"&gt;&lt;span class="d"&gt;&lt;?php the_time('j') ?&gt;&lt;/span&gt; &lt;span class="m"&gt;&lt;?php the_time('M') ?&gt;&lt;/span&gt;<br />
&lt;div class="scroller"&gt;<br />
&lt;?php if ($postcount!=1) { ?&gt;<br />
&lt;a class="scroll-link scroll-up" href="#scroll-&lt;?php echo ($postcount-1); ?&gt;" title="post precedente" onclick="$diplod('#scroll-&lt;?php echo ($postcount-1); ?&gt;').ScrollTo(800); return false;"&gt;pre&lt;/a&gt;<br />
&lt;?php } ?&gt;<br />
&lt;?php if ($postcount!=5) { ?&gt;<br />
&lt;a class="scroll-link scroll-down" href="#scroll-&lt;?php echo ($postcount+1); ?&gt;" title="post successivo" onclick="$diplod('#scroll-&lt;?php echo ($postcount+1); ?&gt;').ScrollTo(800); return false;"&gt;suc&lt;/a&gt;<br />
&lt;?php } ?&gt;<br />
&lt;/div&gt;&lt;/div&gt;<br />
&lt;h1&gt;&lt;a href="&lt;?php the_permalink() ?&gt;" rel="bookmark" title="Permanent Link a &lt;?php the_title(); ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h1&gt;<br />
[..]<br />
</code></p>
<p><strong>Cosa fa il codice? </strong></p>
<p>Con il tag di wordpress <a title="in_category() wordpress tag" href="http://codex.wordpress.org/Template_Tags/in_category" target="_blank">in_category()</a> ci si chiede se il post appartiene a determinate categorie (in questo caso quelle con ID 1, 260 o 14), se è così si aggiunge la classe &#8220;personale&#8221; al <em>div</em> della data. A questo <em>div</em> viene assegnato poi un <em>id</em> univoco del tipo &#8220;scroll-2&#8243;, dove 2 è il valore del contatore <em>$postcount</em>, inizializzato a zero fuori dal <a title="The Loop wordpress" href="http://codex.wordpress.org/The_Loop" target="_blank">loop</a> e incrementato di una unità dentro al ciclo.</p>
<p>Gli <em>if</em> sui link servono per evitare di pubblicare il link &#8220;precedente&#8221; sul primo articolo o il link &#8220;successivo&#8221; sull&#8217;ultimo articolo. In questo caso ho scelto di pubblicare solo 5 articoli per pagina, quindi il controllo viene fatto su <em>$postcount</em> diverso da 1 e da 5.<br />
Infine viene pubblicato il titolo del post con relativo link.</p>
<p>Veniamo ora al <strong>form dei commenti</strong>: volevo qualcosa di originale ma non troppo pacchiano. Qualcosa di insolito ma al tempo stesso funzionale. A parte le icone (classiche <a title="famfam" href="http://www.famfamfam.com/lab/icons/silk/" target="_blank">famfam</a>), che ormai reputo insostituibili, ho pensato di mettere delle delicate sfumature sui campi di input. <strong>Che ne pensate?</strong> Sono aperte le critiche..</p>
<p>Questa è la <a title="diplod demo form" href="http://lab.diplod.it/diplod/anteprima-form.html" target="_blank">demo con il risultato</a>. (ma potete vederlo anche sotto)</p>
<p>Gli utenti non IE (Internet Explorer) potranno notare come selezionando il campo questo cambia colore sfumando verso il grigio.<br />
Utilizzando una tecnica ormai nota detta <a title="CSS Fast Rollover" href="http://www.wellstyled.com/css-nopreload-rollovers.html" target="_blank">CSS Fast Rollover</a>, ho replicato l&#8217;effetto sui campi input del form. L&#8217;idea è semplicissima: mettere come <em>background</em> una immagine che contiene i diversi sfondi e cambiare la posizione dello sfondo con le pseudo classi css (<em>:hover</em>, <em>:active</em>). Nell&#8217;articolo di Wellstyled viene descritta la tecnica per i link, ma si può impiegare anche per la pseudo classe <em>:focus</em> degli elementi input del form.<br />
Il vantaggio è che non viene caricata nessun&#8217;altra immagine quando si seleziona il campo di <em>input</em>, ma semplicemente viene traslata quella caricata in precedenza, in questo modo l&#8217;utente non avverte un tempo di attesa e l&#8217;efetto risultante è molto più fluido. Questo vale per i campi di <em>input</em> che hanno altezza fissa, mentre per la <em>textarea</em> è necessario caricare una seconda immagine e si avverte un leggero tempo di attesa.</p>
<p>Questa è l&#8217;immagine che ho utilizzato per il campo di input.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2008/07/input-bg.gif" alt="input-bg" width="30" height="60" /></p>
<p>Si tratta di una immagine &#8220;doppia&#8221;. Sul <em>:focus</em> del campo <em>input</em> ho semplicemente cambiato le coordinate di posizionamento dello sfondo, traslando l&#8217;immagine di 30px. Ecco il codice css:<br />
<code><br />
form.comment-form input {<br />
padding: 5px;<br />
margin: 0;<br />
border: none;<br />
background: #fff url(images/input-bg.gif) no-repeat top right; /*immagine allineata in alto */<br />
}<br />
form.comment-form input:focus, form.comment-form input:active {<br />
background: #f1f9ff url(images/input-bg.gif) no-repeat bottom right; /*immagine allineata in basso*/<br />
color: #333;<br />
}<br />
</code></p>
<p>Unico neo: su Safari l&#8217;evidenziazione azzurrina dei campi attivi fa svanire l&#8217;effetto sfumatura, ma rende bene ugualmente.</p>
<p><strong>PS</strong>: se sei arrivato fin qui a leggere, probabilmente <strong>non sei in vacanza</strong>. Un saluto dalla Sicilia (o da Pompei, Caserta, Orvieto.. non so bene dove si fermerà la macchina).. ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/07/29/redesign-del-blog-attenzione-sui-dettagli/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Installare Apache-php-MySQL su Windows Vista o Windows 7</title>
		<link>http://www.diplod.it/2008/01/21/installare-apache-php-mysql-su-windows-vista/</link>
		<comments>http://www.diplod.it/2008/01/21/installare-apache-php-mysql-su-windows-vista/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 15:08:22 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[installazione]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[vista]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2008/01/21/installare-apache-php-mysql-su-windows-vista/</guid>
		<description><![CDATA[Guida per l'installazione del server apache, php e mysql su windows vista]]></description>
				<content:encoded><![CDATA[<p>Mi sono aggiornato a <strong>Windows Vista</strong>, e ora pure a <strong>Windows 7</strong>. Anche se forse &#8220;aggiornato&#8221; non è la parola più azzeccata, visti problemi e problemini che ho riscontrato dopo 3 giorni di installazioni. Niente di irrecuperabile, a parte il fastidioso problema di connessione wireless su <a title="wireless problem wpa windows vista" href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2095539&amp;SiteID=17" target="_blank">rete protetta wpa2</a>, di cui magari parlerò in seguito.</p>
<p>Riporto qualce appunto per installare senza problemi la piattaforma<strong> Apache+MySQL+php</strong>, così da avere in locale un server dove testare e sviluppare le proprie applicazioni (come <a title="Wordpress" href="http://wordpress.org/" target="_blank">wordpress</a> o <a title="Joomla" href="http://www.joomla.org/" target="_blank">joomla</a>).</p>
<p><span id="more-461"></span></p>
<h3>Installazione Apache Server 2.2.6</h3>
<p>Installare Apache è stato piuttosto semplice. Ecco i passi da seguire:</p>
<ol>
<li><strong>Scaricare l&#8217;installer (MSI) per Windows</strong> dal sito di <a title="Apache server download" href="http://httpd.apache.org/download.cgi" target="_blank">Apache HTTP Server</a></li>
<li><strong>Disattivare il controllo UAC</strong>:<em> </em><em>Su Vista</em>: start -&gt; pannello di controllo -&gt; Account Utente e protezione per la famiglia -&gt; Account Utente -&gt; Attiva o disattiva controllo account utente [tra parentesi questa cosa vi libererà delle fastidiosissime finestrelle "consenti" che appaiono dopo ogni clic]<em>Su Windows 7</em>:  start -&gt; pannello di controllo -&gt; Account Utente -&gt; Account Utente -&gt; Modifica le impostazioni di controllo dell&#8217;account utente -&gt; Impostare su Nessuna Notifica</li>
<li><strong>Lanciare l&#8217;installer</strong> appena scaricato e seguire le istruzioni, come Network Domain e Server Name possiamo mettere &#8220;localhost&#8221; (se l&#8217;installazione avviene in locale) e come porta scegliere 80.</li>
<li>Ora è possibile <strong>configurare Apache Server</strong>, aprendo il file &#8220;C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf&#8221; con un editor di testo.La cosa principale da fare è indicare la cartella dove vengono salvate le nostre pagine web per poi renderle accessibili via browser grazie al server. La cartella di default è /htdocs/, si trova all&#8217;interno di quella dove abbiamo installato Apache.Se vogliamo cambiarla è sufficiente trovare il paramentro &#8220;DocumentRoot&#8221; e modificarlo come segue:<code>#<br />
# DocumentRoot: The directory out of which you will serve your<br />
# documents. By default, all requests are taken from this directory, but<br />
# symbolic links and aliases may be used to point to other locations.<br />
#<br />
DocumentRoot "C:/www"</code></p>
<p>C:/www/ in questo caso è la cartella dove andremo a posizionarele pagine web e tutti i file annessi.</li>
<li>Lo stesso percorso va riportato sotto, in questo modo:<code>#<br />
# This should be changed to whatever you set DocumentRoot to.<br />
#<br />
&lt;Directory "C:/www"&gt;</code></li>
<li><strong>Salvare e riavviare il server</strong>.</li>
<li>Se dovessero presentari problemi in fase di avvio del server, per prima cosa controllare l&#8217;application log di windows; se dovessero mancare delle dll può tornare utile questa pagina: <a href="http://windows.php.net/download/">http://windows.php.net/download/<br />
</a>Un&#8217;altra operazione da fare è settare anche questi due ulteriori parametri sul file di configurazione come da testo sotto:<br />
<code># ServerName gives the name and port that the server uses to identify itself.<br />
# This can often be determined automatically, but we recommend you specify<br />
# it explicitly to prevent problems during startup.<br />
#<br />
# If your host doesn't have a registered DNS name, enter its IP address here.<br />
#<br />
ServerName localhost:80</code><br />
<code># Listen: Allows you to bind Apache to specific IP addresses and/or<br />
# ports, instead of the default. See also the &lt;VirtualHost&gt;<br />
# directive.<br />
#<br />
# Change this to Listen on specific IP addresses as shown below to<br />
# prevent Apache from glomming onto all bound IP addresses.<br />
#<br />
Listen 127.0.0.1:80</code></li>
</ol>
<h3>Il problema all&#8217;avvio dell&#8217;icona Apache Monitor nella systray con Windows Vista &#8211; risoluzione</h3>
<p>Una volta installato il server è sufficiente digitare l&#8217;indirizzo &#8220;http://localhost/&#8221; nella barra degli indirizzi del browser per capire se tutto funziona. Su Windows XP però eravamo abituati all&#8217;iconcina con la piuma dalla quale era possibile avviare o stoppare il server apache.</p>
<p>Con Vista questa icona non c&#8217;è più, inoltre un fastidioso problema all&#8217;avvio ci accoglie perchè Apache Monitor non riesce a caricarsi correttamente. Per risolvere l&#8217;inconveniente basta andare nella cartella di installazione di Apache Server, entrare nella cartella /bin/ e cliccare col tasto destro sul file ApacheMonitor.exe, da qui clic su Proprietà. In alto selezionare la tab &#8220;Compatibilità&#8221; e spuntare l&#8217;opzione &#8220;Esegui il programma in modalità compatibile per Windows XP (Service Pack 2)&#8221;. Vedi figure sottostanti.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2008/01/apache-monitor-proprieta.jpg" alt="Apache monitor" /></p>
<p><img src="http://www.diplod.it/wp-content/uploads/2008/01/apache-spunta-proprieta.jpg" alt="Apache proprieta" /></p>
<h3>Installazione MySQL 5.0</h3>
<p>MySQL è un server per database relazionali open source, ormai affermato e robusto, soprattutto in ambito web. Per l&#8217;installazione è necessario:</p>
<ol>
<li><a title="MySQL 5" href="http://dev.mysql.com/downloads/" target="_blank">Scaricare dal sito ufficiale</a> l&#8217;<strong>installer per windows</strong>.</li>
<li><strong>Lanciare l&#8217;installer</strong> e seguire le istruzioni a video, scegliendo l&#8217;installazione <strong>Typical</strong>.</li>
<li>Alla fine dell&#8217;installazione scegliere di <strong>configurare il server</strong>.</li>
<li>Scegliamo l&#8217;opzione &#8220;<strong>Detailed Configuration</strong>&#8220;</li>
<p style="text-align: center;"><img src="http://www.diplod.it/wp-content/uploads/2008/01/mysql01.jpg" alt="mysql-configurazione1" /></p>
<li>Impostare la tipologia come &#8220;<strong>Developer Machine</strong>&#8221; (il server sarà infatti utilizzato principalmente per i nostri test in locale)</li>
<p style="text-align: center;"><img src="http://www.diplod.it/wp-content/uploads/2008/01/mysql02.jpg" alt="mysql-configurazione" /></p>
<li>Al passaggio successivo selezionare &#8220;<strong>Multifunctional Database</strong>&#8220;</li>
<p style="text-align: center;"><img class="aligncenter" src="http://www.diplod.it/wp-content/uploads/2008/01/mysql03.jpg" alt="mysql-configurazione" /></p>
<li>Lasciare invariato al punto successivo e proseguire, a meno che non si voglia specificare una directory particolare per InnoDB</li>
<li>Come numero approssimativo di connessioni al server possiamo specificare <strong>20</strong>. Più che sufficienti se lo utilizziamo come server di test.</li>
<p style="text-align: center;"><img src="http://www.diplod.it/wp-content/uploads/2008/01/mysql05.jpg" alt="mysql-configurazione" /></p>
<li>Al passaggio successivo selezionare entrambe le opzioni, è poi possibile specificare la porta di connessione al database: generalmente la <strong>3306</strong></li>
<p style="text-align: center;"><img src="http://www.diplod.it/wp-content/uploads/2008/01/mysql06.jpg" alt="mysql-configurazione" /></p>
<li>Come impostazioni dei caratteri scegliere &#8220;<strong>Best support for Multilingualism</strong>&#8220;</li>
<p style="text-align: center;"><img src="http://www.diplod.it/wp-content/uploads/2008/01/mysql07.jpg" alt="mysql-configurazione" /></p>
<li>Se vogliamo cheMySQL si avvii in automatico all&#8217;accensione di windows selezionare &#8220;<strong>Install as Windows Service</strong>&#8221; e &#8220;<strong>Launch the MySQL server automatically</strong>&#8220;.</li>
<p style="text-align: center;"><img src="http://www.diplod.it/wp-content/uploads/2008/01/mysql08.jpg" alt="mysql-configurazione" /></p>
<li>Indicare la password per l&#8217;utente amministratore (<strong>root</strong>) ed eventualmente creare un utente anonimo (anche se sarebbe meglio evitare, è poco sicuro)</li>
<p style="text-align: center;"><img src="http://www.diplod.it/wp-content/uploads/2008/01/mysql09.jpg" alt="mysql-configurazione" /></p>
<li>Per l&#8217;amministrazione del Database installare <a title="SQL GUI" href="http://dev.mysql.com/downloads/workbench/" target="_blank">MySQL Workbench</a>. Si tratta di utili strumenti per la gestione &#8220;visiva&#8221; del server, degli utenti, dei permessi e dei database. Comprende inoltre il Query Browser per lanciare le query SQL.</li>
</ol>
<h3>Installazione php 5 sul server Apache</h3>
<p>Con l&#8217;installazione di php e delle estensioni per la connessione al database avremo completato l&#8217;opera. In questo caso è meglio eseguire una installazione manuale. Come riportato nella <a title="Guida php su win" href="http://php.html.it/guide/lezione/2551/rendere-php-disponibile-nel-sistema/" target="_blank">Guida php su Windows</a> di HTML.it:</p>
<blockquote><p>Questa installazione, consigliata dal manuale ufficiale Php, ha il vantaggio di non richiedere lo spostamento di file nelle directory di sistema (Windows, System32 e altre): infatti modificando la sola variabile di sistema PATH e mantenenedo i file in c:\php, tutto rimane più ordinato e l&#8217;aggiornamento diventa molto più semplice.</p></blockquote>
<p>Ecco i passi da seguire:</p>
<ol>
<li>Scaricare il <a title="php download" href="http://www.php.net/downloads.php" target="_blank">pacchetto zip dal sito ufficiale</a></li>
<li>Estrarre i files nella cartella <strong>C:/php/</strong> (il nome breve è più comodo)</li>
<li>Aprire Pannello di Controllo -&gt; Sistema e Sicurezza (Sistema e Manutenzione su Vista) -&gt; Sistema. Nella barra di sinistra cliccare su &#8220;<strong>Proprietà di Sistema avanzate</strong>&#8221; (Vista) o su &#8220;Impostazioni avanzate di sistema&#8221; (Windows 7), poi sul tasto &#8220;<strong>Variabili d&#8217;ambiente..</strong>&#8220;.<img src="http://www.diplod.it/wp-content/uploads/2008/01/php-var-ambiente.jpg" alt="Installazione php" />Dalla tendina sotto (variabili di sistema) selezionare &#8220;<strong>Path</strong>&#8221; e cliccare su &#8220;Modifica&#8221;. In fondo al testo già presente aggiungere la stringa &#8220;<strong>;C:\php</strong>&#8221; (con il punto e virgola, senza gli apici).<img src="http://www.diplod.it/wp-content/uploads/2008/01/variabile-path.JPG" alt="Installazione php" />
<p>In questo modo abbiamo indicato al sistema dove si trova l&#8217;interprete php.</li>
<li><strong>Riavviare windows</strong></li>
<li>Ora è necessario <strong>integrare l&#8217;interprete php nel server Apache</strong>. Per farlo bisogna aprire il file di configurazione di Apache: &#8220;C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf&#8221;C&#8217;è una lunga lista di &#8220;LoadModule&#8221; (molti di questi sono commentati) alla fine della quale bisogna aggiungere queste righe:<code># Start Php integration</code><code>LoadModule php5_module "C:/php/php5apache2_2.dll"</code>
<p><code>AddType application/x-httpd-php .php</code></p>
<p><code>PhpIniDir "C:/php"</p>
<p># End Php integration</p>
<p></code></li>
<li>Infine modifichiamo il parametro DirectoryIndex come segue:<code>#<br />
# DirectoryIndex: sets the file that Apache will serve if a directory<br />
# is requested.<br />
#<br />
&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.html index.php<br />
&lt;/IfModule&gt;</code></p>
<p><code> </code></li>
<li>Ora andiamo nella directory di php e rinominiamo il file &#8220;php.ini-development&#8221; in &#8220;<strong>php.ini</strong>&#8220;.Si tratta del file di configurazione dell&#8217;interprete php. Apriamolo con un editor di testo.</li>
<li>Cambiamo il parametro &#8220;extension_dir&#8221; come segue:<code>; Directory in which the loadable extensions (modules) reside.</code><code> </code><code>extension_dir = "C:/php/ext"</code></li>
<li>Settare il parametro &#8220;display_errors&#8221; su On per poter vedere gli errori generati dagli script che svilupperemo</li>
<li>Infine decommentare (togliendo il punto e virgola davanti) il parametro &#8220;session.save_path&#8221; e moficarlo come segue:<code>session.save_path = "C:/php/sessionfiles"<br />
</code></p>
<p><strong>sessionfiles è una cartella da creare</strong>, dove verranno salvati i file relativi alle sessioni di php.</li>
<li>Ora dovremo attivare i connettori php-MySQL (maggiori info nella <a title="php mysql connectors" href="http://dev.mysql.com/downloads/connector/" target="_blank">pagina dei download dal sito ufficiale di MySQL</a>). Si tratta di file dll che permettono la connessione da parte di php al database: <strong>mysqli</strong> e <strong>mysql</strong></li>
<li>Assicurarsi che siano presenti i file php_mysql.dll e php_mysqli.dll nella cartella <strong>/ext/</strong> di php (dove ci sono le estensioni)</li>
<li>Ora nel file <strong>php.ini</strong> aperto in precedenza decommentare (togliendo il ; ad inizio riga) le estensioni di mysql come segue:<code>extension=php_mysql.dll<br />
extension=php_mysqli.dll</code></p>
<p><code> </code></li>
<li>Altra estensione utile è quella per la gestione delle immagini, che conviene decommentare:<code>extension=php_gd2.dll</code><code> </code></li>
<li>A questo punto salvare tutto, <strong>riavviare il server Apache</strong> e tutto dovrebbe funzionare.</li>
</ol>
<p>Per essere sicuri possiamo creare un file &#8220;index.php&#8221; con all&#8217;interno il semplice codice</p>
<p><code>&lt;?php phpinfo() ; ?&gt;<br />
</code></p>
<p>Aprire il browser e digitare l&#8217;indirizzo: &#8220;http://localhost/index.php&#8221; Se tutto è stato eseguito correttamente dovremmo vedere una pagina che riporta diverse informazioni sulla versione di php installata.</p>
<p>Si noti che questo semplice test non ci dà informazioni sulla corretta installazione delle estensioni per la connessione al database, che dovremo testare in un secondo momento, magari provando l&#8217;installazione in locale di un cms come wordpress.</p>
<p><strong>Anche su Windows Vista e Windows 7 gira, buon lavoro.</strong> :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/01/21/installare-apache-php-mysql-su-windows-vista/feed/</wfw:commentRss>
		<slash:comments>65</slash:comments>
		</item>
	</channel>
</rss>
