{"id":48643,"date":"2021-11-15T13:15:40","date_gmt":"2021-11-15T12:15:40","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=48643&#038;preview=true&#038;preview_id=48643"},"modified":"2023-06-09T16:56:04","modified_gmt":"2023-06-09T15:56:04","slug":"sito-statico-hugo","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/","title":{"rendered":"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo"},"content":{"rendered":"<p>Hugo \u00e8 un generatore statico di siti (SSG o Static Site Generator) scritto in <a href=\"https:\/\/kinsta.com\/it\/blog\/miglior-linguaggio-di-programmazione\/#go\">Go<\/a> (aka Golang), un linguaggio di programmazione compilato ad alte prestazioni spesso utilizzato per sviluppare applicazioni e servizi backend.<\/p>\n<p>Oggi Hugo \u00e8 in grado di generare la maggior parte dei siti web in pochi secondi (&lt;1 ms per pagina). Questo spiega perch\u00e9 Hugo si presenta come &#8220;il framework pi\u00f9 veloce al mondo per la costruzione di siti web&#8221;.<\/p>\n<p>In questo articolo, daremo un&#8217;occhiata alla storia di Hugo, cosa lo rende cos\u00ec veloce e come potete iniziare a costruire il vostro sito statico Hugo.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Cos&#8217;\u00c8 Hugo? E Perch\u00e9 \u00c8 Popolare?<\/h2>\n<figure id=\"attachment_105526\" aria-describedby=\"caption-attachment-105526\" style=\"width: 1001px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/10\/hugo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-105526 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/10\/hugo.png\" alt=\"Homepage del sito web di Hugo.\" width=\"1001\" height=\"471\"><\/a><figcaption id=\"caption-attachment-105526\" class=\"wp-caption-text\">Homepage del sito web di Hugo.<\/figcaption><\/figure>\n<p>Steve Francia ha originariamente sviluppato il <a href=\"https:\/\/gohugo.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">generatore di siti statici Hugo<\/a> nel 2013, e Bj\u00f8rn Erik Pedersen \u00e8 subentrato come sviluppatore principale del progetto nel 2015. Hugo \u00e8 un progetto open-source, il che significa che il suo codice pu\u00f2 essere visualizzato e migliorato da chiunque.<\/p>\n<p>Come generatore di siti statici, Hugo prende i file di contenuto Markdown, li esegue attraverso template di temi e <a href=\"https:\/\/kinsta.com\/blog\/wordpress-vs-static-html\/\">genera file HTML<\/a> che potete facilmente distribuire online. E fa tutto questo in modo estremamente veloce.<\/p>\n<p>Nel 2021 ormai esistono decine, se non centinaia, di generatori statici. <a href=\"https:\/\/kinsta.com\/it\/blog\/generatori-di-siti-statici\/\">Ogni generatore di siti statici ha il suo fascino<\/a>. Jekyll \u00e8 popolare tra gli sviluppatori Ruby e anche se non \u00e8 veloce come altre opzioni, \u00e8 stato uno dei primi generatori di siti statici a vedere un&#8217;adozione diffusa. <a href=\"https:\/\/kinsta.com\/it\/blog\/gatsby-wordpress\/\">Gatsby<\/a> \u00e8 un altro popolare SSG adatto a sviluppare siti staticamente distribuibili e sono dinamici nelle funzionalit\u00e0.<\/p>\n<p>Quindi, con cos\u00ec tanti SSG l\u00e0 fuori, cosa distingue Hugo?<\/p>\n\n<h3>Hugo \u00c8 Veloce<\/h3>\n<p>In termini di prestazioni grezze, Hugo \u00e8 il miglior generatore di siti statici al mondo. Forestry ha dimostrato che, rispetto a Jekyll, Hugo \u00e8 <a href=\"https:\/\/forestry.io\/blog\/hugo-and-jekyll-compared\/\" target=\"_blank\" rel=\"noopener noreferrer\">35 volte pi\u00f9 veloce<\/a>. Allo stesso modo, Hugo pu\u00f2 rendere un sito di 10.000 pagine in 10 secondi, un compito che a Gatsby richiederebbe pi\u00f9 di mezz&#8217;ora per essere completato. Non solo Hugo \u00e8 il SSG pi\u00f9 veloce in termini di tempi di costruzione, ma \u00e8 anche veloce da installare.<\/p>\n<p>Hugo \u00e8 un eseguibile autonomo, a differenza di Jekyll, Gatsby e altri SSG che richiedono l&#8217;installazione di dipendenze con un gestore di pacchetti. Questo significa che potete scaricare e usare Hugo immediatamente senza dovervi preoccupare delle dipendenze del software.<\/p>\n<h3>Il Templating \u00c8 Pi\u00f9 Semplice con Hugo<\/h3>\n<p>Nel gergo SSG, &#8220;templating&#8221; si riferisce al processo di aggiunta di segnaposti per l&#8217;inserimento di contenuti dinamici all&#8217;interno di una pagina HTML. Per accedere al titolo di una pagina, potete utilizzare la variabile <code>{{ .Title }}<\/code>. Cos\u00ec, all&#8217;interno di un template HTML di Hugo, \u00e8 comune vedere il <code>{{ .Title }}<\/code> avvolto nei tag H1 in questo modo:<\/p>\n<pre><code class=\"language-markdown\">&lt;h1&gt;{{ .Title }}&lt;\/h1&gt;<\/code><\/pre>\n<p>Al momento della compilazione, Hugo prender\u00e0 automaticamente il titolo all&#8217;interno di un file di contenuto e lo inserir\u00e0 tra i due tag <code>&lt;h1&gt;<\/code>. Hugo ha tantissime variabili di template incorporate e potete anche scrivere funzioni personalizzate per elaborare i dati al momento della compilazione. Per i modelli, Hugo usa le librerie integrate di Go <code>html\/template<\/code> e <code>text\/template<\/code>. Questo aiuta a ridurre l&#8217;eccesso di applicazioni perch\u00e9 Hugo non ha bisogno di installare librerie di terze parti per i template.<\/p>\n<h2>Come Installare Hugo<\/h2>\n<p>Hugo \u00e8 un eseguibile compilato, il che significa che non dovrete scaricare e gestire molte dipendenze solo per iniziare. \u00c8 disponibile per macOS, Windows e Linux.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Le istruzioni di installazione qui sotto richiedono un gestore di pacchetti che scaricher\u00e0 l&#8217;eseguibile Hugo. Se preferite costruire Hugo dai suoi sorgenti, fate riferimento alla <a href=\"https:\/\/gohugo.io\/getting-started\/installing\/#source\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione ufficiale di Hugo<\/a>.<\/p>\n<\/aside>\n\n<h3>Come Installare Hugo su MacOS e Linux<\/h3>\n<p>Il metodo di installazione raccomandato per macOS e Linux richiede Homebrew, un gestore di pacchetti per l&#8217;installazione e l&#8217;aggiornamento delle applicazioni. Se non avete gi\u00e0 installato Homebrew, potete installarlo eseguendo il comando qui sotto nel <a href=\"https:\/\/kinsta.com\/it\/blog\/commandi-ssh\/\">Terminale<\/a>:<\/p>\n<pre><code class=\"language-bash\">\/bin\/bash -c \"$(curl -fsSL <a href=\"https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh\">https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh<\/a>)\"<\/code><\/pre>\n<p>Dopo che Homebrew \u00e8 stato installato, eseguite il comando qui sotto per installare Hugo:<\/p>\n<pre><code class=\"language-bash\">brew install hugo<\/code><\/pre>\n<h3>Come Installare Hugo su Windows<\/h3>\n<p>Per gli utenti Windows, Hugo pu\u00f2 essere installato utilizzando i gestori di pacchetti Chocolatey o Scoop. Poich\u00e9 le istruzioni per installare Chocolatey e Scoop sono un po&#8217; pi\u00f9 complesse di Homebrew, raccomandiamo di fare riferimento alle loro pagine di documentazione ufficiale <a href=\"https:\/\/chocolatey.org\/install\" target=\"_blank\" rel=\"noopener noreferrer\">qui<\/a> e <a href=\"https:\/\/scoop.sh\/\" target=\"_blank\" rel=\"noopener noreferrer\">qui<\/a>.<\/p>\n<p>Dopo aver installato Chocolatey o Scoop, potete installare Hugo usando uno dei seguenti comandi (a seconda del vostro gestore di pacchetti):<\/p>\n<pre><code class=\"language-bash\">choco install hugo-extended -confirm<\/code><\/pre>\n<pre><code class=\"language-bash\">scoop install hugo-extended<\/code><\/pre>\n<h3>Come Verificare Che Hugo Sia Installato Correttamente<\/h3>\n<p>Per verificare che Hugo sia stato installato correttamente, eseguite il seguente comando:<\/p>\n<pre><code class=\"language-bash\">hugo version<\/code><\/pre>\n<p>Questo comando da terminale dovrebbe fornire informazioni sulla versione attualmente installata di Hugo, come segue:<\/p>\n<pre><code class=\"language-bash\">hugo v0.85.0+extended darwin\/arm64 BuildDate=unknown<\/code><\/pre>\n<h2>Comandi e Configurazione di Hugo<\/h2>\n<p>Prima di tuffarci nella creazione di un sito statico con Hugo, familiarizziamo con i suoi vari comandi <a href=\"https:\/\/kinsta.com\/it\/blog\/wp-cli\/\">CLI<\/a> e i parametri del file di configurazione.<\/p>\n<h3>Comandi CLI di Hugo<\/h3>\n<ul>\n<li><code>hugo check<\/code> &#8211; esegue vari controlli di verifica<\/li>\n<li><code>hugo config<\/code> &#8211; visualizza la configurazione di un sito Hugo<\/li>\n<li><code>hugo convert<\/code> &#8211; converte il contenuto in diversi formati<\/li>\n<li><code>hugo deploy<\/code> &#8211; distribuisce il vostro sito a un provider di cloud<\/li>\n<li><code>hugo env<\/code> &#8211; visualizza la versione di Hugo e le informazioni sull&#8217;ambiente<\/li>\n<li><code>hugo gen<\/code> &#8211; fornisce accesso a vari generatori<\/li>\n<li><code>hugo help<\/code> &#8211; visualizza informazioni su un comando<\/li>\n<li><code>hugo import<\/code> &#8211; vi permette di importare un sito da un&#8217;altra posizione<\/li>\n<li><code>hugo list<\/code> &#8211; visualizza un elenco di vari tipi di contenuto<\/li>\n<li><code>hugo mod<\/code> &#8211; fornisce l&#8217;accesso a vari aiuti per i moduli<\/li>\n<li><code>hugo new<\/code> &#8211; vi permette di creare nuovi contenuti per il vostro sito<\/li>\n<li><code>hugo server<\/code> &#8211; avvia un server di sviluppo locale<\/li>\n<li><code>hugo version<\/code> &#8211; visualizza la versione corrente di Hugo<\/li>\n<\/ul>\n<p>La CLI di Hugo ha anche moltissimi flag per specificare opzioni aggiuntive per alcuni comandi. Per visualizzare un elenco completo dei flag di Hugo (ce ne sono molti), consigliamo di usare il comando <code>hugo help<\/code> per visualizzare un elenco di tutti i flag disponibili.<\/p>\n<h3>Il File di Configurazione di Hugo<\/h3>\n<p>Il file di configurazione di Hugo supporta tre formati: YAML, TOML e JSON. Allo stesso modo, il file di configurazione di Hugo \u00e8 <strong>config.yml<\/strong>, <strong>config.toml<\/strong>, o <strong>config.json<\/strong>, e potete trovarlo nella directory principale di un progetto Hugo.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/hugo-configuration-file.jpg\" alt=\"File di configurazione Hugo.\" width=\"1500\" height=\"677\"><figcaption class=\"wp-caption-text\">File di configurazione Hugo.<\/figcaption><\/figure>\n<p>Ecco come appare un tipico file di configurazione Hugo in formato YAML:<\/p>\n<pre><code class=\"language-markdown\">DefaultContentLanguage: en\n\ntheme:\n\n- kinsta-static-site\n\ncontentdir: content\n\nlayoutdir: layouts\n\npublishdir: public\n\npaginate: 5\n\ntitle: Kinsta Static Site\n\ndescription: \"This is a static site generated with Hugo!\"\n\npermalinks:\n\npost: :slug\/\n\npage: :slug\/\n\ntags: \"tag\/:slug\/\"\n\nauthor: \"author\/:slug\/\"<\/code><\/pre>\n<p>Se avete usato <a href=\"https:\/\/kinsta.com\/it\/blog\/software-cms\/\">WordPress o un altro CMS<\/a> prima, alcune delle opzioni di configurazione potrebbero sembrarvi familiari. Per esempio, <code>kinsta-static-site<\/code> \u00e8 il nome del tema del sito, <code>Kinsta Static Site<\/code> \u00e8 il SEO meta title, e <code>paginate<\/code> (il numero di post per pagina) \u00e8 <code>5<\/code>.<\/p>\n<p>Hugo ha dozzine di opzioni di configurazione che potete esplorare nella <a href=\"https:\/\/gohugo.io\/getting-started\/configuration\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione ufficiale di Hugo<\/a>. Se avete bisogno di fare qualsiasi cambiamento di configurazione globale mentre sviluppate un sito con Hugo, \u00e8 probabile che dobbiate modificare questo file di configurazione.<\/p>\n<h2>Come Creare un Sito con Hugo<\/h2>\n<p>Ora che abbiamo visto come installare e usare la Hugo CLI e le basi del file di configurazione di Hugo, creiamo un nuovo sito con Hugo.<\/p>\n<p>Per creare un sito con Hugo, usate il comando qui sotto (cambiate pure <strong>my-hugo-site<\/strong> con qualcos&#8217;altro, se volete):<\/p>\n<pre><code class=\"language-bash\">hugo new site my-hugo-site<\/code><\/pre>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/hugo-new-site-command.jpg\" alt=\"Cpdice per creare un nuovo sito con Hugo.\" width=\"2048\" height=\"1450\"><figcaption class=\"wp-caption-text\">Crea un nuovo sito con Hugo.<\/figcaption><\/figure>\n<p>Successivamente, andate alla cartella del sito e dovreste vedere i seguenti file e cartelle: file <strong>config.toml<\/strong>, cartella <strong>archetypes<\/strong>, cartella <strong>content<\/strong>, cartella <strong>layouts<\/strong>, cartella <strong>themes<\/strong>, cartella <strong>data<\/strong> e cartella <strong>static<\/strong>. Vediamo rapidamente in cosa consiste ognuno di questi file e cartelle.<\/p>\n<h3>Il File config.toml di Hugo<\/h3>\n<p>Come abbiamo evidenziato sopra, il file di configurazione principale di Hugo contiene le impostazioni globali per il vostro sito.<\/p>\n<h3>Cartella Archetypes di Hugo<\/h3>\n<p>La cartella <strong>archetypes<\/strong> \u00e8 dove memorizzate i modelli di contenuto formattati in Markdown. Gli archetipi sono particolarmente utili se il vostro sito ha pi\u00f9 formati di contenuto. Con gli archetipi di Hugo, potete creare un modello per ogni tipo di contenuto sul vostro sito. Questo vi permette di precompilare i file Markdown generati con tutte le impostazioni di configurazione necessarie.<\/p>\n<p>Per esempio, se avete un tipo di contenuto <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-i-podcast\/\">podcast<\/a> per visualizzare i vostri episodi podcast, potete creare un nuovo archetipo in <code>archetypes\/podcast.md<\/code> con il contenuto qui sotto:<\/p>\n<pre><code class=\"language-markdown\">---\n\ntitle: \"{{ replace .Name \"-\" \" \" | title }}\"\n\ndate: {{ .Date }}\n\ndescription: \"\"\n\nseason:\n\nepisode:\n\ndraft: true\n\n---<\/code><\/pre>\n<p>Con questo archetipo di podcast, potete poi usare il comando sottostante per creare un nuovo post:<\/p>\n<pre><code class=\"language-bash\">hugo new podcast\/s1e6_interview-with-kinsta-ceo.md<\/code><\/pre>\n<p>Ora, se aprite il post appena creato, dovreste vedere questo:<\/p>\n<pre><code class=\"language-markdown\">---\n\ntitle: \"Interview with Kinsta CEO\"\n\ndate: 2021-05-20T13:00:00+09:00\n\ndescription: \"\"\n\nSeason: 1\n\nepisode: 6\n\ndraft: true\n\n---<\/code><\/pre>\n<p>Senza gli archetipi, dovreste specificare manualmente i parametri di facciata per ogni nuovo post che create. Mentre gli archetipi possono sembrare complessi e inutili all&#8217;inizio, possono farvi risparmiare molto tempo a lungo termine.<\/p>\n<h3>Cartella Content di Hugo<\/h3>\n<p>La cartella <strong>content<\/strong> \u00e8 dove va il contenuto effettivo del vostro post. Hugo supporta entrambi i <a href=\"https:\/\/kinsta.com\/it\/blog\/editor-di-markdown\/\">formati Markdown e HTML<\/a>, con Markdown che \u00e8 l&#8217;opzione pi\u00f9 popolare per la sua facilit\u00e0 d&#8217;uso. Oltre a essere lo spazio di archiviazione generale per i post, potete usare la cartella dei <strong>content<\/strong> per organizzare ulteriormente il contenuto dei post.<\/p>\n<p>Hugo tratta ogni directory di primo livello nella cartella <strong>content<\/strong> come una sezione di contenuto. Le sezioni di contenuto in Hugo sono simili ai <a href=\"https:\/\/kinsta.com\/it\/blog\/custom-post-type-wordpress\/\">tipi di post personalizzati in WordPress<\/a>. Per esempio, se il vostro sito contiene post, pagine e podcast, la vostra cartella content avr\u00e0 le directory <strong>posts<\/strong>, <strong>pages<\/strong> e <strong>podcasts<\/strong> dove vivono i file di contenuto per questi diversi tipi di post.<\/p>\n<h3>La Cartella Layouts di Hugo<\/h3>\n<p>La cartella <strong>layouts<\/strong> contiene i file HTML che definiscono la struttura del vostro sito. In alcuni casi, potreste vedere un sito Hugo senza una cartella <strong>layouts<\/strong> perch\u00e9 non deve trovarsi necessariamente nella cartella principale del progetto e pu\u00f2 invece risiedere in una cartella del tema.<\/p>\n<p>In modo simile ai temi di WordPress che usano PHP per i template, i template di Hugo consistono in HTML di base con ulteriori template dinamici alimentati dalle librerie integrate di Golang <code>html\/template<\/code> e <code>text\/template<\/code>. I vari file template HTML necessari per generare il markup HTML del vostro sito sono nella cartella <strong>layouts<\/strong>.<\/p>\n<h3>Cartella Themes di Hugo<\/h3>\n<p>Per i siti che preferiscono un modo pi\u00f9 autonomo di memorizzare i file dei template e le risorse, Hugo supporta una cartella dei <strong>themes<\/strong>. I temi di Hugo sono simili ai temi di <a href=\"https:\/\/kinsta.com\/it\/blog\/come-funzionano-i-temi-di-wordpress\/\">WordPress<\/a> perch\u00e9 sono memorizzati in una cartella temi e contengono tutti i modelli necessari per il funzionamento di un tema.<\/p>\n<p>Mentre alcuni utenti di Hugo preferiscono mantenere i file relativi ai temi nella directory principale del progetto, memorizzare questi file nella cartella dei <strong>themes<\/strong> permette una gestione e una condivisione pi\u00f9 facile.<\/p>\n<h3>Cartella Data Hugo<\/h3>\n<p>La cartella <strong>data<\/strong> di Hugo \u00e8 dove potete memorizzare dati supplementari (in formato JSON, YAML o TOML) che sono necessari per generare le pagine del vostro sito. I file di dati sono utili per le serie di dati pi\u00f9 grandi che possono essere ingombranti da memorizzare direttamente in un file di contenuto o modello.<\/p>\n<p>Per esempio, se volessi creare un elenco di tassi di inflazione del dollaro dal 1960 al 2020, ci vorrebbero circa 80 righe per rappresentare i dati (una riga per ogni anno). Invece di mettere questi dati direttamente in un file di contenuto o modello, potete crearli nella cartella <strong>data<\/strong> e popolarli con le informazioni necessarie.<\/p>\n<h3>Cartella Static di Hugo<\/h3>\n<p>La cartella <strong>static<\/strong> di Hugo \u00e8 dove si memorizzano le risorse statiche che non richiedono alcuna elaborazione aggiuntiva. La cartella <strong>static<\/strong> \u00e8 tipicamente dove gli utenti Hugo memorizzano immagini, <a href=\"https:\/\/kinsta.com\/it\/blog\/font-web-safe\/\">font<\/a>, file di verifica DNS e altro. Quando un sito Hugo viene generato e salvato in una cartella per una facile distribuzione, tutti i file nella cartella <strong>static<\/strong> vengono copiati cos\u00ec come sono.<\/p>\n<p>Se vi state chiedendo perch\u00e9 non abbiamo menzionato i file JavaScript o CSS, \u00e8 perch\u00e9 sono spesso elaborati dinamicamente tramite pipeline durante lo sviluppo del sito. In Hugo, i file JavaScript e CSS sono comunemente memorizzati all&#8217;interno della cartella <strong>themes<\/strong> perch\u00e9 richiedono un&#8217;elaborazione aggiuntiva.<\/p>\n<h2>Come Aggiungere un Tema a un Sito Hugo<\/h2>\n<p>Scaricare e installare un tema preconfezionato \u00e8 un ottimo modo per iniziare a usare Hugo. I temi di Hugo sono di tutte le forme e dimensioni e molti di essi sono disponibili gratuitamente sul repository ufficiale dei temi di Hugo. Andiamo avanti e installiamo il popolare <a href=\"https:\/\/themes.gohugo.io\/themes\/hyde\/\" target=\"_blank\" rel=\"noopener noreferrer\">tema Hyde<\/a> sul nostro sito Hugo.<\/p>\n<p>Per prima cosa, navigate nella cartella del tema del vostro progetto nel Terminale:<\/p>\n<pre><code class=\"language-bash\">cd &lt;hugo-project-directory&gt;\/themes\/<\/code><\/pre>\n<p>Poi usate Git per clonare il tema Hyde nella cartella dei <strong>themes<\/strong> del vostro progetto.<\/p>\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/spf13\/hyde.git<\/code><\/pre>\n<p>Poi, aggiungete la seguente linea al vostro file <strong>config.toml<\/strong> per attivare il tema Hyde:<\/p>\n<pre><code class=\"language-markdown\">theme = \"hyde\"<\/code><\/pre>\n<p>A questo punto, il tema Hyde \u00e8 installato e configurato. Il prossimo passo \u00e8 quello di avviare il webserver di sviluppo integrato di Hugo per visualizzare il sito nel vostro browser web.<\/p>\n<h2>Come Visualizzare un Sito Hugo in Anteprima<\/h2>\n<p>Hugo include un webserver integrato per lo sviluppo, il che significa che non avete bisogno di installare un <a href=\"https:\/\/kinsta.com\/it\/blog\/nginx-verso-apache\/\">webserver di terze parti come Nginx o Apache<\/a> solo per <a href=\"https:\/\/kinsta.com\/it\/blog\/installare-wordpress-in-locale\/\">visualizzare il vostro sito localmente<\/a>.<\/p>\n<p>Per avviare il webserver di Hugo, eseguite il comando qui sotto nella directory principale del vostro progetto:<\/p>\n<pre><code class=\"language-bash\">hugo server -D<\/code><\/pre>\n<p>Hugo costruir\u00e0 le pagine del vostro sito e le render\u00e0 disponibili su <code>http:\/\/localhost:1313\/<\/code>:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0.jpg\" alt=\"Il server di sviluppo locale di Hugo\" width=\"2048\" height=\"1450\"><figcaption class=\"wp-caption-text\">Hugo local development server.<\/figcaption><\/figure>\n<p>Se visitate <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-un-url\/\">l&#8217;URL<\/a> nel vostro browser web, dovreste vedere il vostro sito Hugo usare il tema Hyde:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-1.jpg\" alt=\"La schermata con il tema Hyde di Hugo\" width=\"2048\" height=\"1088\"><figcaption class=\"wp-caption-text\">Il sito Hugo viene visualizzato con il tema Hyde.<\/figcaption><\/figure>\n<p>Per impostazione predefinita, il server di sviluppo locale di Hugo osserver\u00e0 i cambiamenti e ricostruir\u00e0 il sito automaticamente. Poich\u00e9 la velocit\u00e0 di costruzione di Hugo \u00e8 davvero alta, potete vedere gli aggiornamenti al vostro sito quasi in tempo reale, il che \u00e8 raro nel mondo dei generatori di siti statici. Per dimostrarlo, creiamo il nostro primo post in Hugo.<\/p>\n<h2>Come Aggiungere Contenuti a un Sito Hugo<\/h2>\n<p>Aggiungere contenuti a un sito Hugo \u00e8 molto diverso dal farlo con un CMS completo come WordPress o Ghost. Con Hugo, non esiste un livello CMS integrato per <a href=\"https:\/\/kinsta.com\/it\/argomenti\/strategia-di-contenuti\/\">gestire i vostri contenuti<\/a>. Ci si aspetta invece che siate voi a gestire e organizziare le cose come meglio credete.<\/p>\n<p>In altre parole, non c&#8217;\u00e8 un modo esplicitamente &#8220;corretto&#8221; di gestire i contenuti in Hugo. Condivideremo un metodo per aggiungere e gestire i contenuti in questa sezione, ma cambiate pure le cose man mano che prendete confidenza con Hugo.<\/p>\n<h3>Sezioni di Contenuto in Hugo<\/h3>\n<p>In Hugo, il primo strumento di organizzazione dei contenuti che avete a disposizione \u00e8 la sezione <strong>contenut<\/strong>. Una sezione di contenuto in Hugo \u00e8 simile a un <a href=\"https:\/\/kinsta.com\/it\/blog\/custom-post-type-wordpress\/\">post type in WordPress<\/a>: non solo potete usarla come filtro di contenuto, ma anche come identificatore quando create temi personalizzati.<\/p>\n<p>Per esempio, se avete una cartella <strong>blog<\/strong>, potete usarla per memorizzare tutti i vostri post del blog e mostrare un modello di pagina specifico che si applica solo ai post del blog.<\/p>\n<h3>Come Aggiungere Post in Hugo<\/h3>\n<p>Detto questo, creiamo una sezione di contenuto per i post del blog e aggiungiamo alcuni pezzi di contenuto. Create una nuova cartella chiamata <strong>posts<\/strong> nella cartella <strong>content<\/strong> del vostro progetto; questa \u00e8 la sezione content.<\/p>\n<p>Creiamo un altro livello organizzativo all&#8217;interno della cartella <strong>posts<\/strong> creando una cartella <strong>2021<\/strong>. A questo punto, la vostra cartella <strong>content<\/strong> dovrebbe assomigliare a questa:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-2.jpg\" alt=\"Schermata con la directory di contenuti di Hugo\" width=\"2048\" height=\"898\"><figcaption class=\"wp-caption-text\">Content directory di Hugo.<\/figcaption><\/figure>\n<p>Ora, creiamo il nostro primo post. Come abbiamo discusso prima, Hugo supporta sia i file Markdown che quelli HTML per i contenuti. In generale, \u00e8 meglio attenersi ai file Markdown perch\u00e9 sono pi\u00f9 facili da scrivere, formattare e leggere.<\/p>\n<p>Nella cartella <strong>content\/posts\/2021<\/strong>, create un nuovo file che finisce in <code>.md<\/code> (l&#8217;estensione del file Markdown). Potete rinominare il file come volete, ma la sintassi raccomandata per rinominare un file di contenuto Hugo \u00e8 <strong>YYYY-MM-DD-a-sample-post.md.<\/strong><\/p>\n<p>Oltre a creare manualmente un file di contenuto, potete anche usare la Hugo CLI per creare un nuovo post con il comando seguente (assicuratevi di eseguire il comando dalla directory del vostro progetto):<\/p>\n<pre><code class=\"language-bash\">hugo new posts\/2021\/2021-08-30-a-sample-post.md<\/code><\/pre>\n<p>Notate come la cartella <strong>content<\/strong> manca dal percorso qui sopra. Questo perch\u00e9 Hugo presume che tutti i file di contenuto vadano nella cartella <strong>content<\/strong> per impostazione predefinita.<\/p>\n<p>Se aprite il file di contenuto appena creato, dovreste vedere alcune righe di metadati in cima al documento che assomigliano a questo:<\/p>\n<pre><code class=\"language-markdown\">---\n\ntitle: \"2021 08 30 a Sample Post\"\n\ndate: 2021-08-30T13:44:28+09:00\n\ndraft: true\n\n---<\/code><\/pre>\n<p>Questi metadati, che sono formattati in YAML, sono chiamati &#8220;front matter&#8221;. Il front matter generato automaticamente \u00e8 un vantaggio significativo dell&#8217;utilizzo della Hugo CLI. Il front matter \u00e8 dove i dati unici per un post (nome del post, dati, stato della bozza, tag, categorie, ecc.) sono memorizzati. Il formato predefinito per il front matter pu\u00f2 essere configurato per ogni sezione utilizzando <a href=\"https:\/\/gohugo.io\/content-management\/archetypes\/\" target=\"_blank\" rel=\"noopener noreferrer\">gli archetipi<\/a>.<\/p>\n<p>Ora aggiungiamo del testo al post. Quando scrivete un post, assicuratevi sempre che il vostro contenuto sia sotto il front matter, in questo modo:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-3.jpg\" alt=\"Blog post in Hugo.\" width=\"2048\" height=\"1332\"><figcaption class=\"wp-caption-text\">Blog post in Hugo.<\/figcaption><\/figure>\n<p>Una volta salvato il file dei contenuti, dovreste vedere Hugo ricostruire il vostro sito nel terminale. Nello screenshot qui sotto, potete vedere che Hugo ha ricostruito l&#8217;intero sito in 22 ms!<\/p>\n<figure style=\"width: 1692px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-4.jpg\" alt=\"Terminal che mostra i dati di ricostruzione del sito Hugo.\" width=\"1692\" height=\"914\"><figcaption class=\"wp-caption-text\">Ricostruzione del sito Hugo.<\/figcaption><\/figure>\n<p>Se visitate il vostro sito Hugo nel browser web, dovreste vedere il nuovo post.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/hugo-site-with-post.jpg\" alt=\"Un post demo sul sito Hugo\" width=\"2048\" height=\"1118\"><figcaption class=\"wp-caption-text\">Sito Hugo con un post.<\/figcaption><\/figure>\n<h3>Come Aggiungere una Pagina in Hugo<\/h3>\n<p>Ora che abbiamo aggiunto un post al nostro sito Hugo, aggiungiamo anche una pagina. La maggior parte dei sistemi di gestione dei contenuti, incluso WordPress, distingue tra post e pagine. Tipicamente, un post \u00e8 un contenuto datato, mentre una pagina consiste in un contenuto sempreverde o statico.<\/p>\n<p>Per creare una pagina, abbiamo prima bisogno di una sezione di contenuto della <strong>pagina<\/strong>. Per farlo, create una cartella chiamata <strong>pages<\/strong> nella cartella <strong>content<\/strong> di Hugo. In seguito, usate il comando sottostante per aggiungere una nuova pagina &#8220;About&#8221; al vostro sito:<\/p>\n<pre><code class=\"language-bash\">hugo new pages\/about.md<\/code><\/pre>\n<p>Notate come la convenzione di denominazione delle pagine differisce dai post. A differenza dei post, le pagine non sono legate a una data specifica, quindi non \u00e8 necessario includere la data di creazione nel nome del file.<\/p>\n<p>Ora aggiungiamo del testo alla pagina &#8220;About&#8221;:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-5.jpg\" alt=\"Schermata del terminal con il codice di una pagina About per Hugo.\" width=\"2048\" height=\"1104\"><figcaption class=\"wp-caption-text\">Pagina About in Hugo.<\/figcaption><\/figure>\n<p>A questo punto, dovreste vedere la pagina About nel vostro browser web:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-6.jpg\" alt=\"Come appare la pagina About nel browser web.\" width=\"2048\" height=\"1087\"><figcaption class=\"wp-caption-text\">Pagina About nel browser web.<\/figcaption><\/figure>\n<p>Ora che abbiamo due sezioni di contenuto &#8211; post e pagine &#8211; vediamo come applicare alcune personalizzazioni al sito, come modificare il titolo e la descrizione, aggiungere la pagina About al menu della barra laterale, cambiare il formato dei permalink e rimuovere le pagine dal feed dei post.<\/p>\n<h3>Come Cambiare il Titolo e la Descrizione del Sito<\/h3>\n<p>Il metodo esatto per cambiare il titolo e la descrizione del sito dipende dalla configurazione del vostro sito e\/o dal tema attivo. Nel caso del tema Hyde, il titolo e la descrizione del sito possono essere cambiati nel file di configurazione Hugo <strong>(config.toml<\/strong>).<\/p>\n<p>Lo sappiamo grazie al seguente codice del tema che visualizza la barra laterale:<\/p>\n<pre><code class=\"language-markdown\">&lt;aside class=\"sidebar\"&gt;\n\n&lt;div class=\"container sidebar-sticky\"&gt;\n\n&lt;div class=\"sidebar-about\"&gt;\n\n&lt;a href=\"{{ .Site.BaseURL }}\"&gt;&lt;h1&gt;{{ .Site.Title }}&lt;\/h1&gt;&lt;\/a&gt;\n\n&lt;p class=\"lead\"&gt;\n\n{{ with .Site.Params.description }} {{.}} {{ else }}An elegant open source and mobile first theme for &lt;a href=\"http:\/\/hugo.spf13.com\"&gt;hugo&lt;\/a&gt; made by &lt;a href=\"http:\/\/twitter.com\/mdo\"&gt;@mdo&lt;\/a&gt;. Originally made for Jekyll.{{end}}\n\n&lt;\/p&gt;\n\n&lt;\/div&gt;\n\n&lt;nav&gt;\n\n&lt;ul class=\"sidebar-nav\"&gt;\n\n&lt;li&gt;&lt;a href=\"{{ .Site.BaseURL }}\"&gt;Home&lt;\/a&gt; &lt;\/li&gt;\n\n{{ range .Site.Menus.main -}}\n\n&lt;li&gt;&lt;a href=\"{{.URL}}\"&gt; {{ .Name }} &lt;\/a&gt;&lt;\/li&gt;\n\n{{- end }}\n\n&lt;\/ul&gt;\n\n&lt;\/nav&gt;\n\n&lt;p&gt;{{ with .Site.Params.copyright }}{{.}}{{ else }}&copy; {{ now.Format \"2006\"}}. All rights reserved. {{end}}&lt;\/p&gt;\n\n&lt;\/div&gt;\n\n&lt;\/aside&gt;<\/code><\/pre>\n<p>Le due parti su cui concentrarsi sono:<\/p>\n<pre><code class=\"language-markdown\">{{ .Site.Title }}<\/code><\/pre>\n<p>e&#8230;<\/p>\n<pre><code class=\"language-markdown\">{{ with .Site.Params.description }} {{.}} {{ else }}An elegant open source and mobile first theme for &lt;a href=\"http:\/\/hugo.spf13.com\"&gt;hugo&lt;\/a&gt; made by &lt;a href=\"http:\/\/twitter.com\/mdo\"&gt;@mdo&lt;\/a&gt;. Originally made for Jekyll.{{end}}<\/code><\/pre>\n<p>Gli handlebars <code>{{ }}<\/code> sono parte del motore di template di Hugo e permettono di generare dinamicamente i dati nelle pagine renderizzate. Come esempio, <code>{{ .Site.Title }}<\/code> istruisce Hugo a controllare il file <strong>config.toml<\/strong> e a recuperare il valore mappato alla chiave <strong>Title<\/strong>.<\/p>\n<p>Poich\u00e9 la configurazione predefinita di Hugo usa <strong>My New Hugo Site<\/strong> come titolo del sito, questo \u00e8 ci\u00f2 che la barra laterale mostra. Se cambiamo il titolo del sito da <strong>config.toml<\/strong> scegliendone un altro, il cambiamento si rifletter\u00e0 anche sul frontend.<\/p>\n<p>Andiamo avanti e cambiamo il parametro del titolo nel <strong>config.toml<\/strong> da <strong>My New Hugo Site<\/strong> a <strong>Kinsta&#8217;s Hugo Site<\/strong>.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/kinstas-hugo-site-title.jpg\" alt=\"Cambiare il titolo del sito in Hugo.\" width=\"2048\" height=\"1088\"><figcaption class=\"wp-caption-text\">Cambiare il titolo del sito in Hugo.<\/figcaption><\/figure>\n<p>Passando alla descrizione del sito, potete vedere che il motore di template di Hugo supporta la logica condizionale. Tradotto in inglese semplice, il codice qui sotto indica a Hugo di controllare se un valore <strong>Params<\/strong> \u00e8 assegnato alla chiave <strong>description<\/strong> nel file <strong>config.toml<\/strong>. In caso contrario, ecco una stringa predefinita da usare al suo posto.<\/p>\n<pre><code class=\"language-markdown\">{{ with .Site.Params.description }} {{.}} {{ else }} An elegant open source and mobile first theme for &lt;a href=\"http:\/\/hugo.spf13.com\"&gt;hugo&lt;\/a&gt; made by &lt;a href=\"http:\/\/twitter.com\/mdo\"&gt;@mdo&lt;\/a&gt;. Originally made for Jekyll.{{end}}<\/code><\/pre>\n<p>Dato che non abbiamo una descrizione configurata nel file <strong>config.toml<\/strong>, Hugo visualizza di default &#8220;An elegant open source and mobile-first theme for Hugo made by @mdo. Originally made for Jekyll&#8221;.<\/p>\n<p>Ora aggiorniamo il nostro file <strong>config.toml<\/strong> da:<\/p>\n<pre><code class=\"language-markdown\">baseURL = \"http:\/\/example.org\/\"\n\nlanguageCode = \"en-us\"\n\ntitle = \"Kinsta's Hugo Site\"\n\ntheme = \"hyde\"<\/code><\/pre>\n<p>A:<\/p>\n<pre><code class=\"language-markdown\">baseURL = \"http:\/\/example.org\/\"\n\nlanguageCode = \"en-us\"\n\ntitle = \"Kinsta's Hugo Site\"\n\ntheme = \"hyde\"\n\n[params]\n\ndescription = \"Kinsta is a premium managed WordPress hosting company.\"<\/code><\/pre>\n<p>Come previsto, i cambiamenti sono ora visibili anche sul frontend:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-7.jpg\" alt=\"Cambia la descrizione del sito Hugo.\" width=\"2048\" height=\"1086\"><figcaption class=\"wp-caption-text\">Cambia la descrizione del sito Hugo.<\/figcaption><\/figure>\n<h3>Come Rimuovere le Pagine dal Feed dei Post<\/h3>\n<p>Sulla maggior parte dei blog, \u00e8 comune che il post feed sulla homepage mostri solo i post. Per impostazione predefinita, il tema Hyde include tutti i file di contenuto nel post feed. Per cambiare questo comportamento, dovrete modificare la funzione <code>range<\/code> nel template <strong>index.html<\/strong>, che genera la home page.<\/p>\n<p>La funzione <code>range<\/code> di Hugo itera su un insieme definito di elementi e poi fa <em>qualcosa<\/em> con i dati. Per impostazione predefinita, il template <strong>index.html<\/strong> del tema Hyde itera su <strong>.Site.RegularPages<\/strong> e filtra i dati come il permalink, il titolo del post e il riassunto del post prima di rendere l&#8217;HTML.<\/p>\n<p>Poich\u00e9 <code>.Site.RegularPages<\/code> include tutte le pagine regolari su Hugo, compresi sia i post che le pagine, viene visualizzata la pagina &#8220;About&#8221;. Cambiando gli elementi di <code>range<\/code> in <code>.Site.RegularPages \"Section\" \"posts\"<\/code>, possiamo istruire Hugo a filtrare solo le pagine regolari nella sezione dei <strong>post<\/strong>, i file di contenuto nella cartella <strong>posts<\/strong> che abbiamo creato in precedenza.<\/p>\n<p>Facciamo questa modifica partendo da questo template:<\/p>\n<pre><code class=\"language-markdown\">{{ define \"main\" -}}\n\n&lt;div class=\"posts\"&gt;\n\n{{- range .Site.RegularPages -}}\n\n&lt;article class=\"post\"&gt;\n\n&lt;h1 class=\"post-title\"&gt;\n\n&lt;a href=\"{{ .Permalink }}\"&gt;{{ .Title }}&lt;\/a&gt;\n\n&lt;\/h1&gt;\n\n&lt;time datetime=\"{{ .Date.Format \"2006-01-02T15:04:05Z0700\" }}\" class=\"post-date\"&gt;{{ .Date.Format \"Mon, Jan 2, 2006\" }}&lt;\/time&gt;\n\n{{ .Summary }}\n\n{{ if .Truncated }}\n\n&lt;div class=\"read-more-link\"&gt;\n\n&lt;a href=\"{{ .RelPermalink }}\"&gt;Read More\u2026&lt;\/a&gt;\n\n&lt;\/div&gt;\n\n{{ end }}\n\n&lt;\/article&gt;\n\n{{- end }}\n\n&lt;\/div&gt;\n\n{{- end }}<\/code><\/pre>\n<p>\u2026per arrivare a questo:<\/p>\n<pre><code class=\"language-markdown\">{{ define \"main\" -}}\n\n&lt;div class=\"posts\"&gt;\n\n{{- range where .Site.RegularPages \"Section\" \"posts\" -}}\n\n&lt;article class=\"post\"&gt;\n\n&lt;h1 class=\"post-title\"&gt;\n\n&lt;a href=\"{{ .Permalink }}\"&gt;{{ .Title }}&lt;\/a&gt;\n\n&lt;\/h1&gt;\n\n&lt;time datetime=\"{{ .Date.Format \"2006-01-02T15:04:05Z0700\" }}\" class=\"post-date\"&gt;{{ .Date.Format \"Mon, Jan 2, 2006\" }}&lt;\/time&gt;\n\n{{ .Summary }}\n\n{{ if .Truncated }}\n\n&lt;div class=\"read-more-link\"&gt;\n\n&lt;a href=\"{{ .RelPermalink }}\"&gt;Read More\u2026&lt;\/a&gt;\n\n&lt;\/div&gt;\n\n{{ end }}\n\n&lt;\/article&gt;\n\n{{- end }}\n\n&lt;\/div&gt;\n\n{{- end }}<\/code><\/pre>\n<p>Dopo aver fatto questa modifica, la pagina iniziale visualizzer\u00e0 solo i post, cos\u00ec:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/CleanShot-2021-09-21-at-10.45.16@2x.jpg\" alt=\"Visualizza i post solo sulla home page.\" width=\"2048\" height=\"1090\"><figcaption class=\"wp-caption-text\">Visualizza i post solo sulla home page.<\/figcaption><\/figure>\n<h3>Come Usare i Partial in Hugo<\/h3>\n<p>Una delle caratteristiche di template pi\u00f9 potenti di Hugo sono i partial, template HTML incorporati in un altro template HTML. I partial permettono di riutilizzare il codice in diversi file di template senza gestire il codice in ogni file.<\/p>\n<p>Per esempio, \u00e8 comune vedere diverse sezioni di pagina (intestazione, footer, ecc.) nei loro file partial separati, che sono poi chiamati all&#8217;interno del file template <strong>baseof.html<\/strong> di un tema.<\/p>\n<p>All&#8217;interno del file <strong>baseof.html<\/strong> del tema Ananke, potete vedere un esempio di un partial alla riga 18 &#8211; <code>{{ partial \"site-style.html\" . }}<\/code>.<\/p>\n<p>In questo caso, <code>{{ partial \"site-style.html\" . }}<\/code> istruisce Hugo a sostituire il contenuto della riga 18 con il <strong>site-style.html<\/strong> nella cartella <strong>\/layouts\/partials<\/strong>. Se navighiamo verso <strong>\/partials\/site-style.html<\/strong>, vediamo il <a href=\"https:\/\/github.com\/theNewDynamic\/gohugo-theme-ananke\/blob\/master\/layouts\/partials\/site-style.html\" target=\"_blank\" rel=\"noopener noreferrer\">seguente codice<\/a>:<\/p>\n<pre><code class=\"language-markdown\">{{ with partialCached \"func\/style\/GetMainCSS\" \"style\/GetMainCSS\" }}\n\n&lt;link rel=\"stylesheet\" href=\"{{ .RelPermalink }}\" &gt;\n\n{{ end }}\n\n{{ range site.Params.custom_css }}\n\n{{ with partialCached \"func\/style\/GetResource\" . . }}{{ else }}\n\n&lt;link rel=\"stylesheet\" href=\"{{ relURL (.) }}\"&gt;\n\n{{ end }}\n\n{{ end }}<\/code><\/pre>\n<p>Scaricando questo codice in un file separato, il file modello <strong>baseof.html<\/strong> pu\u00f2 rimanere organizzato e facile da leggere. Mentre i partial non sono necessari, specialmente per progetti di base, sono utili per progetti pi\u00f9 grandi con funzionalit\u00e0 pi\u00f9 complesse.<\/p>\n<h3>Come Usare gli Shortcode in Hugo<\/h3>\n<p>Gli shortcode di Hugo sono simili ai partial in quanto permettono il riutilizzo del codice in molte pagine. Gli shortcode sono file HTML che risiedono nella cartella <strong>\/layouts\/shortcodes<\/strong>. La differenza principale \u00e8 che i partial si applicano ai template HTML, mentre gli shortcode si applicano alle pagine di contenuto Markdown.<\/p>\n<p>In Hugo, gli <a href=\"https:\/\/kinsta.com\/it\/blog\/shortcode-wordpress\/\">shortcodes<\/a> vi permettono di sviluppare moduli di funzionalit\u00e0 che potete usare nelle pagine del vostro sito senza gestire i cambiamenti di codice per ogni pagina.<\/p>\n<p>Se gestite un blog, \u00e8 probabile che dobbiate passare attraverso il contenuto del corpo dei vostri post per aggiornare i riferimenti all&#8217;anno corrente. A seconda di quanti post avete sul vostro sito, questo compito pu\u00f2 richiedere molto tempo!<\/p>\n<p>Usando uno shortcode Hugo nei vostri file di contenuto, non dovrete pi\u00f9 preoccuparvi di aggiornare i riferimenti all&#8217;anno!<\/p>\n<p>Iniziamo creando uno shortcode in <strong>\/layouts\/shortcodes\/current_year.html<\/strong> con il contenuto seguente:<\/p>\n<pre><code class=\"language-markdown\">{{ now.Format \"2006\" }}<\/code><\/pre>\n<p>Gli shortcode possono essere incorporati nei post con questa sintassi: <code>{{&lt; shortcode_name &gt;}}<\/code>. Nel nostro caso, possiamo chiamare lo shortcode <code>current_year.html<\/code> con <code>{{&lt; shortcode_name &gt;}}<\/code> in questo modo:<\/p>\n<pre><code class=\"language-markdown\">---\n\ntitle: \"2021 08 30 a Sample Post\"\n\ndate: 2021-08-30T13:44:28+09:00\n\ndraft: true\n\n---\n\nThis post was created in the year {{&lt; current_year &gt;}}.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur finibus, velit sit amet vulputate scelerisque, massa turpis fringilla nulla, commodo dapibus urna arcu at nunc. Mauris ultrices convallis ipsum eget facilisis. Curabitur ut rutrum sem. Praesent id nibh non enim mollis porta. Nam mollis, quam et vehicula tristique, lorem ante laoreet orci, sit amet congue tortor nibh sit amet leo. Curabitur lobortis neque tempor, vestibulum lacus nec, condimentum arcu. Nulla fringilla leo sit amet ipsum auctor sagittis. Vivamus aliquam iaculis posuere. Pellentesque malesuada neque sit amet consectetur fringilla. Curabitur felis tellus, mattis in dui vel, vestibulum tincidunt metus. Mauris eget elit dui. Etiam risus nulla, ultricies vitae molestie quis, placerat in magna. Proin interdum, orci ac auctor ullamcorper, tellus ex porta tortor, suscipit luctus libero odio quis arcu.\n\nPhasellus dapibus pellentesque ex eget pulvinar. Proin vitae elit risus. Sed justo nulla, pellentesque eu erat eu, luctus bibendum magna. Curabitur at mi id augue egestas condimentum sed quis lectus. Aenean fringilla nisl sed tincidunt tristique. Cras scelerisque laoreet sapien a faucibus. Vivamus a vehicula arcu. Duis rutrum, massa eu tincidunt eleifend, est nulla faucibus nisl, sit amet consectetur neque velit at velit. Integer fermentum augue ut orci iaculis aliquet. Ut in gravida magna.<\/code><\/pre>\n<p>Se visualizzate il post nel <a href=\"https:\/\/kinsta.com\/it\/mercato-globale-dei-browser\/\">browser web<\/a>, dovreste vedere l&#8217;anno corrente nella prima riga del post, in questo modo:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-8.jpg\" alt=\"Usare uno shortcode Hugo per generare automaticamente l'anno corrente.\" width=\"2048\" height=\"1087\"><figcaption class=\"wp-caption-text\">Usare uno shortcode Hugo per generare automaticamente l&#8217;anno corrente.<\/figcaption><\/figure>\n<h3>Come Aggiungere Immagini a un Post in Hugo<\/h3>\n<p>A differenza di WordPress e di altri sistemi di gestione dei contenuti completi, Hugo non include un sistema drag-and-drop per la gestione delle immagini. Quindi, la progettazione di un sistema di gestione delle immagini viene delegata all&#8217;utente finale.<\/p>\n<p>Anche se Hugo non ha un modo standardizzato di <a href=\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-le-immagini-per-web-e-prestazioni\/\">gestire le immagini<\/a>, un metodo popolare si basa sulla memorizzazione delle immagini nella cartella <strong>\/static<\/strong> e sul loro riferimento nei post e nelle pagine utilizzando uno shortcode. Vediamo come potete organizzare le immagini di base in Hugo.<\/p>\n<p>La prima cosa che dobbiamo fare \u00e8 creare una struttura organizzativa per la nostra libreria di immagini. Anche se questo sembra complesso, tutto ci\u00f2 che \u00e8 richiesto \u00e8 la creazione di alcune directory aggiuntive all&#8217;interno della cartella <strong>\/static<\/strong>.<\/p>\n<p>Iniziamo creando una cartella <strong>uploads<\/strong> in <strong>\/static<\/strong>. All&#8217;interno della cartella <strong>uploads<\/strong>, create una cartella chiamata <strong>2021<\/strong> per contenere tutte le immagini caricate nel 2021.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-9.jpg\" alt=\"Gestione delle immagini in Hugo.\" width=\"2048\" height=\"924\"><figcaption class=\"wp-caption-text\">Gestione delle immagini in Hugo.<\/figcaption><\/figure>\n<p>Successivamente, aggiungiamo due immagini <strong>(blue1.jpg<\/strong> e <strong>blue2.jpg<\/strong>) nella cartella <strong>2021<\/strong>.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-10.jpg\" alt=\"Aggiunta di immagini alla cartella \"2021\".\" width=\"2048\" height=\"924\"><figcaption class=\"wp-caption-text\">Aggiunta di immagini alla cartella &#8220;2021&#8221;.<\/figcaption><\/figure>\n<p>In HTML, le immagini vengono visualizzate usando il tag <code>&lt;img&gt;<\/code>. Per esempio, per visualizzare <strong>blue1.jpg<\/strong>, possiamo usare il seguente HTML:<\/p>\n<pre><code class=\"language-markdown\">&lt;img src=\"\/uploads\/2021\/blue1.jpg\" alt=\"Blue is the warmest color!\"&gt;<\/code><\/pre>\n<p>Anche se \u00e8 possibile aggiungere questo HTML direttamente al file di contenuto Markdown, \u00e8 meglio creare uno shortcode che potete utilizzare per visualizzare qualsiasi immagine dalla cartella uploads. In questo modo, se avete bisogno di aggiornare il tag <code>img<\/code>, potete modificare il template di shortcode senza modificare ogni istanza del tag <code>img<\/code>.<\/p>\n<p>Per creare il template di shortcode, create un nuovo file in <strong>\/layouts\/shortcodes\/img.html<\/strong> con il contenuto seguente:<\/p>\n<pre><code class=\"language-markdown\">&lt;img src=\"\/uploads\/{{ .Get \"src\" }}\" alt=\"{{ .Get \"alt\" }}<\/code><\/pre>\n<p>Poi aggiungete lo shortcode qui sotto a un post del blog:<\/p>\n<pre><code class=\"language-markdown\">{{&lt; img src=\"2021\/blue1.jpg\" alt=\"Blue is also the coolest color!\"&gt;}<\/code><\/pre>\n<p>Nel template dello shortcode, <code>{{ .Get \"src\" }}<\/code> e <code>{{ .Get \"alt\" }}<\/code> istruiscono Hugo a recuperare il contenuto dei parametri <code>src&lt;<\/code> e <code>alt&lt;<\/code> quando chiama uno shortcode.<\/p>\n<p>Ora, se ricaricate il post del blog, dovreste vedere l&#8217;immagine cos\u00ec:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-11.jpg\" alt=\"Immagine aggiunta con shortcode in Hugo\" width=\"2048\" height=\"1040\"><figcaption class=\"wp-caption-text\">Immagine aggiunta con shortcode in Hugo..<\/figcaption><\/figure>\n<h2>Come Distribuire un Sito Hugo<\/h2>\n<p>Finora avete imparato come installare Hugo, creare un sito, aggiungere un tema, fare modifiche di base ai file di configurazione ed espandere la funzionalit\u00e0 del vostro sito con partial e shortcode. A questo punto, dovreste avere un sito funzionale pronto per essere messo online.<\/p>\n<p>Poich\u00e9 Hugo \u00e8 un generatore di siti statici, potete distribuire l&#8217;HTML, il CSS e il JS che genera ovunque con un webserver. Dato che i requisiti tecnici per servire siti statici sono cos\u00ec bassi, potete ospitarli gratuitamente attraverso una vasta gamma di provider come Netlify, Vercel, Cloudflare Pages e altri.<\/p>\n<p>In precedenza, abbiamo usato <code>hugo server -D<\/code> per far girare un server di sviluppo locale per vedere in anteprima i cambiamenti al nostro sito in tempo reale. Per generare il sito per intero, possiamo usare il comando <code>hugo<\/code> nella directory principale del nostro progetto. Dopo che la generazione del sito \u00e8 completa, dovreste vedere una nuova cartella <strong>public<\/strong> nella directory del vostro progetto. All&#8217;interno di questa cartella, troverete tutti i file che devono essere caricati su un server o su un servizio di cloud storage come <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-amazon-s3\/\">Amazon S3<\/a>.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-12.jpg\" alt=\"Cartella public per generare il sito Hugo localmente.\" width=\"2048\" height=\"1147\"><figcaption class=\"wp-caption-text\">Generare il sito Hugo localmente.<\/figcaption><\/figure>\n<p>Generare il sito localmente e caricarlo manualmente su Amazon S3 o su un server con Nginx \u00e8 un modo per distribuire un sito generato staticamente. Tuttavia, non \u00e8 il pi\u00f9 efficiente perch\u00e9 richiede di caricare manualmente nuovi file ogni volta che fate un cambiamento.<\/p>\n<p>Invece, un&#8217;opzione migliore \u00e8 quella di collegare la cartella del vostro progetto Hugo a un <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-github\/\">repository GitHub<\/a> e collegare il repository GitHub a un servizio di distribuzione automatica come Netlify. Con questa configurazione, potete modificare il vostro sito, fare un push dei cambiamenti su GitHub e innescare un nuovo build e implementarlo su Netlify senza alcun intervento manuale. Ora, vediamo come fare tutto questo!<\/p>\n<h3>Come Caricare il Vostro Progetto Hugo su GitHub<\/h3>\n<p>Per prima cosa, dovrete creare un repository GitHub per il vostro progetto. Per farlo, create un account GitHub (se non ne avete gi\u00e0 uno) e <a href=\"https:\/\/desktop.github.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">scaricate l&#8217;applicazione desktop ufficiale di GitHub<\/a>. Dopo aver installato l&#8217;applicazione GitHub, fate clic su <strong>File<\/strong> nella barra dei menu e selezionate <strong>New repository<\/strong>. Date al repository un nome a vostra scelta, lasciate per ora le altre opzioni nei loro stati predefiniti e fate clic su <strong>Create Repository<\/strong>.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-13.jpg\" alt=\"Il modale per creare un repository GitHub.\" width=\"2048\" height=\"1498\"><figcaption class=\"wp-caption-text\">Creare un repository GitHub.<\/figcaption><\/figure>\n<p>Per impostazione predefinita (su macOS), l&#8217;applicazione GitHub crea nuovi repository in <code>\/Users\/username\/Documents\/GitHub<\/code>. Dato che abbiamo chiamato il nostro repository <strong>my-hugo-site<\/strong>, lo possiamo trovare in <code>\/Users\/brianli\/Documents\/GitHub\/my-hugo-site<\/code>.<\/p>\n<p>Successivamente, spostate tutti i file nella cartella del vostro progetto originale nella nuova cartella del repository GitHub. Cancellate la cartella <strong>public<\/strong> perch\u00e9 non abbiamo bisogno di caricarla su GitHub.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-14.jpg\" alt=\"Copia il progetto nella cartella del repository GitHub.\" width=\"2048\" height=\"957\"><figcaption class=\"wp-caption-text\">Copia il progetto nella cartella del repository GitHub.<\/figcaption><\/figure>\n<p>Se tornate all&#8217;applicazione GitHub, dovreste ora vedere un elenco di file modificati. Per caricare il repository su GitHub, aggiungete un riepilogo, fate clic su <strong>Commit to main<\/strong> e poi su <strong>Publish Repository<\/strong> nell&#8217;angolo in alto a destra.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-15.jpg\" alt=\"Commit del repo e caricamento su GitHub.\" width=\"2048\" height=\"1498\"><figcaption class=\"wp-caption-text\">Fate un commit del repo e caricatelo su GitHub.<\/figcaption><\/figure>\n<p>Per impostazione predefinita, l&#8217;opzione &#8220;Keep this code private&#8221; \u00e8 selezionata. Se volete che il vostro codice sia open-source e accessibile pubblicamente, deselezionatelo. Infine, fate clic ancora una volta su <strong>Publish Repository<\/strong>.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-16.jpg\" alt=\"Schermata di pubblicazione del repository GitHub.\" width=\"2048\" height=\"1498\"><figcaption class=\"wp-caption-text\">Pubblicate il vostro repository GitHub.<\/figcaption><\/figure>\n<p>Ora, se andate su GitHub, dovreste vedere il vostro repository online cos\u00ec:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-17.jpg\" alt=\"Il repository del progetto Hugo su GitHub.\" width=\"2048\" height=\"1083\"><figcaption class=\"wp-caption-text\">Il repository del progetto Hugo su GitHub.<\/figcaption><\/figure>\n<h3>Come Collegare il Repo GitHub a Netlify<\/h3>\n<p>Se non avete gi\u00e0 un account Netlify, registratevi <a href=\"https:\/\/app.netlify.com\/signup\/email\" target=\"_blank\" rel=\"noopener noreferrer\">qui<\/a>. Per collegare un repository GitHub a Netlify, fate clic su <strong>New site from Git<\/strong> nella bacheca di Netlify.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/netlify-new-site-from-git.jpg\" alt=\"Nuovo sito da Git su Netlify.\" width=\"1500\" height=\"798\"><figcaption class=\"wp-caption-text\">Nuovo sito da Git su Netlify.<\/figcaption><\/figure>\n<p>Sotto <strong>Continuous Deployment<\/strong>, selezionate l&#8217;opzione <strong>GitHub<\/strong>.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/netlify-link-github.jpg\" alt=\"Selezionate \"GitHub\" per la distribuzione continua.\" width=\"1500\" height=\"798\"><figcaption class=\"wp-caption-text\">Selezionate &#8220;GitHub&#8221; per la distribuzione continua.<\/figcaption><\/figure>\n<p>Successivamente, usate la casella di ricerca per trovare il repository del vostro progetto Hugo.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/netlify-select-github-repo.jpg\" alt=\"Scegliete il vostro repository del progetto Hugo.\" width=\"1500\" height=\"797\"><figcaption class=\"wp-caption-text\">Trovate il vostro repository del progetto Hugo.<\/figcaption><\/figure>\n<p>Successivamente, specificate le impostazioni per il deployment continuo. Poich\u00e9 Netlify pu\u00f2 rilevare una configurazione Hugo, le impostazioni predefinite dovrebbero funzionare bene per un deployment di base.<\/p>\n<p>Quando avrete pi\u00f9 familiarit\u00e0 con Hugo, potrete approfondire le variabili d&#8217;ambiente, i comandi di compilazione personalizzati e altro. Per il momento, impostare il comando di compilazione su <code>hugo<\/code> e la directory pubblica su <code>public<\/code> vi permetter\u00e0 di distribuire un semplice sito Hugo. Dopo aver specificato il comando di compilazione e la directory pubblica, fate clic su <strong>Deploy Site<\/strong>.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/deploy-hugo-site-netlify.jpg\" alt=\"Deploymente del sito Hugo su Netlify.\" width=\"1500\" height=\"798\"><figcaption class=\"wp-caption-text\">Deploy di Hugo su Netlify.<\/figcaption><\/figure>\n<p>Poich\u00e9 Hugo \u00e8 un generatore di siti statici molto veloce, la distribuzione dovrebbe richiedere solo pochi secondi per un sito di base. Una volta che il deployment finisce, sarete in grado di vedere un URL di staging nella bacheca di Netlify. Fate clic sull&#8217;URL per visualizzare il sito distribuito.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/netlify-temporary-domain.jpg\" alt=\"URL dello staging Netlify\" width=\"1500\" height=\"797\"><figcaption class=\"wp-caption-text\">Netlify staging URL.<\/figcaption><\/figure>\n<p>Ecco il nostro sito Hugo su Netlify. Come potete vedere, \u00e8 identico al sito sul nostro <a href=\"https:\/\/kinsta.com\/it\/blog\/localhost\/\">ambiente locale<\/a>:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-18.jpg\" alt=\"Hugo su Netlify\" width=\"2048\" height=\"1152\"><figcaption class=\"wp-caption-text\">Sito Hugo su Netlify.<\/figcaption><\/figure>\n<p>A questo punto, potete impostare un dominio personalizzato e un certificato SSL per il vostro sito ospitato su Netlify. Per farlo, vi consigliamo di fare riferimento alla <a href=\"https:\/\/docs.netlify.com\/domains-https\/custom-domains\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione ufficiale di Netlify<\/a>.<\/p>\n<p>Dato che abbiamo collegato Netlify a GitHub, un nuovo commit al repo GitHub del progetto Hugo attiver\u00e0 automaticamente una nuova distribuzione su Netlify!<\/p>\n\n<h2>Riepilogo<\/h2>\n<p>Hugo \u00e8 uno dei generatori di siti statici pi\u00f9 popolari al mondo e per una buona ragione. Non solo ha un&#8217;elaborazione di build super veloce, ma ha anche potenti capacit\u00e0 di template che supportano partial e shortcodes.<\/p>\n<p>In questo tutorial avete imparato come configurare Hugo, creare un nuovo progetto, aggiungere file di contenuto, modificare i file del tema e distribuire un sito statico finito. Raccomandiamo di consultare la documentazione ufficiale di Hugo per saperne di pi\u00f9 su Hugo e le sue caratteristiche pi\u00f9 avanzate come le funzioni personalizzate, il front matter e i buildpack CSS\/JS.<\/p>\n<p><em>Cosa pensate di Hugo e degli altri generatori di siti statici? Fatecelo sapere nei commenti qui sotto!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hugo \u00e8 un generatore statico di siti (SSG o Static Site Generator) scritto in Go (aka Golang), un linguaggio di programmazione compilato ad alte prestazioni spesso &#8230;<\/p>\n","protected":false},"author":125,"featured_media":48648,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[57,25687,25688],"topic":[26179,26238,25868],"class_list":["post-48643","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-cms","tag-hugo","tag-static-site","topic-cms-headless","topic-generatore-siti-statici","topic-velocita-sito"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Come Costruire un Sito Statico Incredibilmente Veloce con Hugo<\/title>\n<meta name=\"description\" content=\"Hugo pu\u00f2 generare gran parte dei siti web in pochi secondi (&lt;1 ms per pagina). Scopri come iniziare a costruire il tuo sito statico con Hugo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo\" \/>\n<meta property=\"og:description\" content=\"Hugo pu\u00f2 generare gran parte dei siti web in pochi secondi (&lt;1 ms per pagina). Scopri come iniziare a costruire il tuo sito statico con Hugo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-15T12:15:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-09T15:56:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Brian Li\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Hugo pu\u00f2 generare gran parte dei siti web in pochi secondi (&lt;1 ms per pagina). Scopri come iniziare a costruire il tuo sito statico con Hugo.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@bwhli\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brian Li\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"32 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/\"},\"author\":{\"name\":\"Brian Li\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/3bc8c901f2ccaa0d9f04d20355a538c1\"},\"headline\":\"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo\",\"datePublished\":\"2021-11-15T12:15:40+00:00\",\"dateModified\":\"2023-06-09T15:56:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/\"},\"wordCount\":5244,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg\",\"keywords\":[\"CMS\",\"hugo\",\"static site\"],\"articleSection\":[\"Sviluppo Web\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/\",\"name\":\"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg\",\"datePublished\":\"2021-11-15T12:15:40+00:00\",\"dateModified\":\"2023-06-09T15:56:04+00:00\",\"description\":\"Hugo pu\u00f2 generare gran parte dei siti web in pochi secondi (&lt;1 ms per pagina). Scopri come iniziare a costruire il tuo sito statico con Hugo.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Come costruire un sito statico incredibilmente veloce con Hugo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Generatore di Siti Statici\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/generatore-siti-statici\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/3bc8c901f2ccaa0d9f04d20355a538c1\",\"name\":\"Brian Li\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1c444780ab66925cacf9d02bc95c56be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1c444780ab66925cacf9d02bc95c56be?s=96&d=mm&r=g\",\"caption\":\"Brian Li\"},\"description\":\"Brian has been a WordPress user for over 10 years, and enjoys sharing his knowledge with the community. In his free time, Brian enjoys playing the piano and exploring Tokyo with his camera. Connect with Brian on his website at brianli.com.\",\"sameAs\":[\"https:\/\/brianli.com\",\"https:\/\/x.com\/bwhli\"],\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/brianli\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo","description":"Hugo pu\u00f2 generare gran parte dei siti web in pochi secondi (&lt;1 ms per pagina). Scopri come iniziare a costruire il tuo sito statico con Hugo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/","og_locale":"it_IT","og_type":"article","og_title":"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo","og_description":"Hugo pu\u00f2 generare gran parte dei siti web in pochi secondi (&lt;1 ms per pagina). Scopri come iniziare a costruire il tuo sito statico con Hugo.","og_url":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2021-11-15T12:15:40+00:00","article_modified_time":"2023-06-09T15:56:04+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg","type":"image\/jpeg"}],"author":"Brian Li","twitter_card":"summary_large_image","twitter_description":"Hugo pu\u00f2 generare gran parte dei siti web in pochi secondi (&lt;1 ms per pagina). Scopri come iniziare a costruire il tuo sito statico con Hugo.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg","twitter_creator":"@bwhli","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Brian Li","Tempo di lettura stimato":"32 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/"},"author":{"name":"Brian Li","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/3bc8c901f2ccaa0d9f04d20355a538c1"},"headline":"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo","datePublished":"2021-11-15T12:15:40+00:00","dateModified":"2023-06-09T15:56:04+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/"},"wordCount":5244,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg","keywords":["CMS","hugo","static site"],"articleSection":["Sviluppo Web"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/","url":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/","name":"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg","datePublished":"2021-11-15T12:15:40+00:00","dateModified":"2023-06-09T15:56:04+00:00","description":"Hugo pu\u00f2 generare gran parte dei siti web in pochi secondi (&lt;1 ms per pagina). Scopri come iniziare a costruire il tuo sito statico con Hugo.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/10\/sito-statico-hugo.jpeg","width":1460,"height":730,"caption":"Come costruire un sito statico incredibilmente veloce con Hugo"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/sito-statico-hugo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Generatore di Siti Statici","item":"https:\/\/kinsta.com\/it\/argomenti\/generatore-siti-statici\/"},{"@type":"ListItem","position":3,"name":"Come Costruire un Sito Statico Incredibilmente Veloce con Hugo"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/3bc8c901f2ccaa0d9f04d20355a538c1","name":"Brian Li","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1c444780ab66925cacf9d02bc95c56be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1c444780ab66925cacf9d02bc95c56be?s=96&d=mm&r=g","caption":"Brian Li"},"description":"Brian has been a WordPress user for over 10 years, and enjoys sharing his knowledge with the community. In his free time, Brian enjoys playing the piano and exploring Tokyo with his camera. Connect with Brian on his website at brianli.com.","sameAs":["https:\/\/brianli.com","https:\/\/x.com\/bwhli"],"url":"https:\/\/kinsta.com\/it\/blog\/author\/brianli\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/48643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/125"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=48643"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/48643\/revisions"}],"predecessor-version":[{"id":65796,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/48643\/revisions\/65796"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/48643\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/48643\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/48643\/translations\/es"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/48643\/translations\/fr"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/48643\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/48643\/translations\/de"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/48643\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/48648"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=48643"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=48643"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=48643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}