Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. CMS

สร้าง CMS: rubyPress

by
Difficulty:IntermediateLength:LongLanguages:

Thai (ภาษาไทย) translation by Muhammad Gufron (you can also view the original English article)

หลังจากสร้างเนื้อหาการจัดการระบบ(CMS)โครงสร้างพื้นฐานแล้วและแท้จริงเซิร์ฟเวอร์โดยใช้ไปแล้ว Node.js คุณพร้อมที่จะพยายามของคุณมือของที่อื่นภาษานะ

เวลานี้ฉันกำลังใช้ปัญญาอ่อนภาษาสร้างเครื่องเซิร์ฟเวอร์ ฉันต้องเจอโดยสร้างโปรแกรมเหมือนกันในหลายภาษาเธอเริ่มได้ใหม่บนวิธีที่ต้อนรับคำสั่งเข้าใจคนโปรแกรม คุณยังเห็นอีกวิธีที่จะเพิ่ม functionality ต้องโปรแกรม เรามาเริ่มกันเลย

ตั้งค่าและการเรียกใช้ไลบรารี

ต้องโปรแกรมในรูบี้คุณจะต้องได้เวอร์ชั่นล่าสุดถูกติดตั้งไว้ในระบบของคุณ หลายปฏิบัติการระบบมาก่อน-ถูกติดตั้งไว้กับรูบี้วันนี้(ระบบลินุกซ์และ O X)แต่พวกเขามักจะมีอายุรุ่นนี้ นี่ comment นคิดเอาเองว่าคุณมีรูบี้รุ่น 2.4 น

ทางที่ง่ายที่สุดที่จะอัพเกรดไปที่เวอร์ชั่นล่าสุดของรูบี้เป็นต้องใช้ RVM น ที่จะติดตั้ง RVM บนระบบลินุกซ์หรือ comment ประเภทต่อไปนี้ในเทอร์มินัล:

รายการนี้จะทำการสร้างความปลอดภัยไว้ซึ่งการเชื่อมต่อดาวน์โหลและแต่งตั้ง RVM น นี่ installs ล่าสุดที่มั่นคงปล่อยตัวของรูบี้ด้วย คุณจะต้องเรียกใหม่ของเชลล์ให้เสร็จการติดตั้ง

สำหรับหน้าต่างคุณสามารถดาวน์โหลดหน้าต่างรูบี้ติดตั้ง ตอนนี้,แพกเกจนี้ขึ้นอยู่กับรูบี้ 2.2.2 ซึ่งจะปกครองไลบรารีแบบใช้ร่งและสคริปต์ในหัดเล่นนะ

เมื่อภาษารูบี้เป็นเหมาะสมที่ติดตั้ง,คุณสามารถตอนนี้ติดตั้งไลบรารีแบบใช้ร่ว รูบี้เหมือนที่ไปและโหนดมีจัดการแพ็คเกจสำหรับกำลังติดตั้งสามงานไลบรารีแบบใช้ร่ว ในเทอร์มินัลประเภทต่อไปนี้:

นี่ installs ที่ Sinatra รูบี้ Handlebars,Kramdown และเพียงน้อยบรรณารักษ์นะ Sinatra เป็นเว็บโปรแกรมเฟรมเวิร์กนะ รูบี้ Handlebars implements ที่ Handlebars templating เครื่องยนต์ในรูบี้ Kramdown เป็น Markdown ต้อง HTML converter น เพียงน้อยคือ Jade ทำงาน-เหมือนกันสมุดแต่มันก็ไม่ได้รวมเป็น Jade ว้างความหมายของคำน ดังนั้นเพิ่มมาสก์เคยอยู่ในข่าวและโพสในบล็อกขอ indexes ตอนนี้ปกติ Jade น

กำลังสร้างค rubyPress นrb แฟ้ม

ด้านบนไดเรกทอรี,การสร้างแฟ้ม rubyPress นrb และเพิ่มตามรหัส. ฉันจะออกความเห็นเรื่องแต่ละส่วนอย่างที่มันเพิ่มไปยังแฟ้ม

