<?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>paitadesignblog &#187; current</title>
	<atom:link href="http://www.paitadesign.com/blog/tag/current/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paitadesign.com/blog</link>
	<description>HTML, CSS e tutto il resto</description>
	<lastBuildDate>Thu, 06 Oct 2011 09:55:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>PHP CSS o jQuery: come evidenziare la pagina corrente nel menù di navigazione</title>
		<link>http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/</link>
		<comments>http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 19:23:26 +0000</pubDate>
		<dc:creator>Giacomo Paita</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[current]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[id]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.paitadesign.com/blog/?p=179</guid>
		<description><![CDATA[


<a href="http://www.paitadesign.com/?page=Contact" title="Suggeriscimi un argomento!" target="_self">Suggeriscimi</a> un argomento!]]></description>
			<content:encoded><![CDATA[<p>Quando i visitatori navigano nel nostro sito, è importante fare in modo che abbiano più <a href="http://webdesign.html.it/articoli/leggi/322/la-progettazione-di-un-sito-usabile/" title="La progettazione di un sito usabile" target="_blank">informazioni possibili</a>: dalla semplice visione di insieme, alla rintracciabilità delle sezioni corrette in relazione all&#8217;informazione cercata. Ai fini dell&#8217;<a href="http://www.usabile.it/082001.htm" title="I decaloghi dell'usabilità - I principi di Nielsen" target="_blank">usabilità</a>, è inoltre importante segnalare in ogni pagina in quale sezione o punto del sito ci si trova. Per fare questo in modo automatico, utilizzeremo un po&#8217; di programmazione in PHP e assegneremo al menù degli stili tramite i CSS.</p>
<p><span id="more-179"></span><br />
Il primo metodo che suggerisco consente di <em>segnalare la pagina corrente in modo dinamico</em>, ma ha il limite di non poter essere utilizzato con menù che sfruttano la tecnica CSS dello &quot;sprite image&quot;. Il secondo metodo sfrutta il <code>body id</code> ed è compatibile con lo &quot;sprite image&quot;, ma non è dinamico.</p>
<h2>PHP: evidenziare la pagina corrente in modo dinamico</h2>
<p>Ecco un esempio di menù di navigazione generico per un sito web:</p>
<pre name="codice" class="xhtml">&lt;div id=&quot;main_nav&quot;&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;index.php&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;Identity.php&quot;&gt;Identity&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;logo.php&quot;&gt;Logo&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;small_graphic.php&quot;&gt;Small Graphic&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;video.php&quot;&gt;Video&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;contatti.php&quot;&gt;Contatti&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;</pre>
<p>Salviamolo come file esterno nella cartella dei file inclusi e al suo posto scriviamo in pagina queste righe di codice:</p>
<pre name="codice" class="xhtml">&lt;?php
	$menu=file_get_contents(&quot;inc/main_nav.php&quot;);
	$base=basename($_SERVER['PHP_SELF']);
	$menu=preg_replace(&quot;|&lt;li&gt;&lt;a href=\&quot;&quot;.$base.&quot;\&quot;&gt;(.*)&lt;/a&gt;&lt;/li&gt;|U&quot;, &quot;&lt;li class=\&quot;current\&quot;&gt;$1&lt;/li&gt;&quot;, $menu);
	echo $menu;
?&gt;</pre>
<p>Ecco cosa stiamo facendo: memorizziamo nella variabile <code>menu</code> il nostro menù di navigazione.<br />
Utilizziamo poi la funzione <code>basename</code> che restituisce, dato un percorso, la componente di questo identificata da un nome di file (<strong><code>$_SERVER</code></strong> è un array contenente delle variabili impostate dal Web Server oppure direttamente legate all&#8217;ambiente di esecuzione dello script corrente;  <strong><code>PHP_SELF</code></strong> restituisce il nome del file dello script correntemente in esecuzione), e la memorizziamo nella variabile <code>base</code>. Nella riga successiva <code>preg_replace</code> effettua una ricerca di una espressione regolare e la sostiutisce: in questo caso ricerca il link con attributo <code>href</code> uguali alla pagina in cui ci troviamo e lo sostituisce con un elemento <code>li</code> con assegnata la classe <code>current,</code> che definisce lo stile da assegnare al link della pagina corrente.<br />
Infine tramite <code>echo $menu</code> stampiamo in pagina il menù. &Egrave; da notare che stiamo sostituendo un link con un elemento <code>list-item</code>, in modo tale che il collegamento alla pagina in cui siamo non sia attivo.</p>
<h2>CSS: evidenziare la pagina corrente con il <em>body id</em></h2>
<p>Se per esigenze di layout abbiamo impostato il menù tramite la tecnica cosiddetta &#8220;<em>css sprite image</em>&#8220;, non possiamo utilizzare la programmazione come nell&#8217;esempio precedente, ma possiamo evidenziare la pagina corrente nel menù di navigazione dichiarando un id specifico per il tag <code>body</code> e assegnando nel foglio di stile un comportamento specifico per il link della pagina in cui siamo. Ecco un esempio di codice html:</p>
<pre name="codice" class="xhtml">&lt;body id=logo&gt;
...
&lt;div id=&quot;main_nav&quot;&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a id=&quot;main_nav_index&quot; href=&quot;index.php&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a id=&quot;main_nav_immagine_coordinata&quot; href=&quot;immagine_coordinata.php&quot;&gt;Identity&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a id=&quot;main_nav_logo&quot; href=&quot;logo.php&quot;&gt;Logo&lt;/a&gt;&lt;/li&#038;gt
    &lt;li&gt;&lt;a id=&quot;main_nav_small_graphic&quot; href=&quot;small_graphic.php&quot;&gt;Small Graphic&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a id=&quot;main_nav_video&quot; href=&quot;video.php&quot;&gt;Video&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a id=&quot;main_nav_contatti&quot; href=&quot;contatti.php&quot;&gt;Contatti&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
...
&lt;/body&gt;
</pre>
<p>Ed ecco come impostare il codice CSS associato:</p>
<pre name="codice" class="css">
/* pagina &quot;Logo&quot; */
#logo #main_nav #main_nav_logo a {
  background:url(../gfx/main_nav.gif) no-repeat -90px -61px; /*Posizionamento dell'immagine per evienziare la pagina corrente */
}</pre>
<p>Come rendere questo esempio più dinamico? Possiamo sfruttare anche in questo caso gli snippet PHP che abbiamo usato nell&#8217;esempio precedente:</p>
<pre name="codice" class="xhtml">&lt;body id=&quot;&lt;?= basename($_SERVER['PHP_SELF'], &quot;.php&quot;)?&gt;&quot;&gt;
&lt;?php require_once('inc/main_nav.php'); ?&gt;
...
&lt;/body&gt;</pre>
<p>In questo modo l&#8217;ID dela pagina sarà uguale all&#8217;indirizzo della pagina in cui è inserito il menù.</p>
<h2>jQuery: evidenziare la pagina corrente in modo semplice!</h2>
<p>Ecco un esempio di codice per il menù di navigazione che si autoevidenzia con jQuery:</p>
<pre name="codice" class="xhtml">&lt;div id=&quot;mainNav&quot;&gt;
 &lt;ul&gt;
  &lt;li&gt;&lt;a id=&quot;home&quot; href=&quot;index.html&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a id=&quot;chi&quot; href=&quot;chisono.html&quot;&gt;Chi sono&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a id=&quot;cosa&quot; href=&quot;cosafaccio.html&quot;&gt;Cosa faccio&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a id=&quot;dove&quot; href=&quot;dovesono.html&quot;&gt;Dove sono&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/div&gt;
</pre>
<p>Occorre prima scaricare il plugin <a href="http://projects.allmarkedup.com/jquery_url_parser/">jQuery URL Parser</a> e poi scrivere queste righe di codice:</p>
<pre name="codice" class="javascript">
	$page = jQuery.url.attr('file');
	if(!$page) {
		$page = 'index.html';
	}
	$('ul.navigation li a').each(function(){
		var $href = $(this).attr('href');
		if ( ($href == $page) || ($href == '') ) {
			$(this).addClass('on');
		} else {
			$(this).removeClass('on');
		}
	});
</pre>
<div class="resources">
<h3>Letture consigliate</h3>
<p>  <a class="hotLink"href="http://www.kevinleary.net/highlighting-the-current-page-with-php-jquery/" title="How do we highlight the current page in a navigation seamlessly and dynamically?" target="_blank">jQuery and CSS: highlight the current page in a navigation</a><br />
  <a href="http://bonrouge.com/~current2" title="Showing current page" target="_blank">Showing current page with PHP</a><br />
  <a href="http://www.dreamincode.net/code/snippet4468.htm" title="Highlight current page in navigation with PHP" target="_blank">Highlight current page in navigation with PHP</a><br />
<a href="http://www.456bereastreet.com/archive/200503/setting_the_current_menu_state_with_css/" title="Setting the current menu state with CSS" target="_blank">Setting the current menu state with CSS</a></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-bg-shr">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/&amp;t=PHP+CSS+o+jQuery%3A+come+evidenziare+la+pagina+corrente+nel+men%C3%B9+di+navigazione" rel="nofollow" class="external" title="Condividi su Facebook">Condividi su Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=PHP+CSS+o+jQuery%3A+come+evidenziare+la+pagina+corrente+nel+men%C3%B9+di+navigazione+-+http://b2l.me/dqjst&amp;source=shareaholic" rel="nofollow" class="external" title="Tweetalo!">Tweetalo!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/&amp;title=PHP+CSS+o+jQuery%3A+come+evidenziare+la+pagina+corrente+nel+men%C3%B9+di+navigazione" rel="nofollow" class="external" title="Condividi su del.icio.us">Condividi su del.icio.us</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22PHP%20CSS%20o%20jQuery%3A%20come%20evidenziare%20la%20pagina%20corrente%20nel%20men%C3%B9%20di%20navigazione%22&amp;body=Link: http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/ (inviato con shareaholic)%0D%0A%0D%0A----%0D%0A PHP%2C%20jQuery%20e%20CSS%3A%20come%20segnalare%20in%20ogni%20pagina%20in%20quale%20sezione%20o%20punto%20del%20sito%20ci%20si%20trova%20in%20modo%20dinamico%20e%20statico%2C%20tramite%20la%20programmazione%20e%20tramite%20lo%20sprite%20image%20css%20e%20il%20body%20id." rel="nofollow" class="external" title="Vuoi segnalarlo via mail ad un amico?">Vuoi segnalarlo via mail ad un amico?</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/&amp;title=PHP+CSS+o+jQuery%3A+come+evidenziare+la+pagina+corrente+nel+men%C3%B9+di+navigazione&amp;summary=PHP%2C%20jQuery%20e%20CSS%3A%20come%20segnalare%20in%20ogni%20pagina%20in%20quale%20sezione%20o%20punto%20del%20sito%20ci%20si%20trova%20in%20modo%20dinamico%20e%20statico%2C%20tramite%20la%20programmazione%20e%20tramite%20lo%20sprite%20image%20css%20e%20il%20body%20id.&amp;source=paitadesignblog" rel="nofollow" class="external" title="Condividi su LinkedIn">Condividi su LinkedIn</a>
		</li>
		<li class="shr-gmail">
			<a href="https://mail.google.com/mail/?ui=2&amp;view=cm&amp;fs=1&amp;tf=1&amp;su=PHP+CSS+o+jQuery%3A+come+evidenziare+la+pagina+corrente+nel+men%C3%B9+di+navigazione&amp;body=Link: http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/ (inviato con shareaholic)%0D%0A%0D%0A----%0D%0A PHP%2C%20jQuery%20e%20CSS%3A%20come%20segnalare%20in%20ogni%20pagina%20in%20quale%20sezione%20o%20punto%20del%20sito%20ci%20si%20trova%20in%20modo%20dinamico%20e%20statico%2C%20tramite%20la%20programmazione%20e%20tramite%20lo%20sprite%20image%20css%20e%20il%20body%20id." rel="nofollow" class="external" title="Manda email con Gmail">Manda email con Gmail</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/feed" rel="nofollow" class="external" title="Vuoi iscriverti ai commenti per questo post?">Vuoi iscriverti ai commenti per questo post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p><a href="http://www.paitadesign.com/?page=Contact" title="Suggeriscimi un argomento!" target="_self">Suggeriscimi</a> un argomento!</p>]]></content:encoded>
			<wfw:commentRss>http://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

