Drupal Intensive Course Outline

วันนี้ไปสอน Drupal ให้กับทีมของ @rawitat ที่ศิลปากร (ทับแก้ว สาวเยอะมากครับ) เนื่องจากว่าผมเดาโจทย์ของ @rawitat พลาดไปเล็กน้อย คนฟังไม่ใช่คนธรรมดาแต่เป็นนักเทคนิคมือดี สไลด์ที่เตรียมไปพูด convince เลยไม่ได้ใช้ มาเป็นสอนการใช้งาน Drupal แบบเข้มข้นแทน

และเนื่องจากไม่ได้เตรียมตัวสอนการใช้งาน ก็เลยไปสอนสดที่หน้างาน (คิดตัวอย่างสด) อย่างไรก็ตามลำดับการสอนและโครงสร้างนั้นอิงจากหนังสือ Drupal ที่ผมเขียนกับ @sugree (ใกล้เสร็จแล้วครับ ใกล้จริงๆ) และผลกลับออกมาดี ทั้งที่ใช้เวลาไม่นาน เลยมาจดลำดับเก็บไว้หน่อย เผื่อจะพัฒนาเป็นคอร์ส Drupal Intensive ได้ในอนาคต 10.30-12.15

  • ติดตั้ง Drupal
    • ใช้เวลาเร็วมากเพราะผู้เรียนเป็นเรื่อง web application อยู่แล้ว (โหลดไฟล์มาแล้วแตก tar เองได้ สร้างฐานข้อมูลเองได้ รู้จัก DocumentRoot)
    • จุดที่มีปัญหาเสมอคือ write permission ของ settings.php และต้องสร้างไดเรคทอรี files เองด้วยมือ
  • รู้จักกับ Drupal
    • จุดที่สำคัญมาก คือ ต้องบอกว่า Drupal ไม่มี backend จะช่วยให้ผู้เรียนที่คุ้นกับ CMS ตัวอื่นเข้าใจได้เร็วขึ้นเยอะ (เป็นการปรับ mindset ตั้งต้น)
  • สร้างเนื้อหา (ทุกอย่างในเมนู create content) ลำดับการสอนคือ
    • เริ่มสร้างเนื้อหาตรงไหน
    • เนื้อหามาโผล่หน้าแรกได้อย่างไร
    • แก้ไขเนื้อหาเก่า
    • ระบบ path ของเนื้อหา (/node/n)
    • ความแตกต่างระหว่าง Story กับ Page
    • ตัวเลือกต่างๆ ในหน้า Create content
      • Menu settings (ยังไม่สอน)
      • Input format = การตีความโค้ด
      • Authoring information = ตรงไปตรงมา แต่ต้องให้สังเกตวงกลม autocomplete ในช่อง user
      • Comment settings = ตรงไปตรงมา
      • Revision information = ต้องเทียบกับ diff หรือ wiki จะเห็นภาพ
      • Publishing options = อันนี้ยาก ต้องแสดงให้ดูผลลัพธ์ทุกอัน ว่าติ๊กแล้วมันจะเป็นยังไง
  • หน้าจอ Admin
    • ย้ำเรื่องไม่มี backend
    • วิธีแยกแยะหมวดหมู่ทั้ง 5 ให้เกิด conceptual ว่าอะไรมันควรจะอยู่ตรงไหน
    • จากนั้นแนะนำทีละหมวดหมู่ จากง่ายไปยาก
    • เริ่มจาก Settings เพราะมันคือ "ปรับแต่ง" ตรงกับภาพในใจว่า "Admin คือปรับแต่ง"
      • สอน /settings/site-information ก่อน เพราะคนหัดใช้ Drupal ใหม่ๆ ต้องการแก้ชื่อเว็บเป็นอย่างแรก
      • อย่างอื่นไม่ต้องสอน บอกให้ไปลองเอง
    • ถัดมา Reports ง่ายสุด มันคือ log + รายงานสถานะปัจจุบัน แป๊บเดียวจบ
    • ตามด้วย Content Management
      • แยกเป็น listing ที่ใช้ลบ-แก้ไข คือ comments และ content
      • กับหน้า settings หรือตั้งค่า คือ post settings และ RSS
      • content type ต้องสอนละเอียดโคตรๆ ถึงขั้นสร้าง content type ใหม่ให้ดูจนเห็นภาพ (ไม่ว่า content type อะไร นับเป็น 1 node ต่างกันแค่ property)
      • taxonomy (ข้ามเพราะลืม ในหลักสูตรจริงต้องปรับใหม่)
    • User Management
      • สอนแนวคิดของ Permissions / Roles / Users โดยวาดวงกลมเชื่อมกัน 3 วง
      • Permissions ย้ำว่าหน้าจอนี้สำคัญมาก และอธิบายคำศัพท์พื้นฐานของ Permissions เช่น access, create, edit any, edit own, administer
      • Roles ไม่มีอะไร ตรงไปตรงมา แต่สร้าง roles ใหม่แล้วต้องกลับไปดูหน้า Permissions อีกรอบด้วยว่ามันมี column ใหม่เพิ่มเข้ามา
      • Users ก็ตรงไปตรงมา เพราะมันเป็นหน้า listing เหมือนกับ comments และ content
      • แตะ User settings และ Access control ผิวๆ ไม่สำคัญ
    • Site Building เรื่องยากเก็บไว้หลังสุด
      • Themes ง่ายสุดในบรรดา building ทั้งหมด เพราะทุกคนรู้จัก Themes ก็สอนเปลี่ยนธีม และสอน Theme config เช่น เอาโลโก้ออก เพิ่ม slogan
      • ติดตั้งธีมใหม่ อธิบายโครงสร้าง directory ของ Drupal ในช่วงนี้เลย
      • โครงสร้างของโฟลเดอร์ธีม เปิด .tpl.php กับ .info ให้ดูเล็กน้อย

