Et fullblåst CMS er sjelden nødvendig. Noen ganger trenger du bare å lage en lys, statisk nettside? men du har akkurat nok sider for å gjøre prosessen med å kopiere malfiler og å gjøre endringer på tvers av nettsider endringer. I dag skal jeg demonstrere en enkel løsning - Jekyll - som gjør at små nettsteder blir en bris.
Jekyll er en enkel, bloggbevisst, statisk nettstedgenerator.
Jekyll er en enkel, bloggbevisst, statisk nettstedgenerator. Det er det stedet sier. Men hva betyr dette egentlig? En statisk side generator er et program som tar et sett med filer og genererer nettstedet ditt med dem. Som du ser, kan vi bruke et sett med maler, lage innholdsfiler separat, og bruk Jekyll for å generere nettstedet vårt. Den? Bloggen klar? En del betyr at vi kan bruke dette til å lage en blogg, eller et nettsted som har en rekke post-lignende oppføringer (for eksempel en portefølje). La oss gi det en sjanse!
Se her for mer informasjon om Ruby Gems.
Vi begynner med å installere Jekyll; Det er en Ruby perle, så det burde være ganske grei.
gem install jekyll # bruk 'sudo' hvis oppsettet krever det
Yep: det er så enkelt. Det er noen flere brikker vi kan installere hvis vi planlegger å gjøre et mer komplekst oppsett, men siden vi ikke er det, vil dette gjøre trikset.
Hver fil eller mappe som ikke starter med en understreking, blir kopiert til det genererte nettstedet.
Deretter la vi sette opp mappene til Jekyll. Opprett en mappe som heter eksempel-app
for denne opplæringen; Vi skal lage en liten porteføljeside for, for eksempel, en fotograf. Dette er et godt eksempel på hvor Jekyll skinner: Det er et lite nettsted som ikke vil bli oppdatert for ofte, men er stort nok til det punktet at du ikke vil åpne hver side når du må gjøre en markupendring.
Innsiden eksempel-app
, lag en mappe som heter _layouts
. Legg merke til underskriften i begynnelsen av denne mappen: En hvilken som helst mappe eller fil som begynner med en understreking, vil ikke være en del av nettstedet som Jekyll genererer. Hvis de har et navn som Jekyll gjenkjenner (for eksempel _config.yml
eller _layouts
), vil innholdet bli brukt i genereringen av nettstedet, men filene selv vil ikke dukke opp på nettstedet. Husk dette: Alle filer eller mapper som ikke starter med underskrift, kopieres til det genererte nettstedet (som for øvrig er standard til _nettstedet
sub-mappe).
Så la oss lage en layout. Vi starter med et generelt nettstedslayout som inneholder all? Krom? for nettstedet vårt. Opprett en ny fil, kalt default.html
inne i _layouts
mappe (navnet ikke er sant), og legg til følgende kode for det:
% hvis side.title% side.title | % endif% John Doe, Fotograf John Doe Photograghy
innhold
Et par ting her å huske på?
For det første bruker Jekyll flytende malesystemet (som standard). Dette betyr at alt du kan gjøre med Liquid, kan du gjøre i en mal i Jekyll. For eksempel, i
tag, vi bruker begge typer flytende oppslag: output markup og tag markup. Output markup kan utgjøre tekst (hvis den viste variabelen eksisterer), mens tagmarkup ikke gjør det. Outputmarkup er avgrenset av dobbelkrøll-braces, mens tagmarkup er avgrenset av en krøllete brace / percent sign duo.
Den neste tingen å legge merke til ovenfor er hva som er inne i Liquid-kodene: ting som side tittel
og innhold
. Disse er variabler levert av Jekyll; Du kan se listen over tilgjengelige maldata i dokumentene. Vi kan også opprette egendefinerte maldata, som vi snart vil se gjennom.
Til slutt legg merke til CSS vi kobler til: opprett en css
mappe i roten til prosjektet ditt og kaste denne stilen til en style.css
fil:
kropp font: 16px / 1.5 verdana, helvetica-neue, helvetica, arial, san-serif; bakgrunn: svart; farge: #ececec; polstring: 0; margin: 0; ul margin: 0; polstring: 0; en color: #ccc; tekst-dekorasjon: ingen; a: svever farge: #ececec; tekst-dekorasjon: understreke; #main width: 960px; margin: 0 auto; bakgrunn: rgba (255, 255, 255, 0.4); header padding: 0 10px; overløp: skjult; h1 margin: 0; nav ul, ul.entries liste-stil-type: none; nav li a float: left; margin: 5px; .content polstring: 10px; ul.entries li posisjon: relativ; margin: 20px auto; polstring: 20px; bakgrunn: #ececec; bredde: 600px; ul.entries img bredde: 600px; ul.entries li h3 posisjon: absolutt; bunn: -18px; igjen: 17px; skriftstørrelse: 2em; ul.entries a color: #ececec; ul.entries a: hover color: #fff; footer font-size: 0.65em; tekst-align: center;
Lag også en img
mappe og legg til et bilde, oppkalt banner.jpg
; Vi bruker det snart. Ethvert bilde vil gjøre; bare beskjære det til 960 x
av 300px;
.
Du lurer kanskje på hvorfor vi bruker hvis
erklæring ovenfor hvis side tittel
variabel vil bare ikke vises hvis den eksisterer? Vel, hvis det eksisterer, vil jeg inkludere den vertikale linjen etter den; en annen måte å skrive på som ville være slik:
page.title % if page.title% | % slutt om %
Så, hvordan bruker vi denne malen? Vel, vi må lage en side som vil bruke denne malen. I rotkatalogen av prosjektet vårt, opprett en index.html
fil. Her er innholdet:
--- layout: standard ---Velkommen til John Doe Photography! Vennligst sjekk ut Porteføljen min for å se arbeidet mitt.
Her er innholdet i vår index.html
fil. Legg merke til hva som står øverst på filen: Jekyll kaller denne YAML-fremgangen. Enhver fil (som ikke starter med en understreking) som har YAML-frontmateriell, vil bli generert av Jekyll før den blir satt inn _nettstedet
mappe (hvis den ikke har underskrift eller YFM, så kopieres den bare _nettstedet
). I dette tilfellet forteller YAML-fronten bare Jekyll hvilken mal vi vil bruke den.
Nå, åpne en terminal, cd
inn i prosjektkatalogen din, og kjør Jekyll
. Du bør se noe slikt:
ADVARSEL: Kunne ikke lese konfigurasjonen. Bruke standardinnstillinger (og alternativer). Ingen slik fil eller katalog - /Users/andrew/Desktop/example-app/_config.yml Byggeside: / Brukere / andrew / Desktop / example-app -> / Brukere / andrew / Desktop / example-app / _site Vellykket generert nettsted : / Brukere / andrew / Desktop / example-app -> / Brukere / andrew / Desktop / example-app / _site
Ignorer advarselen; vi kommer snart til det. For nå kan du se at nettstedet har blitt bygget i en nyopprettet _nettstedet
katalogen. Hvis du åpner _site / index.html
fil i din valgte nettleser, bør du se? en feil. Problemet er at våre stier (nettadresser og stilark) begynner med et fremoverstrekk. Dette betyr at vi ikke bare kan se dem som filer, vi må vise dem på en server. Jo, du kan starte opp W / MAMP, men hvorfor ta det med trøbbel? Jekyll har en innebygd server. Så løp jekyll - server
, og gå til localhost: 4000 for å se noe som bildet nedenfor:
Hvis bildet ovenfor ikke er nok, se koden til _site / index.html
. Du ser at malen vi angav ble blandet med innholdet vi ga og -voila! -Vi har vår side.
Jeg vil minne deg på at det er YAML-fronten som gjør at denne magien skjer; hvis en fil ikke starter med tre bindestreker, en eller flere linjer med egenskaper og en annen linje med tre bindestreker, kopieres filen bare til _nettstedet
mappe, ingen generasjon finner sted.
Nå som vi er komfortable med det grunnleggende, la oss lage en portefølje for vår fiktive fotograf. Husk hvordan jeg merket at Jekyll er? Bloggen oppmerksom ?? Vel, vi skal bruke denne bloggen-bevissthetsfunksjonen til vår fordel: i stedet for innlegg, har vi porteføljeoppføringer.
Innlegg hører til i en mappe, kalt _posts
, så skape det nå. Filnavnsmønsteret for innlegg må også være spesifikt: år-måned-dag-title.ext
. Innlegg - vel, hvilken som helst fil i ditt Jekyll-område, egentlig - kan enten være Markdown eller HTML.
Så la oss gjøre noen innlegg: husk, disse vil faktisk være oppføringer i vår portefølje:
_posts / 2010-03-04-bikes.md
--- layout: portfolio_entry bilde: /img/bikes.jpg tittel: Sykler, svart og hvitt --- Sykler brukes av nesten alle i sentrum av Amsterdam. Disse er kjedet til et sykkelstativ.
_posts / 2010-10-01-wing.md
--- layout: portfolio_entry tittel: Wing and a Prayer bilde: /img/wing.jpg --- Wing of AirBus Jeg red til England.
_posts / 2011-06-05-bridge.md
--- layout: portfolio_entry tittel: Stone Bridge bilde: /img/bridge.jpg --- En gammel steinbro i London.
_posts / 2011-07-09-road.md
--- layout: portfolio_entry tittel: Road and Curb bilde: /img/road.jpg --- Sykkelbaner her er veldig tynn.
Ganske enkelt, eh? Legg merke til hvordan vi lager et tilpasset YAML front matter-felt: bilde
. Dette er nettadressen til bildet for den oppføringen. Jo, vi kan bygge hele oppførings HTML her i denne filen, men hva hvis vi vil endre det? Vi må returnere og endre det i hver oppføring. På denne måten kan vi i stedet bruke vår portfolio_entry
mal for å gjengi dem. Hva ser den mal ut? Det er ganske enkelt også:
_layouts / portfolio_entry.html
--- layout: standard ---side tittel
innhold
Hvis du så på siden for maldata, vet du at alle tilpassede frontmateriell vi legger til, vil være tilgjengelige under side
; Så, her, kan vi få tilgang page.image
. Vi bruker også side tittel
og innhold
(alt etter den siste trepunktstreken).
Jeg bør nevne her, mens innlegget tittel
skal være tilgjengelig på post
objekt, jeg har bare kunnet få det til å fungere på side
gjenstand. Hva som helst som funker!
Vær også oppmerksom på at vi har denne malen ved hjelp av vår misligholde
oppsett. Du kan neste maler slik, og gjøre jobben enda enklere.
Dette gir oss våre innlegg (innlegg) sider, men hva med hovedporteføljesiden? Når vi skrev vår navigasjon i standardoppsettet, bemerket jeg at vi vil ha det som / Portefølje /
. Så lag en mappe, kalt portefølje
i rotkatalogen, og åpne en index.html
filen i den.
--- layout: standard tittel: portefølje ---Portfolio
Sjekk ut bildene mine nedenfor!
Dette er vårt mest kompliserte stykke ennå. Husk at dette ikke er en mal: det er en vanlig? fil, men det kan fortsatt inneholde flytende koder. Vi starter med å sette inn oppsett
til misligholde
, og tittel
til? Portefølje.?
Legg merke til at vi i HTML har en flytende for i
sløyfe. Vi henter alle innleggene med sites.posts
; så løp vi over disse innleggene med for innlegg i site.posts
/ EndFor
. Hvis du har jobbet med WordPress, eller et annet bloggsystem, bør du være kjent med begrepet a sløyfe
. Det er alt dette er! Innsiden, som du kan se, kan vi få standardegenskapene, så vel som eventuelle fremste saker vi definerte (som bilde
).
Nå hvis vi løper jekyll - server
å generere nettstedet og starte serveren, localhost: 4000 / portefølje / skal vise dette:
Og her er en inngangsside:
Flott! Du har opprettet en portefølje. Jeg er sikker på at du også ser hvordan dette fungerer for en blogg. La oss nå gå videre for å se på noen konfigurasjonsalternativer for Jekyll.
Det er en mengde alternativer for Jekyll. Det er flott at alle av dem har veldig fornuftige standarder, men hvis du vil endre dem, er det ikke vanskelig i det hele tatt.
Det er to måter å angi alternativer på.
--serveren
parameter, som starter en server etter å ha generert nettstedet._config.yml
; Dette er en YAML-fil, så hver linje er en nøkkel: verdi
par, akkurat som i YAML-fronten. Jekyll vil se etter denne filen før du genererer nettstedet.Så gjør en _config.yml
fil, og la oss sjekke ut noen av de vanligste alternativene.
For en komplett liste over alternativer, gå gjennom konfigurasjonsdokumentasjonen.
auto
: Legge til auto: true
til konfigurasjonsfilen din vil Jekyll fortsette å løpe, se prosjektmappen din for endringer og regenerere nettstedet på flyet.kilde
: Hvis kildefilene dine er i en annen katalog enn den du kjører Jekyll fra, vil du sette den katalogen sammen med kilde
eiendom.mål
: Som standard er destinasjonen for det genererte nettstedet ditt ./_nettstedet
. Hvis du vil ha noe annerledes, sett det her.permalink
: Permanent lenken er banen til innleggene dine. Som standard er det /year/month/day/title.html
. Du kan imidlertid tilpasse det hvis du vil. Blant annet kan du bruke variablene :år
, :måned
, :dag
, :tittel
, og : kategorier
. : kategorier
kommer fra forsiden; alle de andre kommer fra postfilnavnet. Deretter kan du sette permalink
til ting som /: År /: måned /: tittel /
eller /:categories/:title.html
. Bonus tips: hvis du har en permalink
eiendom i posten foran saken, vil den overstyre den generelle standarden.utelukke
: Som jeg sa ovenfor, vil Jekyll ikke generere filer i kataloger som starter med underskrift. Men hvis du har mapper som du vil ignorere, men det begynner ikke med et understrek, kan du gjøre det med utelukke
i konfigurasjonsfilen din.Så, la oss si at du har opprettet nettstedet, og vil sette det gratis ut på verdensomspennende web. Hvordan gjør du det?
Det er flere måter å oppnå dette på. Selvfølgelig, hvis det er et lite nettsted som du ikke vil oppdatere for ofte, så bare FTP det opp til serveren din; Dette kan være ditt eneste alternativ, hvis du bruker delt hosting.
Hvis du har en VPS eller dedikert hostingoppsett, kan du kjøre mer automatisk. Sjekk ut distribusjonsdokumentasjonen for en liste over gode ideer. Hvis du ikke er sikker på hva du skal gjøre, kan du prøve å følge instruksjonene for å bruke git-mottakskroken; Jeg har prøvd det, og det er ganske kult.
Dette er bare toppen av Jekyll.
Vel, det er din introduksjon til Jekyll - den enkle, bloggbevisste, statiske nettstedgeneratoren. Neste gang du bygger et brosjyre-stil, forretningskort-y, mikroporteføljeside, tror du at du vil gi Jekyll et forsøk? Gi meg beskjed i kommentarene og takk så mye for å lese!