ก่อนอื่นฉันเคยได้ยินเกี่ยวกับวิธีการ CMS แบบหัวขาดในการพูดคุยที่ฉันดูจาก Drupal Twin Cities ฉันชอบความคิดที่จะแยกความกังวลระหว่างเนื้อหาการเขียนและดู
ฉันมีประสบการณ์แล้วว่าเซิร์ฟเวอร์หนึ่งสามารถลงไปได้อย่างง่ายดายนำเว็บไซต์ทั้งหมดออกไปข้างนอกนำไปสู่การหยุดนาทีหรือชั่วโมงของการหยุดหัวใจ (มี 24 บนของฉัน) ฉันได้เห็นด้วยวิธีที่ไซต์ที่ใช้ Monolithic CMS สามารถประสบความสำเร็จในการประนีประนอมและใช้ความพยายามอย่างมากในการซ่อมแซม (ที่ใช้เวลาทำงานเกินสองวัน) สำหรับช่วงของ เว็บโฮสติ้ง ตัวเลือกผู้ให้บริการตรวจสอบคำแนะนำของเรา
ฉันได้เห็นประโยชน์ของ CDNS (เครือข่ายการจัดส่งเนื้อหา) ที่สามารถเก็บภาพไฟล์เสียงและวิดีโอของคุณบนเซิร์ฟเวอร์ที่ปรับให้เหมาะสมที่สุดสำหรับการจัดส่งที่รวดเร็วและสามารถทำซ้ำไฟล์เหล่านั้นทั่วโลกเพื่อจัดส่งที่รวดเร็วไปยังภูมิภาคเหล่านั้นหากจำเป็น เกิดอะไรขึ้นถ้าเว็บไซต์ทั้งหมดของคุณสามารถได้รับประโยชน์จากวิธีนี้
●คอมพิวเตอร์ที่มีการเชื่อมต่ออินเทอร์เน็ต (OBV)
●ตัวแก้ไขรหัส (Atom หรือรหัส VS)
●เชลล์บรรทัดคำสั่ง / เทอร์มินัล
●การติดตั้ง Node.js รุ่นล่าสุด (คุณสามารถดาวน์โหลด & amp; ติดตั้ง
ที่นี่
)
●เว็บไซต์ WordPress เพื่อรับเนื้อหาจาก หากคุณไม่มีคุณสามารถใช้แพลตฟอร์ม WordPress.com หรือสิ่งนี้ได้
Heroku Build Pack
.
●ไฟล์ต้นฉบับ
จาก github
.
WordPress ออกมาจากกล่องด้วย API ที่เหลือและนั่นคือสิ่งที่เราจะใช้ในการสืบค้นข้อมูลของคุณ ดังนั้นเราจึงไม่ต้องการอะไรอีกเลย! ไซต์ดิสเพลย์ของเราแยกต่างหากจากเว็บไซต์เนื้อหาของเราดังนั้นเราจึงไม่ต้องการ ธีม WordPress หรือการปรับแต่งอื่น ๆ ที่อยู่นอกปลั๊กอินไม่กี่ (ไม่บังคับ) แม้ว่าแน่นอนคุณสามารถเพิ่มสิ่งเหล่านี้ได้หากคุณต้องการ
ข้อยกเว้นคือถ้าคุณต้องการฟิลด์ Meta ที่กำหนดเองสำหรับพื้นที่เนื้อหาเพิ่มเติม คุณอาจใช้ฟิลด์ที่กำหนดเองขั้นสูงเพื่อทำเช่นนั้น คุณสามารถเพิ่มข้อมูลนั้นไปยัง WordPress API โดย ติดตั้งปลั๊กอินนี้ .
ตอนนี้เรามีแหล่งเนื้อหาของเรามาดึงข้อมูลและแสดงผลโดยใช้เครื่องกำเนิดไซต์แบบคงที่ อาวุธที่คุณเลือกในอาณาจักรนี้คือ กูดบี้ เครื่องกำเนิดไฟฟ้าสถิตที่ยอดเยี่ยมที่สร้างขึ้นด้วย JavaScript (ดูสิ่งเหล่านี้ สร้างเว็บไซต์ เลือกเป็นวิธีง่ายๆในการสร้างเว็บไซต์)
หากคุณกำลังมองหาวิธีที่ดีในการสร้างทักษะ JavaScript ของคุณและเรียนรู้ตอบสนองโดยการติดรหัสบางอย่างฉันขอแนะนำให้ลอง Gatsby เพื่อทำเช่นนั้น ฉันได้เรียนรู้ตัวเองมากมายด้วยการเล่นกับมัน
ก่อนอื่นให้ติดตั้งเครื่องมือบรรทัดคำสั่งที่ช่วยให้เราสร้างเว็บไซต์ Gatsby:
npm install -global gatsby-cli
ตอนนี้นำทางไปยังโฟลเดอร์ที่คุณต้องการเก็บเว็บไซต์ของคุณและเรียกใช้คำสั่งนี้:
gatsby new blog
สิ่งนี้จะสร้างโฟลเดอร์ใหม่ที่เรียกว่า 'บล็อก' และติดตั้ง Gatsby และการพึ่งพาของมันในโฟลเดอร์นี้ เปิดโฟลเดอร์นี้ในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ อาจมีไฟล์จำนวนมากที่นั่น ไม่ต้องกังวลเราจะแก้ไขโดยตรง gatsby-config.js , gatsby-node.js ไฟล์และ src โฟลเดอร์ซึ่งเป็นที่แม่แบบของเราอาศัยอยู่
หากคุณมีไฟล์จำนวนมากเพื่อเก็บมันคุ้มค่าที่จะอัพเกรดของคุณ การจัดเก็บเมฆ .
ขั้นตอนแรกที่เราต้องการใช้คือการดึงเนื้อหาของเราออกจาก API ของเว็บไซต์ WordPress
ในการทำเช่นนั้นเราจะติดตั้ง gatsby-source-wordpress ปลั๊กอิน prewrtens สำหรับ WordPress นี่เป็นหนึ่งในเหตุผลหลักที่ฉันรัก Gatsby - คุณสามารถรับข้อมูลจากแหล่งต่าง ๆ ที่หลากหลาย เครื่องกำเนิดไซต์แบบคงที่จำนวนมากถูก จำกัด ให้ใช้ไฟล์ Markdown แต่ Gatsby มีความยืดหยุ่นมาก
ระบบนิเวศปลั๊กอินของ Gatsby เป็นผู้ใหญ่มาก มีการโหลดหลายวิธีในการรับข้อมูลของคุณและฟังก์ชั่นที่ฉลาดอื่น ๆ มากมายที่มีประโยชน์เช่นกัน
ในการติดตั้งปลั๊กอินการเปลี่ยนไดเรกทอรีเป็นไซต์ Gatsby ใหม่ของคุณโดยใช้คำสั่งนี้: บล็อกซีดี .
ตอนนี้เรียกใช้คำสั่งนี้: การติดตั้ง NPM --save gatsbysource-wordpres s.
เมื่อเสร็จแล้วถึงเวลาที่จะเปิดไฟล์ Gatsby-config.js คุณจะเห็นว่ามีการตั้งค่าพื้นฐานบางอย่างในสถานที่ที่ Gatsby ช่วยให้เราผิดนัด เรากำลังจะสร้างบนเพื่อกำหนดค่าปลั๊กอินของเราที่นี่:
module.exports = {
Sitemetadata: {
ชื่อเรื่อง: 'Gatsby เริ่มต้นเริ่มต้น'
},
ปลั๊กอิน: [
'Gatsby-plugin-React-Helmet'
{
แก้ไข: "gatsby-source-wordpress"
ตัวเลือก: {
Baseurl: "my-wordpress-site.com"
โปรโตคอล: "https",
hostingwpcom: false,
useacf: จริง
SearchandreplaceContenturls: {
Sourceurl: "https://my-wordpress-site.com",
Replacementurl: "https://my-static-site.com"
}
},
},
],
}
คุณสามารถตรวจสอบได้โดยเปิดเทอร์มินัลการพิมพ์ Gatsby พัฒนา และดูว่าเกิดอะไรขึ้น ถูกเตือน! แม้ว่าคุณจะได้รับการตั้งค่าที่ถูกต้องหรือไม่คุณจะได้รับคำเตือนต่อไป - นี่อาจเป็น gatsby ที่กำลังมองหาเนื้อหาที่คุณยังไม่ได้เขียน
ตอนนี้คุณสามารถดู Gatsby-Starter-Default ในเบราว์เซอร์ได้แล้ว
http: // localhost: 8000 /
ดู Graphiql, IDE ในเบราว์เซอร์เพื่อสำรวจข้อมูลและสคีมาของเว็บไซต์ของคุณ
http: // localhost: 8000 / ___ graphql
โปรดทราบว่าการสร้างการพัฒนาไม่ได้รับการปรับให้เหมาะสม ในการสร้างการสร้างการผลิตให้ใช้ Gatsby Build
หาก Gatsby เริ่มต้น Starer (ขวา) ไม่ใช่สิ่งที่คุณได้รับตรวจสอบไซต์ WordPress ของคุณไม่ได้อยู่ในโดเมนย่อยที่มันใช้ HTTPS หรือ HTTP และที่คุณมีเหมือนกันในการตั้งค่าของคุณ
ตอนนี้เราสามารถไปที่ http: // localhost: 8000 / และดูเว็บไซต์ gatsby ของเรา!
คุณอาจสังเกตเห็นว่าไม่มีเนื้อหา WordPress ที่นี่ นี่เป็นเพราะเรายังไม่ได้บอกกับ Gatsby ว่าจะทำอย่างไรกับมัน ก่อนที่เราจะทำอย่างนั้นเราเพียงแค่ตรวจสอบเราได้รับเนื้อหาของเราที่ Gatsby ในการทำเช่นนั้นเยี่ยมชม URL นี้:
http: // localhost: 8000 / ___ graphql
เครื่องมือในตัวนี้เรียกว่า Graphiql และเป็นอีกหนึ่งพลังลับของ Gatsby
Graphql คล้ายกับส่วนที่เหลือ: เป็นวิธีการค้นหาข้อมูล แต่ด้วย Graphql คุณสามารถโต้ตอบกับข้อมูลของคุณได้ง่ายขึ้น Graphiql (Iside Ide สำหรับ Graphql) สามารถแสดงเทคนิคเหล่านี้ให้เราได้ ที่แผงด้านซ้ายลองพิมพ์สิ่งต่อไปนี้:
{
AllwordPressPost {
ขอบ {
โหนด {
id
กระสุน
สถานะ
แม่แบบ
รูปแบบ
}
}
}
}
นี่อาจดูเหมือน JSON แต่ไม่ใช่ มันเป็นภาษาคิวรีใหม่ที่ฉันคิดว่าวันหนึ่งจะแทนที่ส่วนที่เหลือเป็นวิธีการสื่อสารกับ API
คุณได้อะไรเมื่อคุณกด Ctrl + Enter ใน Graphiql? คุณหวังว่าจะได้เห็นโพสต์ WordPress ของคุณและหน้าทางด้านขวามือของหน้าจอ
เราจะใช้แบบสอบถามนี้จริง ๆ ในขั้นตอนต่อไปของเราดังนั้นให้สะดวก! คุณอาจต้องการดูว่าข้อมูลอื่น ๆ ที่คุณสามารถรับได้ด้วย graphiql ในขณะที่คุณอยู่ที่นี่ หากคุณต้องการทำเช่นนั้นให้ลองเลื่อนเคอร์เซอร์ไปรอบ ๆ และพิมพ์ Ctrl + Space และ / หรือ Ctrl + Enter ที่จะเปิดเผยกลุ่มเนื้อหาอื่น ๆ
ดังนั้นตอนนี้เรามีเนื้อหาใน Gatsby ต่อไปเราต้องแสดงมัน
สำหรับขั้นตอนต่อไปนี้เราจะใช้ประโยชน์จาก gatsby-node.js ไฟล์.
gatsby-node.js เป็นไฟล์ที่คุณสามารถใช้เพื่อโต้ตอบกับ "โหนด API" ของ Gatsby ที่นี่คุณสามารถควบคุมวิธีการสร้างเว็บไซต์ของคุณและสร้างหน้าโพสต์และอื่น ๆ ได้อย่างไร
เราจะเขียนคำแนะนำที่นี่เพื่อบอก Gatsby ว่าจะทำอย่างไรกับข้อมูลของเรา:
const path = ต้องการ (`path`);
Export.createpages = ({{graphql, brondactioncreators})
= & gt; {
Const {createPage} = ขอบเขต
ส่งคืนสัญญาใหม่ ((แก้ไขปฏิเสธ) = & gt; {
graphql (
`
{
AllwordPressPost {
ขอบ {
โหนด {
id
กระสุน
สถานะ
แม่แบบ
รูปแบบ
}
}
}
}
`
). จากนั้น (ผลลัพธ์ = & gt; {
ถ้า (ผลลัพธ์. enrors) {
console.log (enrors)
ปฏิเสธ (ผลลัพธ์. enrors)
}
const posttemplate = path.resolve (`./src/templates/
โพสต์.js`)
ผล.data.allwordpresspost.edges.foreach (edge = & gt; {
สร้างเพจ({
เส้นทาง: `/ $ {edge.node.lug} /`
ส่วนประกอบ: posttemplate,
บริบท: {
ID: edge.node.id
},
})
})
แก้ไข ()
})
})
}
รหัสนี้สร้างหน้าเว็บจากแบบสอบถาม Graphql ของเราและสำหรับแต่ละหน้ามันจะใช้เทมเพลตที่เรากำหนด ( /src/templates/post.js . ดังนั้นต่อไปเราต้องสร้างไฟล์นั้น!
ภายใน / src / โฟลเดอร์สร้างโฟลเดอร์ที่เรียกว่าเทมเพลตและไฟล์ภายในที่เรียกว่า โพสต์. js . เพิ่มลงในรหัสนี้:
นำเข้าตอบสนองจาก 'ตอบโต้'
หมวกกันน็อกนำเข้าจาก 'ปฏิกิริยาหมวกกันน็อก'
class posttemplate ขยาย react.component {
แสดงผล () {
const post = this.props.data.wordpresspost;
const slug = this.props.data.wordpresspost.lug;
กลับมา (
& lt; div & gt;
& lt; helmet title = {`$ {titletring} | $ {{sitetitle} `} / & gt;
& lt; h1 อันตรายเซ็ต mlm = {{__html: post.title}} / & gt;
& lt; DIV อันตรายเซ็ตินเนอร์HTML = {{__html: post.content}} / & gt;
& lt; / div & gt;
)
}
}
ส่งออก pagetemplate เริ่มต้น
query cont export = graphql`
แบบสอบถามปัจจุบัน ($ id: string!) {
WordPressPost (ID: {eq: $ id}) {
หัวข้อ
เนื้อหา
กระสุน
}
เว็บไซต์ {
Sitemetadata {
หัวข้อ
}
}
}
สิ่งนี้ใช้แบบสอบถาม Graphql ที่แตกต่างกันเพื่อรับข้อมูลเกี่ยวกับโพสต์ที่เฉพาะเจาะจงที่ได้รับการป้อนโดย gatsbynode.js ไฟล์จากนั้นใช้ทำปฏิกิริยาเพื่อแสดงผลในเบราว์เซอร์
หากคุณต้องการดูรายการโพสต์ทั้งหมดของคุณอย่างรวดเร็วคุณสามารถพิมพ์ http: // localhost: 8000 / a เข้าไปในแถบที่อยู่ของเบราว์เซอร์ของคุณ สิ่งนี้จะนำคุณไปสู่การพัฒนาหน้า 404 ซึ่งแสดงโพสต์ทั้งหมดของคุณ คลิกที่หนึ่งเพื่อเยี่ยมชม!
เรามีรอยขีดข่วนพื้นผิวของวิธีการใช้ WordPress เป็น CMS หัวขาดและฉันหวังว่าฉันจะแนะนำให้คุณแนะนำแนวคิดและเครื่องมือที่น่าสนใจที่คุณอาจสามารถใช้และทดสอบในอนาคต
มีเรื่องราวนี้มากขึ้นและเพื่อนร่วมงานของฉันและฉันได้บล็อกเกี่ยวกับมันอย่างกว้างขวางที่ ต้นคราม . ฉันได้เขียนมากขึ้นในบล็อกส่วนตัวของฉัน ภวังค์แสนอร่อย .
โปรดติดต่อกับฉันผ่านทางช่องเหล่านั้นและบน Twitter เพื่อฟังพัฒนาการที่น่าตื่นเต้นมากขึ้นในโลกของ CMS หัวขาด!
บทความนี้ได้รับการตีพิมพ์ครั้งแรกในฉบับที่ 308 ของ สุทธิ นิตยสารที่ขายดีที่สุดในโลกสำหรับนักออกแบบเว็บไซต์และนักพัฒนา ซื้อปัญหา 308 ที่นี่ หรือ สมัครสมาชิกที่นี่ .
บทความที่เกี่ยวข้อง:
(เครดิตภาพ: Jason Parnell-Brookes) ข้ามไปที่: Photo..
ข้ามไปที่: เครื่องมือเปลี่ยนสี ..
Adobe มอบหมายให้ฉันสร้างภาพประกอบเพื่อแสดงแนวคิดของ Multilocalism และข้างต้นค�..
ด้วยการถือกำเนิดของเกมมือถือและอินดี้ วีด..
สำหรับการประชุมเชิงปฏิบัติการนี้ฉันกำลังทาสีหนึ่งในวิชาที่ฉันชอ�..