==พักกินข้าว==

13.15-15.45

  • เก็บตก Taxonomy
    • ความต่างของ Vocab และ Term
    • สอนสร้าง vocab 2 อัน และใส่ term
    • ทดลองใส่ term ให้กับเนื้อหา
    • weight คืออะไร? วิธีการสลับตำแหน่ง term โดยการลาก
    • สอนการตั้งค่า Vocab ทั้งสามแบบ โดยเรียงจากง่ายไปยาก คือ Required, Multiple และ Tags ทั้งหมดต้องทำตัวอย่างให้ดู
  • กลับมาต่อเรื่องเดิมที่ค้างไว้ หน้าจอ Admin ส่วน Site Building
    • Menu
      • ความต่างของ menu กับ menu item
      • อธิบายว่า Navigation menu คือเมนูที่ใช้มาตั้งแต่เช้า
      • สามารถสร้าง menu เพิ่มเองได้ไม่จำกัด
      • ทดลองสร้าง menu item ใน Primary links 2 อัน
      • ทดลองสร้าง menu item ใน Secondary links 1 อัน
      • สอนเทคนิคการสร้าง menu item โดยที่ไม่ต้องมี path จริง (เช่น ใช้ <front> หรือ path เดิมไปก่อน)
    • Blocks ผมว่ามันเป็นเรื่องที่ยากที่สุดใน Drupal แล้ว
      • สอนเรื่อง Blocks คือ square of minor information box โดยยกตัวอย่างจากเว็บจริงอื่นๆ (ผมใช้หน้าข่าวของ CNET ที่เปิดทิ้งไว้ในโน้ตบุ๊กตั้งแต่เช้าก่อนออกจากบ้าน)
      • อธิบายเรื่อง Block และ Region
      • ทดลองย้าย Block ที่มีอยู่เดิม ไปยัง Region อื่นๆ (สำคัญมากคือต้องลองเอา block ที่สร้างขึ้นมาสำหรับ sidebar ไปอยู่ในที่พิสดารอย่าง Header หรือ Footer ให้ดูด้วย)
      • เอา Block ที่อยู่ในหมวด Disabled มาไว้ยัง Region อื่นๆ ให้เห็น
      • สร้าง Block เอง จุดที่ต้องเน้นคือ block description กับ block title มันต่างกันอย่างไร และควรลองสร้าง Block ใหม่แบบใส่ภาพด้วย จะได้ไม่จำกัดว่า block ต้องมีแต่ข้อความ เอาไปสร้าง ad block ได้
      • visibility ของ Block ทั้งสามแบบ ต้องทำตัวอย่างให้ดูทุกแบบ ไม่งั้นงงตาย
    • Modules
      • ความแตกต่างของ Core Required/Core Optional และ Contributed
      • dependency ของ module (ลองเปิด Content translation โดยติด Locale และลองปิดกลับ)
      • การ uninstall module ว่าต่างจาก disable และการลบไฟล์อย่างไร
      • แนะนำ Module ในกลุ่ม Core Optional ทั้งหมดว่า มันทำอะไรได้บ้าง (ไม่ต้องทำให้ดู) เพื่อจะได้รู้ว่า capacity ของ default Drupal installation มีจำกัดอยู่ตรงไหน
      • ทดลองเปิดใช้ module path
      • อธิบายเรื่อง Clean URLs แบบคร่าวๆ (ไม่ได้ให้เปิด Clean URLs เพราะ environment ของผู้เรียนต่างกันมากไป) และสอนการกำหนด path ของ node
  • เนื่องจาก @rawitat ขอมาเป็นกรณีพิเศษ เลยอัด CCK/Views ให้เต็มที่
    • CCK
      • ดาวน์โหลดและติดตั้ง CCK ตามโครงสร้าง directory ที่สอนไว้ เป็นการสอนการติดตั้ง module ไปในตัว
      • อธิบายแนวคิดของ CCK ว่ามันเอาไว้สร้างฟิลด์
      • เปิดใช้ CCK บางตัว คือ Content, Text, Widget
      • เพิ่มฟิลด์ชนิด Text / Text field ให้กับ Story พร้อมทั้งทดลองเขียนเนื้อหาแบบที่เพิ่มฟิลด์แล้ว
      • เปิดใช้ Number เพิ่มเติม
      • เพิ่มฟิลด์ชนิด Number / Select List ให้กับ Story พร้อมทั้งทดลองใช้
    • Views
      • ติดตั้งและเปิดใช้ Views / Views UI
      • อธิบายแนวคิดของ Views ว่ามันคือ filtering output ในแบบต่างๆ
      • เนื่องจาก Views ยากมาก ต้องสอนให้ทำตามตัวอย่างก่อน โดยไม่ต้องสนใจตัวเลือกมากมายใน Views
      • สร้าง Views ใหม่ เป็น selection content by type มีเฉพาะเงื่อนไข filter กำหนด display เป็น Page และเลือกสไตล์เป็น node
      • แสดงการทำงานของ Views ที่สร้างขึ้น โดยเข้าไปยัง path ของ Page ที่สร้าง
      • เพิ่มเงื่อนไขการ sorting ของ Node: postdate จากใหม่ไปเก่า (descending)
      • แสดงการทำงานของ Views ที่อัพเดตใหม่
      • อธิบายเพิ่มว่า display ยังสามารถเป็น block/RSS และเลือกสไตล์เป็น field แทน node ได้ (ไม่ต้องทำให้ดู)
  • ปิดท้ายด้วยการสอนแนวคิด MVC
    • Model = CCK
    • View = Views
    • Control = Drupal + You + some PHP Knowledge
  • โฆษณา Drupal.in.th