สิ่งแรกที่ต้องทำคือการเรียกใช้งานไลบรารีแบบใช้ร่ว ไม่เหมือนกับ Node.js นี่ไม่ใช่โหลดเข้าไปในตัวแปรได้ รูบี้ไลบรารีแบบใช้ร่เพิ่มพวกเขาฟังก์ชันที่ต้องโปรแกรมขอบเขตนะ

ที่ Handlebars องสมุดจะสามารถใช้ถอนกับที่ต่างออกช่วยฟังก์ชันที่ได้ถูกกำหนดไว้ ที่ช่วยฟังก์ชันที่กำหนดไว้เป็นวัน cdate และบันทึก

วันที่ช่วยฟังก์ชันต้องใช้ควันและเวลาปัจจุบันและรูปแบบมันตามรูปแบบข้อความผ่านไปเพื่อผู้ช่วย cdate เป็นที่คล้ายกันยกเว้นผ่านไปวันก่อน ที่บันทึกช่วยทำงานอนุญาตให้คุณกำหนดชื่อของและค่าย มันสร้างขึ้นใหม่ช่วยทำงานกับชื่อของชื่อและผ่านกลับมาที่ค่าย นี่จะอนุญาตให้คุณสร้างตัวแปรที่มีการกำหนดไว้ครั้งนึงและผลกระทบต่อหลายตำแหน่งของนะ ฟังก์ชันนี้ยังต้องไปเวอร์ชั่นซึ่งคาดหวังให้เป็นข้อความที่ชื่อ'|'เป็นเครื่องหมายแยกเลขหลักและค่าย

ต่อส่วนหนึ่งของรหัสสำหรับการโหลด cacheable รายการของเว็บไซต์นะ นี่คือทุกสิ่งทุกอย่างในรูปแบบและแผนผังของชุดตกแต่งและรายการในส่วนรายการย่อยของไดเรกทอรีได้ เป็นโกลบอลตัวแปร$เป็นส่วนครั้งแรกโหลดจากเซิร์ฟเวอร์language แฟ้ม ข้อมูลนั่นคืนนั้นเคยเรียนที่เหมาะสมรายการสำหรับผังแป้นพิมพ์และชุดตกแต่งการกำหนดไว้แล้ว ที่ Handlebars ต้นแบบเครื่องยนต์ใช้ข้อมูลนี้ให้เติมเต็มออกจากต้นแบบนี้

ต่อส่วนบรรจุความหมายของคำสำหรับตลอดเส้นทางนี้ Sinatra คือพักผ่อนให้เต็มที่ compliant เซิร์ฟเวอร์ แต่สำหรับนี่ CMS ฉันจะเพียงใช้ได้ the grammatical type of a word น แต่ละเส้นทางเอารายการจากเส้นทางที่จะส่งไปให้คนฟังก์ชันเพื่อร่วมที่ถูกต้องหน้าอก ใน Sinatra เป็นชื่อของ preceded โดยลำไส้คนเรายาวกำหนดตำแหน่งที่จะใช้เป็นส่วนของเส้นทางที่จะส่งไปยังเส้นทางเครื่องมือจัดการได้ รายการเหล่านี้อยู่ใน params ค่อยจัดการเรื่องโต๊ะด้วย

หน้าฟังก์ชันจะได้ชื่อของหน้าอกจากเส้นทางและผ่านไปที่ผังแป้นพิมพ์ในเงินบางส่วนตัวแปรพร้อมกับพาธเต็มไปที่หน้าแฟ้มต้องการสำหรับฟังก์ชัน processPage น ที่ processPage ฟังก์ชันต้องใช้ข้อมูลและสร้างสถานที่ที่เหมาะสมองหน้าซึ่งมันก็จะกลับมา ในรูบี้คนส่งออกของสุดท้ายฟังก์ชันคือการหวนคืนค่าสำหรับฟังก์ชันนี้

เหรอเบนมีใบคำให้การปฟังก์ชันเหมือนกับหน้าฟังก์ชันยกเว้นแต่ว่ามันได้ผลสำหรับทุกโพสประเภทหน้าอก ฟังก์ชันนี้คาดหวังให้คนโพสประเภทตั้งหมวดหมู่และกลับตัวมันเอง พวกนี้จะทำการสร้างที่อยู่ที่ถูกต้องหน้าเว็บเพื่อให้มีการแสดง

