Un CMS in piena regola è raramente necessario. A volte, hai solo bisogno di creare un sito web leggero e statico? ma hai solo un numero sufficiente di pagine per eseguire il processo di copia dei file di modello e rendere le modifiche al markup tra siti un lavoro ingrato. Oggi dimostrerò una soluzione semplice, Jekyll, che renderà la creazione di piccoli siti web un gioco da ragazzi.
Jekyll è un generatore di siti statico semplice, sensibile al blog.
Jekyll è un generatore di siti statico semplice, sensibile al blog. Questo è quello che dice il sito. Ma che cosa significa esattamente? Un generatore di siti statici è un programma che accetta un set di file e genera il tuo sito con loro. Come vedrai, saremo in grado di utilizzare una serie di modelli, creare i file di contenuti separatamente e quindi utilizzare Jekyll per generare il nostro sito. Il? Blog consapevole? parte significa che potremmo usarlo per creare un blog, o qualsiasi sito web che abbia una serie di voci post-like (come un portfolio). Proviamolo!
Fare riferimento qui per ulteriori informazioni su Ruby Gems.
Inizieremo installando Jekyll; è una gemma di Ruby, quindi farlo dovrebbe essere piuttosto semplice.
gem install jekyll # usa 'sudo' se il tuo setup lo richiede
Sì: è così facile. Ci sono altri pezzi che potremmo installare se stiamo pianificando un set-up più complesso, tuttavia, dato che non lo siamo, questo farà il trucco.
Ogni file o cartella che non inizia con un trattino basso verrà copiata nel sito generato.
Quindi, impostiamo le cartelle per Jekyll. Crea una cartella, chiamata Esempio-app
per questo tutorial; creeremo un piccolo portfolio per un fotografo, per esempio. Questo è un ottimo esempio di dove risplende Jekyll: è un sito piccolo che non verrà aggiornato troppo spesso, ma è abbastanza grande da non voler aprire ogni pagina quando è necessario apportare una modifica al markup.
Dentro Esempio-app
, crea una cartella chiamata _layouts
. Notare il carattere di sottolineatura all'inizio di questa cartella: qualsiasi cartella o file che inizia con un trattino basso non farà parte del sito generato da Jekyll. Se hanno un nome che Jekyll riconosce (come ad esempio _config.yml
o _layouts
), i loro contenuti saranno utilizzati nella generazione del sito, ma i file stessi non verranno visualizzati nel sito. Ricorda questo: ogni file o cartella che non inizia con un trattino basso verrà copiata nel sito generato (che, per inciso, si posiziona di default sul _posto
sottocartella).
Quindi, creiamo un layout. Inizieremo con un layout generale del sito che include tutti i? Chrome? per il nostro sito. Crea un nuovo file, chiamato default.html
dentro il _layouts
cartella (il nome non ha importanza) e aggiungere il seguente codice:
% se page.title% page.title | % endif% John Doe, fotografo John Doe Photograghy
content
Un paio di cose qui da tenere a mente?
Innanzitutto, Jekyll utilizza il sistema di modelli Liquid (per impostazione predefinita). Ciò significa che qualsiasi cosa tu possa fare con Liquid, puoi farlo in un modello in Jekyll. Ad esempio, nel
tag, stiamo usando entrambi i tipi di markup Liquid: markup di output e tag markup. Il markup dell'output può produrre testo (se esiste la variabile referenziata), mentre il markup del tag no. Il markup dell'output è delimitato da doppie parentesi graffe, mentre il markup del tag è delimitato da una coppia di parentesi graffe / segno di duo.
La prossima cosa da notare sopra è cosa c'è dentro i tag Liquid: cose come titolo della pagina
e soddisfare
. Queste sono variabili fornite da Jekyll; puoi vedere l'elenco dei dati dei modelli disponibili nei documenti. Possiamo anche creare dati di modelli personalizzati, come esamineremo a breve.
Infine, nota il CSS a cui stiamo collegando: crea a css
cartella nella radice del tuo progetto e lancia questo pezzettino di stile in a style.css
file:
body font: 16px / 1.5 verdana, helvetica-neue, helvetica, arial, san-serif; sfondo: nero; colore: #ececec; padding: 0; margine: 0; ul margine: 0; padding: 0; a color: #ccc; decorazione del testo: nessuna; a: hover color: #ececec; decorazione del testo: sottolineatura; #main width: 960px; margine: 0 auto; background: rgba (255, 255, 255, 0,4); header padding: 0 10px; overflow: nascosto; h1 margine: 0; nav ul, ul.entries list-style-type: none; nav li a float: left; margine: 5px; .content padding: 10px; ul.entries li position: relativo; margine: 20px auto; imbottitura: 20px; sfondo: #ececec; larghezza: 600 px; ul.entries img width: 600px; ul.entries li h3 position: absolute; fondo: -18px; a sinistra: 17 px; font-size: 2em; ul.entries a color: #ececec; ul.entries a: hover color: #fff; footer font-size: 0.65em; allineamento del testo: centro;
Inoltre, crea un img
cartella e aggiungere un'immagine, denominata banner.jpg
; lo useremo a breve Qualsiasi immagine farà; basta ritagliarlo 960px
di 300px;
.
Potresti chiederti perché stiamo usando il Se
dichiarazione sopra se il titolo della pagina
la variabile semplicemente non verrà visualizzata se esiste? Bene, se esiste, voglio includere la barra verticale dopo di essa; un altro modo di scrivere che sarebbe come questo:
page.title % if page.title% | % finisci se %
Quindi, come usiamo questo modello? Bene, abbiamo bisogno di creare una pagina che utilizzerà questo modello. Nella directory principale del nostro progetto, crea un index.html
file. Ecco il contenuto:
--- layout: predefinito ---Benvenuti in John Doe Photography! Per favore, controlla il mio Portfolio per vedere il mio lavoro.
Ecco il contenuto del nostro index.html
file. Si noti cosa c'è nella parte superiore del file: Jekyll chiama questo aspetto anteriore di YAML. Qualsiasi file (che non inizia con un trattino basso) che ha il problema con YAML sarà generato da Jekyll prima di essere inserito nel _posto
cartella (se non ha underscore o YFM, allora verrà semplicemente copiata _posto
). In questo caso, il frontespizio YAML dice semplicemente a Jekyll quale modello vogliamo che usi.
Ora apri un terminale, CD
nella directory del progetto ed esegui Jekyll
. Dovresti vedere qualcosa di simile a questo:
ATTENZIONE: impossibile leggere la configurazione. Utilizzo di valori predefiniti (e opzioni). Nessun file o directory di questo tipo - /Users/andrew/Desktop/example-app/_config.yml Cantiere: / Users / andrew / Desktop / example-app -> / Users / andrew / Desktop / example-app / _site Sito generato con successo : / Users / andrew / Desktop / example-app -> / Users / andrew / Desktop / example-app / _site
Ignora l'avviso; verremo a breve. Per ora, puoi vedere che il sito è stato costruito in un nuovo creato _posto
directory. Se apri il _SITE / index.html
file nel tuo browser di scelta, dovresti vedere? un fallimento. Il problema è che i nostri percorsi (URL e foglio di stile) iniziano con una barra in avanti. Questo significa che non possiamo semplicemente vederli come file, dobbiamo vederli su un server. Certo, potresti iniziare con W / MAMP, ma perché prendersi il disturbo? Jekyll ha un server integrato. Quindi, corri jekyll --server
, e vai a localhost: 4000 per vedere qualcosa di simile all'immagine qui sotto:
Se l'immagine sopra non è sufficiente, guarda il codice di _SITE / index.html
. Vedrai che il modello che abbiamo specificato è stato combinato con il contenuto che abbiamo fornito e-voilà! -Avremmo la nostra pagina.
Voglio ricordarti che è il fronte YAML che fa accadere questa magia; se un file non inizia con tre trattini, una o più righe di proprietà e un'altra riga di tre trattini, il file verrà semplicemente copiato sul _posto
cartella, nessuna generazione in atto.
Ora che siamo a nostro agio con le basi, creiamo un portfolio per il nostro fotografo immaginario. Ricorda come ho notato che Jekyll è? Blog aware ?? Bene, utilizzeremo questa funzionalità di consapevolezza del blog a nostro vantaggio: anziché i post, avremo voci di portfolio.
I messaggi appartengono a una cartella, chiamati _posts
, quindi crealo ora. Il modello del nome del file per i post deve essere specifico: anno-mese-giorno-title.ext
. Post: beh, qualsiasi file nel tuo sito Jekyll, in realtà, può essere Markdown o HTML.
Facciamo alcuni post: ricorda, questi saranno effettivamente voci nel nostro portfolio:
_posts / 2010-03-04-bikes.md
--- layout: portfolio_entry image: /img/bikes.jpg title: Bikes, Black and White --- Le biciclette sono utilizzate da quasi tutti nel centro di Amsterdam. Questi sono incatenati a un portabici.
_posts / 2010-10-01-wing.md
--- layout: portfolio_entry title: Wing and a Prayer image: /img/wing.jpg --- L'ala del AirBus Ho guidato in Inghilterra.
_posts / 2011-06-05-bridge.md
--- layout: portfolio_entry titolo: Stone Bridge image: /img/bridge.jpg --- Un vecchio ponte di pietra a Londra.
_posts / 2011-07-09-road.md
--- layout: portfolio_entry titolo: Road and Curb image: /img/road.jpg --- I percorsi ciclabili qui sono terribilmente sottili.
Piuttosto semplice, eh? Si noti come stiamo creando un campo di argomenti frontali YAML personalizzato: Immagine
. Questo è l'URL dell'immagine per quella voce. Certo, potremmo costruire l'intera voce HTML qui in questo file, ma cosa succede se vogliamo cambiarlo? Dovremmo tornare e cambiarlo in ogni voce. In questo modo, possiamo invece usare il nostro portfolio_entry
modello per renderli. Com'è il modello? È anche abbastanza semplice:
_layouts / portfolio_entry.html
--- layout: predefinito ---titolo della pagina
content
Se hai guardato la pagina dei dati del modello, saprai che qualsiasi frontespizio personalizzato che aggiungiamo sarà disponibile sotto pagina
; quindi, qui, possiamo accedere page.image
. Stiamo anche usando titolo della pagina
e soddisfare
(tutto dopo l'ultima linea dei tre trattini).
Dovrei menzionare qui, mentre il post titolo
dovrebbe essere disponibile su inviare
oggetto, sono stato in grado di farlo funzionare solo su pagina
oggetto. Basta che funzioni!
Inoltre, nota che abbiamo questo modello usando il nostro predefinito
disposizione. Puoi nidificare modelli del genere e rendere il tuo lavoro ancora più semplice.
Questo ci dà le nostre pagine di entrata (post), ma per quanto riguarda la pagina principale del portfolio? Quando ho scritto la nostra navigazione nel nostro layout predefinito, ho notato che lo vogliamo come /portafoglio/
. Quindi, crea una cartella, chiamata portafoglio
nella directory root e aprire un index.html
file al suo interno.
--- layout: titolo predefinito: portfolio ---Portafoglio
Guarda le mie immagini qui sotto!
Questo è il nostro pezzo più complicato ancora. Ricorda, questo non è un modello: è un? Normale? file, ma può ancora contenere tag Liquid. Iniziamo impostando disposizione
a predefinito
, e titolo
a? Portfolio.?
Si noti che, nel codice HTML, abbiamo un liquido per-in
ciclo continuo. Noi recuperiamo tutti i post con sites.posts
; quindi, passiamo sopra quei post con per post in site.posts
/ EndFor
. Se hai lavorato con WordPress o qualsiasi altro sistema di blogging, dovresti avere familiarità con il concetto di a ciclo continuo
. È tutto questo! Dentro, come puoi vedere, possiamo ottenere le proprietà standard, così come qualsiasi argomento frontale che abbiamo definito (come Immagine
).
Ora se corriamo jekyll --server
per rigenerare il sito e avviare il server, localhost: 4000 / portfolio / dovrebbe mostrare questo:
Ed ecco una pagina di entrata:
Grande! Hai creato un portfolio. Sono sicuro che vedi anche come funziona per un blog. Passiamo ora a esaminare alcune opzioni di configurazione per Jekyll.
C'è una pletora di opzioni per Jekyll. È fantastico che tutti abbiano impostazioni predefinite davvero sensate, ma se vuoi cambiarle, non è affatto difficile.
Ci sono due modi per impostare le opzioni.
--server
parametro, che avvia un server dopo aver generato il sito._config.yml
; questo è un file YAML, quindi ogni linea è una chiave: valore
coppia, proprio come nel caso di YAML. Jekyll cercherà questo file prima di generare il sito.Quindi, crea un _config.yml
file, e vediamo alcune delle opzioni più comuni.
Per un elenco completo di opzioni, consultare la documentazione di configurazione.
auto
: Aggiunta auto: vero
nel tuo file di configurazione manterrà in esecuzione Jekyll, osservando la cartella del tuo progetto per le modifiche e rigenerando il sito al volo.fonte
: Se i tuoi file sorgente sono in una directory diversa da quella in cui stai usando Jekyll, ti consigliamo di impostare quella directory con fonte
proprietà.destinazione
: Per impostazione predefinita, la destinazione per il sito generato è ./_posto
. Se desideri qualcosa di diverso, impostalo qui.permalink
: Il permalink è il percorso per i tuoi post. Di default, è così /year/month/day/title.html
. Tuttavia, puoi personalizzarlo se vuoi. Tra gli altri, puoi usare le variabili :anno
, :mese
, :giorno
, :titolo
, e : categorie
. : categorie
viene dalla materia anteriore; tutti gli altri provengono dal nome del file post. Quindi, puoi impostare permalink
a cose come /: Anno /: mese /: titolo /
o /:categories/:title.html
. Suggerimento bonus: se ne hai uno permalink
proprietà nella parte anteriore del post, sostituirà l'impostazione predefinita del sito.escludere
: Come detto sopra, Jekyll non genererà file nelle directory che iniziano con un carattere di sottolineatura. Ma se hai cartelle che vuoi ignorare, ma che non iniziano con un trattino basso, puoi farlo con escludere
nel tuo file di configurazione.Supponiamo, quindi, di aver creato il sito e di averlo impostato gratuitamente sul world wide web. Come si fa a farlo?
Ci sono diversi modi per farlo. Naturalmente, se si tratta di un sito di piccole dimensioni che non si aggiornerà troppo spesso, è sufficiente collegarlo via FTP al server; questa potrebbe essere la tua unica opzione, se utilizzi l'hosting condiviso.
Se hai un VPS o una configurazione di hosting dedicata, puoi eseguire più automaticamente. Controlla la documentazione di implementazione per un elenco di buone idee. Se non sei sicuro di cosa fare, prova a seguire le istruzioni per l'uso del gancio git post-ricezione; Ci ho provato, ed è fantastico.
Questa è solo la punta di Jekyll.
Bene, questa è la tua introduzione a Jekyll - il semplice generatore di siti statico, sensibile al blog. La prossima volta che crei un sito in stile brochure, biglietto da visita e micro-portfolio, pensi di provare Jekyll? Fammi sapere nei commenti e ti ringrazio tanto per la lettura!