{"id":4281,"date":"2021-12-13T10:00:37","date_gmt":"2021-12-13T09:00:37","guid":{"rendered":"https:\/\/www.eugigufo.net\/it\/?page_id=4281"},"modified":"2024-10-01T13:58:27","modified_gmt":"2024-10-01T11:58:27","slug":"paragrafo27","status":"publish","type":"page","link":"https:\/\/eugigufo.net\/it\/inerario\/paragrafo27\/","title":{"rendered":"\u00a7\u00a027. Breadcrumbs: lo\u00a0script universale in\u00a0PHP"},"content":{"rendered":"<p>Sono sicuro che i&nbsp;lettori del presente paragrafo sanno gi&agrave; che cosa sia e&nbsp;quanto sia utile il&nbsp;menu breadcrumbs: <a href=\"https:\/\/www.eugigufo.net\/it\/inerario\/paragrafo26\/\">ne&nbsp;avevo scritto pure&nbsp;io<\/a>. Quindi ora vedo di&nbsp;proporre una prima soluzione, un&nbsp;primo consiglio pratico sul come creare un&nbsp;menu breadcrumbs con uno script in&nbsp;PHP. Per questa volta si&nbsp;tratta di&nbsp;una soluzione universale&nbsp;&ndash; generica&nbsp;&ndash; adatta per dei progetti di&nbsp;piccole dimensioni e&nbsp;con una struttura non particolarmente complessa, compresi gli eventuali siti costruiti senza un&nbsp;CMS e\/o, addirittura, senza un&nbsp;database.<br \/>\nLe&nbsp;persone pi&ugrave; pigre possono andare <a href=\"#par27punto6\">direttamente al&nbsp;codice finale completo<\/a>, mentre io&nbsp;inizierei dalla spiegazione di&nbsp;alcuni dettagli: la&nbsp;comprensione di&nbsp;questi vi&nbsp;aiuter&agrave; a&nbsp;ottimizzare il&nbsp;risultato finale per le&nbsp;vostre esigenze concrete.<br \/>\n<a name=\"par27punto1\"><\/a><b>1.&nbsp;Elaboriamo l&rsquo;algoritmo<\/b><br \/>\nI&nbsp;siti web moderni progettati in&nbsp;un&nbsp;modo intelligente hanno gli&nbsp;URL strutturati sulla base della gerarchia delle pagine: l&rsquo;indirizzo di&nbsp;ogni singola pagina concreta contiene i&nbsp;riferimenti a&nbsp;ognuna delle pagine di&nbsp;rango superiore (le&nbsp;quali svolgono spesso la&nbsp;funzione delle categorie); ogni singolo riferimento &egrave;&nbsp;separato dagli slash (&laquo;\/&raquo;) dal resto dell&rsquo;indirizzo. In&nbsp;qualit&agrave; di&nbsp;un&nbsp;semplice esempio possiamo vedere l&rsquo;URL del presente paragrafo: https:\/\/eugigufo.net\/it\/inerario\/paragrafo27.<br \/>\nQuesto indirizzo, infatti, &egrave;&nbsp;fatto dalle seguenti componenti:<br \/>\n1.&nbsp;La&nbsp;pagina iniziale (eugigufo.net, la&nbsp;root),<br \/>\n2.&nbsp;La&nbsp;pagina iniziale della versione italiana del sito&nbsp;(it),<br \/>\n3.&nbsp;L&rsquo;indice dell&rsquo;Inerario (inerario),<br \/>\n4.&nbsp;L&rsquo;oggetto della categoria, in&nbsp;questo specifico caso il&nbsp;paragrafo&nbsp;27 (paragrafo27).<br \/>\nIn&nbsp;sostanza, durante la&nbsp;navigazione del visitatore dalla pagina iniziale verso questo paragrafo, l&rsquo;URL a&nbsp;egli visibile si&nbsp;arricchisce di&nbsp;nuovi elementi: quelli che indicano i&nbsp;livelli gerarchici precedenti e&nbsp;quello della pagina corrente. Di&nbsp;conseguenza, possiamo facilmente immaginare l&rsquo;algoritmo della costruzione del menu breadcrumbs da&nbsp;tradurre in&nbsp;codice:<br \/>\n1.&nbsp;Ottenere l&rsquo;URL della pagina corrente,<br \/>\n2.&nbsp;Analizzare l&rsquo;URL ottenuto, scomponendolo in&nbsp;elementi separati dai slash,<br \/>\n3.&nbsp;Per ogni elemento identificato assegnare un&nbsp;nome (che verr&agrave; linkato e&nbsp;visualizzato nel menu) e&nbsp;costruire il&nbsp;suo indirizzo,<br \/>\n4.&nbsp;Trasmettere i&nbsp;nomi e&nbsp;gli indirizzi in&nbsp;un&nbsp;array che poi verr&agrave; utilizzato nel template del menu breadcrumbs,<br \/>\n5.&nbsp;Organizzare la&nbsp;visualizzazione del template del menu breadcrumbs sulle pagine del sito.<br \/>\nTale algoritmo non dipende dal modo in&nbsp;cui &egrave;&nbsp;stato realizzato il&nbsp;sito (e&nbsp;quindi non dipende dal tipo e&nbsp;dal solo fatto di&nbsp;esistenza di&nbsp;un&nbsp;CMS) in&nbsp;quanto per funzionare ha&nbsp;bisogno solo dell&rsquo;URL della pagina corrente. Non &egrave;&nbsp;nemmeno necessario interrogare un&nbsp;eventuale database per ottenere i&nbsp;nomi delle pagine superiori.<br \/>\n<a name=\"par27punto2\"><\/a><b>2.&nbsp;Ipotizziamo un&nbsp;caso realistico<\/b><br \/>\nSupponiamo di&nbsp;voler aggiungere il&nbsp;menu breadcrumbs a&nbsp;un&nbsp;piccolo sito aziendale che si&nbsp;trova all&rsquo;indirizzo codicephp.it.<br \/>\nSupponiamo anche che quel sito abbia la&nbsp;seguente struttura:<\/p>\n<table border=\"0\" cellspacing=\"10\" cellpadding=\"10\">\n<tbody>\n<tr>\n<td><i>Il&nbsp;nome della pagina<\/i><\/td>\n<td>&nbsp;&nbsp;<\/td>\n<td><i>L&rsquo;indirizzo della pagina<\/i><\/td>\n<\/tr>\n<tr>\n<td>Home<\/td>\n<td>&nbsp;&nbsp;<\/td>\n<td>codicephp.it\/<\/td>\n<\/tr>\n<tr>\n<td>Chi siamo<\/td>\n<td>&nbsp;&nbsp;<\/td>\n<td>codicephp.it\/aboutus<\/td>\n<\/tr>\n<tr>\n<td>Servizi<\/td>\n<td>&nbsp;&nbsp;<\/td>\n<td>codicephp.it\/services<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;&nbsp;&nbsp;Portfolio<\/td>\n<td>&nbsp;&nbsp;<\/td>\n<td>codicephp.it\/services\/portfolio<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;&nbsp;&nbsp;Prezzi<\/td>\n<td>&nbsp;&nbsp;<\/td>\n<td>codicephp.it\/services\/prices<\/td>\n<\/tr>\n<tr>\n<td>Blog<\/td>\n<td>&nbsp;&nbsp;<\/td>\n<td>codicephp.it\/services\/blog<\/td>\n<\/tr>\n<tr>\n<td>Contatti<\/td>\n<td>&nbsp;&nbsp;<\/td>\n<td>codicephp.it\/contacts<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\nIn&nbsp;particolare, le&nbsp;pagine Portfolio e&nbsp;Prezzi ci&nbsp;servono per verificare il&nbsp;funzionamento del nostro menu breadcrumbs con pi&ugrave; di&nbsp;una voce (quindi con qualcosa oltre il&nbsp;link alla Home). Il&nbsp;nostro obbiettivo &egrave;&nbsp;quello di&nbsp;far comparire il&nbsp;menu breadcrumbs in&nbsp;questo header:<br \/>\n<img decoding=\"async\" src=\"https:\/\/eugigufo.net\/images\/inerario\/art27breadcrumbs1.jpg\" title=\"il header nel quale vogliamo aggiungere il menu breadcrumbs\" border=\"0\"><br \/>\nOra, finalmente, possiamo dedicarci al&nbsp;codice. Esso sar&agrave; composto da&nbsp;due parti: una parte responsabile della formazione dell&rsquo;array contenente i&nbsp;nomi assegnati agli elementi dell&rsquo;URL e&nbsp;i&nbsp;rispettivi indirizzi (quindi i&nbsp;nomi e&nbsp;gli&nbsp;URL delle pagine di&nbsp;rango superiore a&nbsp;quella corrente) e&nbsp;l&rsquo;altra parte responsabile della visualizzazione del menu breadcrumbs.<br \/>\nOvviamente, anche la&nbsp;prima parte del codice deve in&nbsp;qualche modo essere presente su&nbsp;tutte le&nbsp;pagine del sito perch&eacute; dobbiamo analizzare l&rsquo;URL corrente ogni volta che visualizziamo il&nbsp;menu breadcrumbs: per esempio, potete inserirla\/includerla nel header.<br \/>\n<a name=\"par27punto3\"><\/a><b>3.&nbsp;La&nbsp;formazione dell&rsquo;array dei breadcrumbs<\/b><br \/>\nPrima di&nbsp;tutto, seguendo il&nbsp;nostro algoritmo, dobbiamo determinare l&rsquo;URL della pagina corrente. A&nbsp;tale scopo ci&nbsp;&egrave;&nbsp;molto utile la&nbsp;variabile superglobale $_SERVER offertaci dal PHP: in&nbsp;essa sono contenute le&nbsp;varie informazioni sullo script eseguito sul lato server. L&rsquo;URL corrente &egrave;&nbsp;raggiungibile grazie al&nbsp;REQUEST_URI:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 1; notranslate\" title=\"listing 1\">\n$cur_url = $_SERVER&#x5B;'REQUEST_URI'];\n<\/pre>\n<p>\nUna volta recuperato l&rsquo;URL, dobbiamo scomporlo in&nbsp;elementi. Non &egrave;&nbsp;difficile, dato che tutti i&nbsp;suoi elementi sono separati dai slash, quindi analizziamo l&rsquo;URL corrente:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 2; notranslate\" title=\"listing 2\">\n$urls = explode('\/', $cur_url);\n<\/pre>\n<p>\nProcediamo a&nbsp;creare un&nbsp;array vuoto per metterci dentro le&nbsp;informazioni sui nomi degli elementi dei breadcrumbs e&nbsp;dei loro indirizzi:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 3; notranslate\" title=\"listing 3\">\n$crumbs = array();\n<\/pre>\n<p>\nIl&nbsp;prossimo passaggio dell&rsquo;algoritmo &egrave;&nbsp;la&nbsp;formazione dei link e&nbsp;dei nomi degli elementi del menu. A&nbsp;tale scopo analizziamo le&nbsp;parti dell&rsquo;URL corrente all&rsquo;interno di&nbsp;un&nbsp;ciclo, creando anche un&nbsp;array per gli indirizzi degli elementi dei breadcrumbs che rappresentano le&nbsp;pagine precedenti.<br \/>\nTrovo logico creare il&nbsp;menu breadcrumbs per tutte le&nbsp;pagine del sito a&nbsp;eccezione della prima (la&nbsp;home o&nbsp;la&nbsp;principale: dipende come preferite chiamarla). Infatti, non avrebbe senso generare un&nbsp;menu con un&nbsp;solo link che per di&nbsp;pi&ugrave; ci&nbsp;porterebbe alla medesima pagina corrente.<br \/>\nQuindi ci&nbsp;viene un&nbsp;codice di&nbsp;questo tipo:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 4; notranslate\" title=\"listing 4\">\nif (!empty($urls) &amp;&amp; $cur_url != '\/') {\n   foreach ($urls as $key =&gt; $value) {\n      $prev_urls = array();\n   }\n}\n<\/pre>\n<p>\nOra dobbiamo riempire l&rsquo;array degli indirizzi dei singoli elementi del futuro menu breadcrumbs. A&nbsp;tale scopo aggiungiamo al&nbsp;nostro ciclo un&nbsp;altro ciclo, il&nbsp;quale verr&agrave; eseguito per ogni elemento dell&rsquo;URL della pagina corrente:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 5; notranslate\" title=\"listing 5\">\nfor ($i = 0; $i &lt;= $key; $i++) {\n    $prev_urls&#x5B;] = $urls&#x5B;$i];\n}\n<\/pre>\n<p>\nCome si&nbsp;vede dal codice, per l&rsquo;elemento corrente con la&nbsp;chiave $key verranno registrati all&rsquo;array $prev_urls gli indirizzi di&nbsp;tutte le&nbsp;parti precedenti contenute nell&rsquo;URL della pagina corrente.<br \/>\nIn&nbsp;questa fase gli indirizzi degli oggetti (pagine) precedenti costituiscono gli elementi dell&rsquo;array $prev_urls. Per assemblare un&nbsp;URL completo della pagina precedente bisogna unire con gli slash gli elementi dell&rsquo;array.<br \/>\nEvitiamo di&nbsp;creare un&nbsp;URL per l&rsquo;elemento dell&rsquo;array che corrisponde all&rsquo;identificatore della pagina corrente. Quindi aggiungiamo al&nbsp;ciclo interno il&nbsp;seguente codice:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 6; notranslate\" title=\"listing 6\">\nif ($key == count($urls) - 1)\n{\n    $crumbs&#x5B;$key]&#x5B;'url'] = '';\n}\nelseif (!empty($prev_urls))\n{\n    $crumbs&#x5B;$key]&#x5B;'url'] = count($prev_urls) &gt; 1 ? implode('\/', $prev_urls) : '\/';\n}\n<\/pre>\n<p>\nIn&nbsp;questa fase il&nbsp;nostro array finale $crumbs contiene gli indirizzi degli elementi superiori&nbsp;&ndash; dal punto di&nbsp;vista gerarchico&nbsp;&ndash; rispetto alla pagina corrente. Per esempio, per la&nbsp;pagina &laquo;Portfolio&raquo; del nostro sito immaginario l&rsquo;array $crumbs avr&agrave; il&nbsp;seguente aspetto:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 7; notranslate\" title=\"listing 7\">\nArray (\n \n    &#x5B;0] =&gt; Array (\n        &#x5B;url] =&gt; \/\n    )\n \n    &#x5B;1] =&gt; Array (\n        &#x5B;url] =&gt; \/services\n    )\n \n    &#x5B;2] =&gt; Array (\n        &#x5B;url] =&gt;\n    )\n \n)\n<\/pre>\n<p>\nA&nbsp;questo punto, l&rsquo;unica cosa che ci&nbsp;manca sono i&nbsp;nomi delle voci del menu breadcrumbs. Per crearli, aggiungiamo al&nbsp;ciclo interno (dopo la&nbsp;formazione degli indirizzi degli elementi) il&nbsp;riempimento dell&rsquo;array $prev_urls con i&nbsp;nomi:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 8; notranslate\" title=\"listing 8\">\nswitch ($value) {\n    case 'about' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Chi siamo';\n        break;\n \n    case 'services' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Servizi';\n        break;\n \n    case 'blog' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Blog';\n        break;\n \n    case 'contacts' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Contatti';\n        break;\n \n    case 'portfolio' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Portfolio';\n        break;\n \n    case 'prices' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Prezzi';\n        break;\n \n    default : $crumbs&#x5B;$key]&#x5B;'text'] = 'Home';\n        break;\n}\n<\/pre>\n<p>\nCome potete vedere da&nbsp;questo ultimo codice, a&nbsp;ogni elemento dei breadcrumbs il&nbsp;nome viene assegnato in&nbsp;base all&rsquo;URL della rispettiva pagina. Certamente, l&rsquo;assegnazione manuale dei nomi non &egrave;&nbsp;la&nbsp;soluzione migliore. Tale soluzione potrebbe essere accettabile solo per dei piccoli siti con poche pagine o&nbsp;quando non c&rsquo;&egrave; proprio la&nbsp;possibilit&agrave; di&nbsp;sfruttare un&nbsp;database e\/o il&nbsp;CMS del sito per la&nbsp;creazione automatica degli elementi del menu breadcrumbs.<br \/>\nPer il&nbsp;nostro metodo attualmente studiato siamo riusciti, comunque, a&nbsp;ottenere un&nbsp;array con i&nbsp;dati necessari. Per la&nbsp;pagina &laquo;Portfolio&raquo;, per esempio, l&rsquo;array avr&agrave; il&nbsp;seguente aspetto:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 9; notranslate\" title=\"listing 9\">\nArray(\n \n    &#x5B;0] =&gt; Array (\n        &#x5B;url] =&gt; \/\n         =&gt; Home\n    )\n \n    &#x5B;1] =&gt; Array (\n        &#x5B;url] =&gt; \/services\n         =&gt; Servizi\n    )\n \n    &#x5B;2] =&gt; Array (\n        &#x5B;url] =&gt;\n         =&gt; Portfolio\n    )\n \n)\n<\/pre>\n<p>\nCi&nbsp;rimane solo far visualizzare il&nbsp;nostro menu breadcrumbs sulle pagine del sito.<br \/>\n<a name=\"par27punto4\"><\/a><b>4.&nbsp;Visualizzare il&nbsp;menu breadcrumbs sulle pagine del sito<\/b><br \/>\nIl&nbsp;nostro obiettivo iniziale dichiarato &egrave;&nbsp;stato quello di&nbsp;proporre una soluzione universale. Di&nbsp;conseguenza, anche la&nbsp;visualizzazione del menu breadcrumbs appena descritto deve funzionare su&nbsp;qualsiasi sito. La&nbsp;facciamo con un&nbsp;altro script in&nbsp;PHP che poi dovr&agrave; essere inserito nel codice delle pagine del sito.<br \/>\nPrima di&nbsp;tutto vi&nbsp;ricordo di&nbsp;creare un&nbsp;DIV, all&rsquo;interno del quale mettere il&nbsp;codice PHP che stiamo per scrivere. L&rsquo;aspetto estetico del menu potr&agrave; essere impostato con il&nbsp;vostro file di&nbsp;stili&nbsp;CSS.<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 10; notranslate\" title=\"listing 10\">\n&lt;div class=&quot;menubreadcrumbs&quot;&gt;\n    &lt;!--Al posto di questo commento va messo il codice PHP della visualizzazione del menu breadcrumbs--&gt;\n&lt;\/div&gt;\n<\/pre>\n<p>\nIl&nbsp;menu stesso pu&ograve; essere creato, per esempio, sotto forma di&nbsp;un&nbsp;elenco contenuto tra i&nbsp;tag&nbsp;&lt;ul&gt;. I&nbsp;dati saranno estratti dall&rsquo;array all&rsquo;interno di&nbsp;un&nbsp;ciclo, quindi nel&nbsp;DIV del menu scriviamo:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 11; notranslate\" title=\"listing 11\">\n&lt;?php if (!empty($crumbs)) { ?&gt;\n    &lt;ul class=&quot;breadcrumb&quot;&gt;\n        &lt;?php foreach ($crumbs as $item) { ?&gt;\n            &lt;?php if (isset($item)) { ?&gt;\n                &lt;li&gt;\n                    &lt;a href=&quot;&lt;?php echo $item&#x5B;'url'] ?&gt;&quot;&gt;&lt;?php echo $item&#x5B;'text'] ?&gt;&lt;\/a&gt;\n                &lt;\/li&gt;\n            &lt;?php } ?&gt;\n        &lt;?php } ?&gt;\n    &lt;\/ul&gt;\n&lt;?php } ?&gt;\n<\/pre>\n<p>\nCome potete vedere dal codice, ogni elemento dell&rsquo;array con i&nbsp;breadcrumbs viene visualizzato come un&nbsp;link, dove il&nbsp;relativo URL proviene dall&rsquo;elemento con l&rsquo;indice &laquo;url&raquo;, mentre il&nbsp;nome della voce relativa proviene dall&rsquo;elemento con l&rsquo;indice &laquo;text&raquo;. Il&nbsp;risultato &egrave;&nbsp;questo:<br \/>\n<img decoding=\"async\" src=\"https:\/\/eugigufo.net\/images\/inerario\/art27breadcrumbs2.jpg\" title=\"il header nel quale abbiamo aggiunto il menu breadcrumbs, ma bisogna sistemare ultimo link\" border=\"0\"><br \/>\n&Egrave;&nbsp;quasi quello che ci&nbsp;aspettavamo. &laquo;Quasi&raquo; perch&eacute; l&rsquo;ultima voce del menu &egrave;&nbsp;il&nbsp;link &laquo;vuoto&raquo; (privo di&nbsp;un&nbsp;URL) alla pagina corrente. Una cosa del genere non ha&nbsp;molto senso, quindi proviamo a&nbsp;trasformare l&rsquo;elemento senza un&nbsp;URL (non ce&nbsp;l&rsquo;ha perch&eacute; siamo stati noi a&nbsp;decidere cos&igrave;) in&nbsp;un&nbsp;semplice testo. Quindi inseriamo nel nostro ciclo di&nbsp;visualizzazione la&nbsp;seguente verifica:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 12; notranslate\" title=\"listing 12\">\n&lt;?php if (!empty($item&#x5B;'url'])) { ?&gt;\n    &lt;a href=&quot;&lt;?php echo $item&#x5B;'url'] ?&gt;&quot;&gt;&lt;?php echo $item&#x5B;'text'] ?&gt;&lt;\/a&gt;\n&lt;?php } else { ?&gt;\n    &lt;?php echo $item&#x5B;'text'] ?&gt;\n&lt;?php } ?&gt;\n<\/pre>\n<p>\nOra il&nbsp;nostro menu breadcrumbs ha&nbsp;un&nbsp;aspetto molto pi&ugrave; bello e&nbsp;logico:<br \/>\n<img decoding=\"async\" src=\"https:\/\/eugigufo.net\/images\/inerario\/art27breadcrumbs3.jpg\" title=\"il header nel quale abbiamo aggiunto correttamente il menu breadcrumbs\" border=\"0\"><br \/>\nQuindi possiamo considerare concluso il&nbsp;lavoro.<br \/>\n<a name=\"par27punto5\"><\/a><b>5.&nbsp;Il&nbsp;codice completo dello script<\/b><br \/>\nIl&nbsp;codice PHP che crea l&rsquo;array con gli elementi del menu breadcrumbs &egrave;&nbsp;dunque il&nbsp;seguente:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 13; notranslate\" title=\"listing 13\">\n$cur_url = $_SERVER&#x5B;'REQUEST_URI'];\n$urls = explode('\/', $cur_url);\n \n$crumbs = array();\n \nif (!empty($urls) &amp;&amp; $cur_url != '\/') {\n    foreach ($urls as $key =&gt; $value) {\n        $prev_urls = array();\n        for ($i = 0; $i &lt;= $key; $i++) {\n            $prev_urls&#x5B;] = $urls&#x5B;$i];\n        }\n        if ($key == count($urls) - 1)\n            $crumbs&#x5B;$key]&#x5B;'url'] = '';\n        elseif (!empty($prev_urls))\n            $crumbs&#x5B;$key]&#x5B;'url'] = count($prev_urls) &gt; 1 ? implode('\/', $prev_urls) : '\/';\n \n        switch ($value) {\n            case 'about' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Chi siamo';\n                break;\n            case 'services' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Servizi';\n                break;\n            case 'blog' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Blog';\n                break;\n            case 'contacts' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Contatti';\n                break;\n            case 'portfolio' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Portfolio';\n                break;\n            case 'prices' : $crumbs&#x5B;$key]&#x5B;'text'] = 'Prezzi';\n                break;\n            default : $crumbs&#x5B;$key]&#x5B;'text'] = 'Home';\n                break;\n        }\n    }\n}\n<\/pre>\n<p>\nIl&nbsp;codice PHP che visualizza il&nbsp;menu breadcrumbs &egrave;&nbsp;invece il&nbsp;seguente:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 14; notranslate\" title=\"listing 14\">\n&lt;?php if (!empty($crumbs)) { ?&gt;\n    &lt;ul class=&quot;breadcrumb&quot;&gt;\n        &lt;?php foreach ($crumbs as $item) { ?&gt;\n            &lt;?php if (isset($item)) { ?&gt;\n                &lt;li&gt;\n                    &lt;?php if (!empty($item&#x5B;'url'])) { ?&gt;\n                        &lt;a href=&quot;&lt;?php echo $item&#x5B;'url'] ?&gt;&quot;&gt;&lt;?php echo $item&#x5B;'text'] ?&gt;&lt;\/a&gt;\n                    &lt;?php } else { ?&gt;\n                        &lt;?php echo $item&#x5B;'text'] ?&gt;\n                    &lt;?php } ?&gt;\n                &lt;\/li&gt;\n            &lt;?php } ?&gt;\n        &lt;?php } ?&gt;\n    &lt;\/ul&gt;\n&lt;?php } ?&gt;\n<\/pre>\n<p>\nMentre il&nbsp;codice CSS deve essere scritto da&nbsp;voi in&nbsp;base all&rsquo;aspetto grafico del vostro sito.<br \/>\nOltre al&nbsp;CSS, l&rsquo;unica cosa che vi&nbsp;resta da&nbsp;fare &egrave;&nbsp;sostituire gli identificatori degli indirizzi e&nbsp;dei relativi nomi con quelli del sito sul quale intendete utilizzare lo&nbsp;script.<br \/>\n<a name=\"par27punto6\"><\/a><b>6.&nbsp;Le&nbsp;osservazioni finali<\/b><br \/>\nCome potete facilmente notare, lo&nbsp;script del menu breadcrumbs descritto in&nbsp;questo paragrafo &egrave;&nbsp;estremamente primitivo. Lo&nbsp;&egrave;, prima di&nbsp;tutto, a&nbsp;causa del suo carattere universale: perseguendo l&rsquo;obbiettivo di&nbsp;farlo funzionare con qualsiasi tipo di&nbsp;progetto, l&rsquo;ho reso indipendente da&nbsp;tutte le&nbsp;possibili particolarit&agrave; dei numerosi CMS esistenti e&nbsp;ho&nbsp;fatto in&nbsp;modo che funzioni anche sui siti costruiti senza un&nbsp;CMS. &Egrave;&nbsp;proprio per questo che il&nbsp;menu non viene generato in&nbsp;un&nbsp;modo del tutto automatico. Allo stesso tempo, lo&nbsp;script permette allo sviluppatore di&nbsp;un&nbsp;sito di&nbsp;non inserire manualmente tanti link uguali (modificandoli ogni qualvolta una pagina cambi la&nbsp;propria posizione nella gerarchia del sito), ma&nbsp;scrivere i&nbsp;loro dati una sola volta: nello script, appunto.<br \/>\nNel prossimo paragrafo scriver&ograve; di&nbsp;un&nbsp;caso molto pi&ugrave; complesso e&nbsp;interessante: la&nbsp;creazione del menu breadcrumbs per un&nbsp;sito sviluppato con il&nbsp;WordPress. Sfruttando il&nbsp;database di&nbsp;un&nbsp;sito del genere sar&agrave; possibile creare uno script completamente autonomo in&nbsp;tutti i&nbsp;suoi aspetti. Una volta caricato sul sito, non dovr&agrave; pi&ugrave; essere toccato, nemmeno dopo l&rsquo;aggiunta delle nuove pagine al&nbsp;sito stesso.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il paragrafo dell\u2019\u201cInerario\u201d dedicato allo sviluppo di uno script universale \u2013 in PHP \u2013 del menu breadcrumbs. Lo script descritto pu\u00f2 essere utilizzato su qualsiasi tipo di sito web, anche qualora non fosse stato realizzato con un CMS, ma \u00e8 pi\u00f9 adatto ai progetti con una quantit\u00e0 limitata di pagine.<br \/>\nQuesto paragrafo \u00e8 destinato agli sviluppatori frontend e ai designer UX\/UI, ma anche a quei proprietari o amministratori dei siti che preferiscono fare tutto con le proprie mani.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":452,"menu_order":27,"comment_status":"open","ping_status":"closed","template":"inerarioart.php","meta":{"footnotes":""},"class_list":["post-4281","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/4281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/comments?post=4281"}],"version-history":[{"count":0,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/4281\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/452"}],"wp:attachment":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/media?parent=4281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}