ที่ figurePage ฟังก์ชันใช้ processPage ฟังก์ชันเพื่ออ่านหน้าเนื้อหาจากแฟ้มของระบบได้ ฟังก์ชันนี้อย่างเราได้รับคำขู่แบบนี้เต็มของพาธไปยังแฟ้มโดยไม่ต้องเลื่อนเวลาออกไปหน่อย figurePage งั้นการทดสอบสำหรับแฟ้มที่มีชื่อกับ html ส่วนขยายสำหรับอ่านข้อยังแฟ้ม HTML น ที่สองเลือกสำหรับแพทย์ส่วนขยายสำหรับ Markdown แฟ้ม

Lastly มัเช็คสำหรับแอมเบอร์ส่วนขยายสำหรับเป็น Jade แฟ้ม จำ:แอมเบอร์คือชื่อของห้องสมุดสำหรับการประมวลผล Jade แฟ้มในรูปแบบการสั่งงานไปแล้ว ฉันเก็บมันแบบเดียวกันกับอิน functionality น เป็นยังแฟ้ม HTML คือแค่ผ่านกลับมาในขณะที่ทุก Markdown และ Jade แฟ้มที่จะแปลงเอกสาร HTML ก่อนที่ผ่านกลับมา

ถ้าเป็นแฟ้มไม่ได้เจอผู้ใช้ที่จะได้รับกา 404 หน้าอก ทางนี้ของคุณ"หน้าไม่พบหน้าที่ดูเหมือนอื่นหน้ายกเว้นสำหรับเนื้อหาอยู่ภายใน

ที่ processPage ฟังก์ชัน performs ทั้งหมดต้นแบบ expansions บหน้าข้อมูล มันจะเริ่มโดยการโทรหา figurePage ฟังก์ชันจะต้องไปที่หน้าของเนื้อหาย มันก็โพรเซสที่ผังแป้นพิมพ์ผ่านให้มันกับ Handlebars ต้องขยายรายการต้นแบบนี้

จากนั้นก็ processShortCode ฟังก์ชันจะหาและโพรเซสทั้งหมด shortcodes ในหน้าอก ได้ผลลัพธ์แล้วผ่านไป Handlebars สำหรับครั้งที่สองต้องการอะไรเพิ่มมาสก์เหลือโดย shortcodes น ผู้ใช้อย่างเราได้รับคำขู่แบบนี้คนสุดท้ายผลลัพธ์เดียวกันนั่นแหละ

ที่ processShortCodes ฟังก์ชันต้องใช้ข้อความรัก,เจอกัน shortcode แล้ววิ่งที่กำหนด shortcode กับอาร์กิวเมนต์และเนื้อหาของ shortcode น ฉันใช้ shortcode ประจำวันเพื่อระบวนการที่เนื้อหาสำหรับ shortcodes เช่นกัน

เป็น shortcode เป็น HTML-เหมือนป้ายกำกับที่ใช้-ไม่แล้ว-อยา delimit เป็นการเปิดแท็กกัน/แล้ว-ปิดป้ายกำกับนะ เป็นการเปิดแท็บรรจุสำหรับพารามิเตอร์ที่ shortcode เช่นกัน เพราะฉะนั้นเป็นตัวอย่าง shortcode จะเป็น:

นี่ shortcode กำหนกล่องที่ shortcode นโดยที่ไม่มีพารามิเตอร์กับที่เนื้อหาของนี่มันอยู่ในกล่องน กล่องที่ shortcode ลุงเนื้อหาของที่เหมาะสม HTML ที่จะแสดงกล่องรอบๆข้อความกับข้อความจัดกึ่งกลางในกล่อง ถ้าคุณทีหลังต้องการจะเปลี่ยนแปลงในกล่องต้องเป็นค่าการแสดงผลคุณก็แค่ต้องเปลี่ยนนิยามของ shortcode น นี่ถูกต้องสามารถช่วยผู้พันอาร์ชวู้ดไปหาสตาร์เบิร์น

สิ่งสุดท้ายที่อยู่ในแฟ้มข้อมูลที่$shortcodes ค่อยจัดการเรื่องโต๊ะที่บรรจุ shortcode นกิจวัตรประจำวัน พวกนี้เป็นแบบเรียบง่าย shortcodes แต่คุณสามารถสร้างอื่น shortcodes เป็นต้อย่างที่ซับซ้อนอย่างที่คุณต้องการ

