Jag hörde först om den huvudlösa CMS-tillvägagångssättet i ett samtal som jag tittade från Twin Cities Drupal. Jag gillade tanken på en separation av oro mellan författande innehåll och tittade på det.
Jag hade redan upplevt hur lätt en server kan gå ner, ta ut alla webbplatser på den, vilket leder till minuter eller timmar av hjärtstopp panik (det fanns 24 på mig). Jag hade också sett hur en monolitisk CMS-baserad webbplats kunde drabbas av en säkerhetskompromiss och ta mycket ansträngning för att reparera (det tog mig mer än två dagar obetald arbete). För en rad webbhotell Leverantörsalternativ, kolla in vår guide.
Jag hade sett fördelarna med CDNS (Content Delivery Networks) som kan lagra din bild, ljud och videofiler på servrar optimerade för snabb leverans och kan duplicera dessa filer över hela världen för snabb leverans till dessa regioner om det behövs. Vad händer om hela din webbplats kan dra nytta av detta tillvägagångssätt?
● En dator med en Internetanslutning (obs)
● En kodredigerare (Atom eller VS-kod)
● En kommandoradsskal / terminal
● En ny version av Node.js installerade (du kan ladda ner & amp; installera
här
)
● En WordPress-webbplats för att få innehåll från. Om du inte har en, kan du använda Wordpress.com-plattformen eller det här
Heroku Build Pack
.
● Källfilerna
från github
.
WordPress kommer ut ur lådan med resten API och det är vad vi ska använda för att fråga dina data. Så vi behöver inte riktigt något annat! Vår visningsplats är helt separat från vår innehållsplats, så vi behöver inte WordPress-teman eller någon annan anpassning utanför några (tillval) plugins. Även om du självklart kan lägga till dessa om du vill.
Undantaget är om du behöver anpassade metafält för extra innehållsområden. Du använder förmodligen avancerade anpassade fält för att göra det; Du kan lägga till den data till WordPress API av Installera detta plugin .
Nu när vi har vår innehållskälla, låt oss hämta data och visa den med en statisk webbplatsgenerator. Mitt vapen av val i denna rike är Gatsby , En utmärkt statisk webbplatsgenerator som är byggd med JavaScript. (Se dessa Website Builder Välj för enkla sätt att bygga en webbplats.)
Om du letar efter ett bra sätt att bygga på din JavaScript-färdigheter och lära sig reagera genom att fastna i någon kod, rekommenderar jag starkt att du försöker att Gatsby gör det. Jag har lärt mig mycket själv genom att leka med det.
Först, låt oss installera ett kommandoradsverktyg som gör det möjligt för oss att skapa gatsby-webbplatser:
npm install -global gatsby-cli
Navigera nu till mappen där du vill behålla din webbplats och kör det här kommandot:
gatsby new blog
Detta kommer att skapa en ny mapp som heter "Blog" och installera Gatsby och dess beroenden i den här mappen. Öppna den här mappen i din favorit textredigerare. Det kan tyckas vara många filer där. Oroa dig inte, vi ska bara redigera gatsby-config.js , gatsby-node.js filer och src Mapp, som är där våra mallar bor.
Om du har många filer att lagra, är det värt att uppgradera din molnlagring .
Det första steget vi vill ta är att hämta vårt innehåll från WordPress-webbplatsens API.
För att göra det kommer vi att installera gatsby-source-wordpress , ett prewrititt plugin för WordPress. Detta illustrerar en av de främsta anledningarna till att jag älskar Gatsby - du kan få dina data från en mängd olika källor. Många statiska generatorer är begränsade till att använda markdown-filer, men Gatsby är mycket flexibel.
Gatsbys plugin ekosystem är mycket mogen. Det finns massor av prewritten sätt att få dina data och massor av annan smart funktionalitet som också kommer till nytta.
För att installera plugin, ändra den första katalogen till din nya Gatsby-webbplats med hjälp av det här kommandot: CD-blogg .
Kör nu det här kommandot: npm installera --save gatsbysource-wordpres s.
När det är klart är det dags att öppna upp Gatsby-config.js-filen. Du får se att det redan finns någon grundläggande installation på plats som Gatsby ger oss som standard. Vi ska bygga på det för att konfigurera vårt plugin här:
modul.exports = {
Sitemetadata: {
Titel: "Gatsby standardstart",
},
plugins: [
"Gatsby-plugin-reagering-hjälm",
{
Lös: "Gatsby-Source-WordPress",
alternativ: {
baseurl: "my-wordpress-site.com",
Protokoll: "https",
Hostingwpcom: False,
USEACF: sant,
Sökföretagtacecontenturls: {
Sourceurl: "https://my-wordpress-site.com",
ersättare: "https://my-static-site.com",
}
},
},
]
}
Du kan kontrollera genom att öppna din terminal, skriva Gatsby utvecklas och titta på vad som händer. Varnas! Även om du har dina inställningar rätt, får du några varningar ändå - det kan vara Gatsby leta efter innehåll som du inte har skrivit än.
Du kan nu se Gatsby-Starter-standard i webbläsaren.
http: // localhost: 8000 /
Visa Graphiql, en webbläsare IDE, för att utforska din webbplatss data och schema.
http: // localhost: 8000 / ___ graphql
Observera att utvecklingsbyggnaden inte är optimerad. För att skapa en produktionsbyggnad, använd Gatsby Build.
Om Gatsby Standard Starer (höger) är inte vad du får, kolla din WordPress-webbplats är inte på en underdomän, att det definitivt använder HTTPS eller HTTP och att du har samma i dina inställningar.
Nu kan vi gå till http: // localhost: 8000 / och se vår Gatsby-webbplats!
Du kanske har märkt att det inte finns något WordPress-innehåll här. Detta beror på att vi inte har sagt Gatsby vad man ska göra med det än. Innan vi gör det, låt oss bara kolla vi har faktiskt fått vårt innehåll tillgängligt för Gatsby. För att göra det, besök den här webbadressen:
http: // localhost: 8000 / ___ graphql
Detta inbyggda verktyg heter Graphiql och är en annan hemlig kraft i Gatsby.
GraphQL liknar vila: det är ett sätt att fråga data. Men med GraphQL kan du interagera med dina data mycket lättare. Graphiql (en visuell IDE för GraphQL) kan visa oss några av dessa tricks. På den vänstra panelen, försök att skriva följande:
{
allwordpresspost {
kanter {
nod {
id
snigel
status
mall
formatera
}
}
}
}
Detta kan se lite ut som JSON men det är det inte. Det är ett nytt fråge språk som jag tror att en dag i stor utsträckning kommer att ersätta vila som ett sätt att kommunicera med API.
Vad fick du när du tryckte Ctrl + Enter i Graphiql? Du kommer förhoppningsvis att ha sett dina Wordpress-inlägg och sida på höger sida av skärmen.
Vi kommer faktiskt att använda den här frågan i vårt nästa steg, så håll det praktiskt! Du kanske vill se vilka andra data du kan få med Graphiql medan du är här. Om du vill göra det, försök flytta markören runt och skriva antingen Ctrl + Space och / eller Ctrl + Enter. Som kommer att avslöja andra grupper av innehåll.
Så vi har nu innehåll i Gatsby. Därefter måste vi visa den.
För detta nästa steg kommer vi att använda gatsby-node.js fil.
gatsby-node.js är en fil du kan använda för att interagera med Gatsbys "node API". Här kan du styra hur din webbplats genereras och skapa sidor, inlägg och mer.
Vi ska skriva några instruktioner här för att berätta Gatsby vad du ska göra med våra data:
Const Path = Kräv (`Path`);
Exports.CreatePages = ({graphql, Boundactorcreators})
= & gt; {
const {createpage} = Boundactorcreators
returnera nytt löfte ((lösa, avvisa) = & gt; {
GraphQL (
`
{
allwordpresspost {
kanter {
nod {
id
snigel
status
mall
formatera
}
}
}
}
`
) .Then (resultat = & gt; {
om (resultat.errors) {
Console.log (resultat.errors)
Avvisa (resultat.errors)
}
const posttemplate = path.resolve (`./src/templates/
post.js`)
resultat.data.allwordpresspost.edges.foreach (Edge = & gt; {
skapa sida({
PATH: `/ $ {edge.node.slug} /`,
Komponent: Posttemplate,
sammanhang: {
ID: edge.node.id,
},
})
})
lösa()
})
})
}
Den här koden skapar sidor från vår GraphQL-fråga och för varje sida kommer den att använda en mall som vi har definierat ( /src/templates/post.js ). Så nästa måste vi skapa den filen!
Inne i / src / mappen, skapa en mapp som heter mallar och en fil inuti det som heter post.js . Lägg till i det den här koden:
Import reagerar från "reagera"
Importera hjälm från "Reageringshjälm"
klass posttemplate förlänger reaktionera {
framställa() {
const post = this.props.data.wordpresspost;
const slug = this.props.data.wordpresspost.slug;
lämna tillbaka (
& lt; div & gt;
& lt; hjälm titel = {`$ {titlestring} | $ {sititle} `} / & gt;
& lt; h1 farliga setinnerhtml = {{__html: post.title}} / & gt;
& lt; div farliga setinnerhtml = {{__html: post.content}} / & gt;
& lt; / div & gt;
)
}
}
Exportera standard pagetemplate
Exportera Const Query = Graphql`
Query CurrentPost ($ ID: String!) {
WordPresspost (ID: {EQ: $ ID}) {
titel
innehåll
snigel
}
webbplats {
sitemetadata {
titel
}
}
}
Detta använder en annan GraphQL-fråga för att få data om den specifika posten som den har matats av gatsbynode.js filen, då använder det för att göra det ut i webbläsaren.
Om du snabbt vill se en lista över alla dina inlägg kan du skriva http: // localhost: 8000 / a i din webbläsares adressfält. Detta tar dig till en utveckling av utveckling 404, som listar alla dina inlägg. Klicka på en för att besöka det!
Vi har skrivit ytan av hur man använder WordPress som en huvudlös CMS och jag hoppas jag har introducerat dig till några intressanta koncept och verktyg som du kanske kan använda och experimentera med i framtiden.
Det finns mycket mer till den här historien och mina kollegor och jag har bloggat om det i stor utsträckning på Indigo träd . Jag har också skrivit mer på min personliga blogg, Läckra reverie .
Var vänlig och håll kontakten med mig via dessa kanaler och på Twitter för att höra mer spännande utveckling i världen av Headless CMS!
Denna artikel publicerades ursprungligen i utgåva 308 av netto , världens bästsäljande tidning för webbdesigners och utvecklare. Köp nummer 308 här eller prenumerera här .
Relaterade artiklar:
(Bildkredit: Antony Ward) I Maya är blandningsformer eller Morph-mål som de är kända, ett kraftfullt sätt att f�..
(Bildkredit: Antony Ward) Möjligheten att utföra retopologi i Maya är en användbar skicklighet. Retopologi blir e..
Atypique-studio: innehåller texturer från poliigon.com - Texturer får inte omfördelas När jag började arbeta me..
I verkliga fotografering är ljusstrålar på sin mest synliga när de har en yta för att studsa, som damm, pollen eller en dimm..
I den här handledningen visar jag dig hur man målar mystiska runor som verkar glöda. Min formel för att måla glödande saker..
Clarisse är en relativt ny applikation, och det är mer än bara en återgivningsmotor, ett layout eller ser utvecklingsverktyg. CLARISSE frigör konstnärerna från datorns begr..
Med Frauded utrymme Att vara vad det är - ett fritt-to-play team combat spel - fartygen och deras förmågor är ..
Vi har alla haft ett spel med Liquify-verktyget i Photoshop, men i den senaste iterationen av Photoshop CC, Adobe ..