จบแล้ว กลับบ้าน

ไม่น่าเชื่อว่าสอนทั้งหมดนี่จบได้ ภายใน 4 ชม. นิดๆ ต้องยกเครดิตให้คนเรียนด้วยว่าเก่งมาก ตามทัน

Comments

โห เจ๋ง เจ๋งงงงง

ขอไปเรียนด้วยคนดิ :P

@iMenn ต้องเข้ารีตนะครับ

สาวๆเยอะ ไม่มีรูปสาวๆมาฝากบ้างเหรอครับ 555

ตั้งแต่ลองทำมา views ยากสุด อันอื่นยังพอมั่วได้ เจอ views นี่ใบ้กินเลย

ที่ว่าสาวเยอะเนี่ย คอร์สนี้มีกี่คนครับ :P

@iPattt

มี @nonggade แต่แตะไม่ได้เดี๋ยวโดนลูกถีบ ผอ. สำนักคอม อิอิ

อยากเรียนมากเลย ไอ้ Intensive Course เรื่อง View กับ CCK เนี่ย

@ripmilla

เดี๋ยวจัดให้ครับ ว่างๆ มาได้เลย

สวัสดีค่ะ กำลังมองหา open source เพื่อใช้สอนนักศึกษาค่ะ จะลองเอาไปใช้ดูนะคะ ไม่รู้จะทำได้หรือเปล่า

Add new comment