ทุ shortcodes ต้องยอมรับสองคนพารามิเตอร์:args และเนื้อหาอยู่ภายใน พวกนี้เงื่อนมีพารามิเตอร์ของ shortcode และเนื้อหาของที่ shortcodes อยู่ล้อมรอบตัว ตั้งแต่ shortcodes อยู่ข้างในเป็นค่อยจัดการเรื่องโต๊ะฉันเคยเป็น lambda ฟังก์ชันที่กำหนดพวกมัน เป็น lambda ฟังก์ชันเป็นงานโดยไม่มีชื่อหรอก ทางเดียวที่จะหนีพวกนี้ฟังก์ชันคืออกจากค่อยจัดการเรื่องอาเรย์นะ

ทำงานอยู่ที่เซิร์ฟเวอร์

ครั้งหนึ่งคุณต้องสร้าง rubyPress นrb แฟ้มที่อยู่เหนือเนื้อหาของคุณวิ่งได้โดยเซิร์ฟเวอร์ด้วย:

ตั้งแต่ Sinatra เฟรมเวิร์กทำงานกับรูบี้บนลู่นอกทางชั้นโครงสร้างของคุณสามารถใช้โครต้องวิ่งเครื่องเซิร์ฟเวอร์ Pow จะตั้งค่าระบบของคุณเป็นเครื่องแฟ้มสำหรับการทำงานของเซิร์ฟเวอร์ในท้องถิ่นเหมือนมันจะมาจากเว็บไซต์เป็นเจ้าภาพนะ คุณสามารถติดตั้งโครงกับแป้งโดยใช้ตามคำสั่งของอยู่ในบรรทัดคำสั่ง:

เขม่าดินคือบรรทัดคำสั่งประจำวันสำหรับจัดการโครเว็บไซต์บนคอมพิวเตอร์ของคุณ. ต้องได้รับนิดเห็นของคุณเว็บไซต์คุณต้องสร้างอ่อนเชื่อมโยงไปยังโครงการของคุณไดเรกทอรีอยู่ที่~/.pow ไดเรกทอรีได้ ถ้าเซิร์ฟเวอร์อยู่ใน/ผู้ใช้/ทดสอบ/เอกสาร/rubyPress ไดเรกทอรี,คุณจะประมวลผลที่ตามคำสั่งของ:

ที่ ln-s สร้างอ่อนเชื่อมโยงไปยังไดเรกทอรีที่ระบุไว้ก่อนกับระบุชื่อของอย่างที่สอง Pow จะตั้งเป็นโดเมนอยู่บนระบบของคุณกับชื่อของอ่อนโยน ในด้านบวอย่างเช่นกำลังบนเว็บไซต์ http://rubyPress.dev ในเบราว์เซอร์จะโหลดหน้าเว็บจากเซิร์ฟเวอร์

เริ่มเซิร์ฟเวอร์ประเภทที่ตามหลังจากสร้างที่อ่อนนุ่มเชื่อมโยง:

ต้องเรียกใหม่โดยเซิร์ฟเวอร์หลังจากทำบางอย่างรหัสเปลี่ยนแปลงประเภทต่อไปนี้:

rubyPress Main Page
rubyPress หลักหน้า

จะไปที่เว็บไซต์ของในเบราว์เซอร์จะถูกด้านบนภาพรวม Pow จะตั้งค่าเว็บไซต์ที่ http://rubyPress.dev ได้ ไม่สำคัญซึ่งวิธีการคุณใช้รถเรียกโปรแกรมเว็บไซต์เธอจะเห็นคนเดียวกับผลลัพธ์จากหน้าอก

สรุป

งั้นคุณต้องทำมัน อีก CMS แต่ครั้งนี้อยู่ในรูบี้ เวอร์ชั่นนี้เป็นห่าเวอร์ชั่นของทั้งหมด CMSs สร้างขึ้นมาอยู่ในนี้ต่อเนื่อง การทดลองกับรหัสและดูว่าคุณสามารถขยายนี้พื้นฐานเฟรมเวิร์กนะ

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.