มาหัดเขียนบล็อกด้วย Middleman ตอนที่ 2 (Custom Layout)
Table of Contents
- มาหัดเขียนบล็อกด้วย Middleman ตอนที่ 1 : Overview
- มาหัดเขียนบล็อกด้วย Middleman ตอนที่ 2 : Custom Layout
- มาหัดเขียนบล็อกด้วย Middleman ตอนที่ 3 : Partials Template
- มาหัดเขียนบล็อกด้วย Middleman ตอนที่ 4 (จบ) : Deployment
หลักจากที่ มาหัดเขียนบล็อกด้วย Middleman ตอนที่ 1 กันไปแล้ว ซึ่งบทความนั้นจะพูดถึง Overview ของ Middleman มาในบทความนี้ จะเป็นการทำการ Custom Middleman รวมถึงจัด CSS/Layout ใหม่
Getting Started
เริ่มต้น จะใช้ธีม Clean Blog เพื่อทำการแปลงจาก Template HTML เป็น Middleman
ตัวโปรเจ็คของ Middleman จากบทความที่แล้ว ที่ชื่อ my_blog
จะมีโครงสร้างดังนี้
ชำแหละธีม Clean Blog
เมื่อเราเลือกใช้ Clean Blog ก็ถึงเวลาชำแหละดูข้างในซักหน่อย ว่ามีไฟล์อะไรบ้าง โดยสามารถดาวน์โหลดได้จากลิงค์ข้างบน หรือจะโคลนจาก Github ก็ได้
ภายในโปรเจ็คของ Clean Blog จะมีไฟล์ประมาณนี้
สิ่งที่เราสนใจคือไฟล์
index.html
: เป็นหน้าแรกของเว็บไซต์ซึ่งจะเอาไว้แสดง Post ต่างๆpost.html
: หน้ารายละเอียดของแต่ละ Postabout.html
: หน้า Page Aboutcontact.html
: หน้า Page Contact
และไฟล์ CSS/JS อื่นๆ เราจะไม่ทำการ Custom จะใช้ default ของ Clean Blog ไปเลย
เข้าใจโครงสร้างของ Middleman
ก่อนที่เราจะทำการ Custom ได้เราต้องเข้าใจโครงสร้างของไฟล์ Middleman เพิ่มเติมซักหน่อย
เมื่อลองเข้าไปดูโฟลเดอร์ source
ของ my_blog
ที่สร้างจาก middleman จะเห็นว่ามีไฟล์ดังนี้
index.html.erb
: ก็คือหน้า index ของเว็บเรา โดยมี extension เป็น erb คือสามารถเขียนโค๊ด ruby ลงไปใน html ได้layout.erb
: เป็นไฟล์ default layout ของเว็บเรา บางครั้งหน้าเว็บแต่ละหน้า จะมี header, navbar เหมือนๆกัน เราก็แค่สร้าง layout อันนี้ แล้วเปลี่ยนแค่เนื้อหาภายใน ไม่จำเป็นต้องมี header, navbar เขียนอยู่ทุกๆไฟล์tag.html.erb
: หน้าที่เอาไว้แสดง เวลาเราเลือกกดดูรายละเอียด tagimages/javascripts/stylesheets
: โฟลเดอร์สำหรับเก็บไฟล์ assets ของเรา
เข้าใจ Helper Methods เบื้องต้น
เมื่อลองเปิดไฟล์ layout.erb
เราสามารถแทรกโค๊ด Ruby ลงไปใน HTML ได้เลย ตัวอย่าง เช่น
<% %>
: ไว้สำหรับ statement<%= %>
: เอาไว้สำหรับ output ค่า
Link Helper
เราสามารถที่จะใช้ link_to
เพื่อสร้าง <a href="">
สำหรับ html ได้ ตามตัวอย่าง syntax ข้างล่างนี้
มีค่าเท่ากับ
Assets Helper
เราสามารถใช้ลิงค์สำหรับไฟล์ assets ของเราได้ เช่นไฟล์ js, css แบบนี้
จะมีค่าเท่ากับการลิงค์ไปยังไฟล์ main.css
ในโฟลเดอร์ stylesheets
และไฟล์ main.js
ในโฟลเดอร์ javascripts
Yield
หากสังเกต ในไฟล์ layout.erb
จะเห็นโค๊ดบรรทัดนี้อยู่
มันคือ block ที่เอาไว้สำหรับ inject ค่า content ต่างๆของแต่ละหน้า เช่น หน้า index
ก็จะแสดง content อีกอย่าง หน้า about
ก็จะแสดง content อีกอย่าง
เริ่มต้น Custom
ทำการก็อปปี้ไฟล์ css/js/img ใน Clean Blog มาใส่ไว้ในโฟลเดอร์ source/stylesheets
, source/javascripts
และ source/images
ตามลำดับ
Edit index.html.erb
มาเริ่มลงมือ Edit ไฟล์ index.html.erb
เลย ก่อนการ Edit ก็ทำการ backup ของเก่าไว้ดูก่อนก็ได้
โดยทำการก็อปปี้โค๊ดทั้งหมดจาก index.html
ของ Clean Blog มาใส่ใน index.html.erb
จะได้ดังนี้
จะสังเกตเห็นว่า มีส่วนที่ทำซ้ำๆ นั่นก็คือภายใน <div class="post-preview">
ตรงส่วนนี้เราจะใช้การ วนลูป เพื่อแสดง Post ทั้งหมดของเรา ด้วย
Edit layout.erb
ต่อมาทำการ Edit ไฟล์ layout.erb
เนื่องจากว่า เราจะไม่เอาพวก header หรือ footer ต่างๆ ไว้ในไฟล์ index.html.erb
แต่จะใช้ในไฟล์ layout.erb
แทน
ไฟล์ layout.erb
จะเป็นแบบนี้
และไฟล์ index.html.erb
ก็จะเหลือแค่ส่วนแสดง content เท่านั้น เป็น
เมื่อเปิดหน้าเว็บ ก็จะเห็นเว็บบล็อกของเรา เป็น Clean-Blog แล้ว
หากมีปัญหา run server ไม่ได้ ให้ทำการเพิ่ม
gem 'nokogiri'
ในไฟล์Gemfile
และสั่งbundle install
สำหรับ Part 2 ก็จบเท่านี้ แต่ยังมีหลายๆส่วนที่ต้องปรับ เช่น Author, ย้าย Navbar, Footer (Partials Template), และหน้า Page อื่นๆ เช่น หน้า Post
สำหรับ Source Code Part 2 ดูได้จากที่นี่
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust