Beach Theme To-Do list
งานที่ต้องทำสำหรับ Drupal On The Beach ก็มี 3 ส่วนหลักๆ และการทำธีมสำหรับแจกจ่ายจะมีเรื่องให้ต้องคำนึงมากกว่าการทำธีมสำหรับเว็บไซต์เพียงเว็บเดียวพอสมควร เพื่อให้มันใช้งานได้กับเว็บไซต์หลากหลายรูปแบบ ก็ต้องตรวจสอบกันหลายๆแง่มุม
Design พร้อมรับฟังไอเดียใหม่ๆเสมอ ตอนนี้เลย์เอาต์น่าจะได้ที่แล้ว แต่ยังขาดการตกแต่งภายใน
- Graphic Style ธีมนี้มีสถานที่แล้ว (ชายหาด) แต่ยังไม่มีเรื่องราวที่สร้างความน่าสนใจ (ยังไม่มีส่ิงมีชีวิตปรากฏ) กำลังหาวิธีเพิ่มชีวิตชีวาให้มัน (Thai?, Life Style?, Playful? ใส่ร้านส้มตำไก่ย่างชายทะเล คงได้บรรยากาศพิลึก)
- User Interface เรื่องนี้ยากกว่ากราฟิคซะอีก เพราะมันไม่ใช่แค่การตกแต่ง ต้องทำให้ "หน้าตาไปวัดไปวาได้ แต่ไม่ไร้ประโยชน์" ทั้งอินเตอร์เฟสโดยรวม และ รายละเอียดเฉพาะส่วน (menus, blocks, links) เพื่อให้ผู้ใช้ลืม UI (อันน่าเกรงขาม) ของ Drupal
- CSS เป็นงานปกติของการทำธีม แต่ธีมสำหรับดรูปัลควรคำนึงถึง RTL version ด้วย เพราะ Drupal 6 รองรับผู้ใช้ภาษาที่เขียนจากขวาไปซ้ายโดยอัตโนมัติ การใส่สไตล์ที่ใช้ได้เฉพาะ LTR ก็ต้องมีคอมเมนต์ไว้ด้วย เพื่อให้ทำ *-rtl.css ได้สะดวกขึ้น
- IE bug fix ดูสถิติใน analytics ของ drupal.in.th แล้ว คงเมินเฉยต่อ IE6 ไม่ได้ เตรียมแก้บั๊กในเลย์เอาต์และกราฟิคได้เลย เพราะผมตั้งใจใช้ไฟล์ semi-tranparent png เพื่อให้เปลี่ยนสีพื้นหลังได้ง่าย และดูเนียนกว่าไฟล์ gif (ทางแก้ระยะยาว ถ้าเป็นไปได้ก็ช่วยกันป่าวประกาศให้แฟนดรูปัลทั้งหลายเลิกใช้ IE6 นะครับ)
Hard Code / Features (PHP / Drupal API) เนื่องจากธีมนี้หยิบเอาตัวอย่างโค้ดจากหลายธีมมาใช้ บางฟังชั่นอาจรวบเข้าด้วยกันได้ หรือมีวิธีการที่ดีกว่าที่ผมเขียนไว้ เพื่อประสิทธิภาพในการแสดงผลและความปลอดภัย ส่วนนี้คงให้ คุณ sugree และ คุณ kong ช่วยดูและตรวจสอบเป็นหลักเลย เพราะผมไม่ใช่โปรแกรมเมอร์ บางทีรู้ว่าต้องการอะไร แต่เขียนโค้ดไม่ได้
- Theme settings ไม่มีอะไรมาก ถ้าต้องการใส่ฟีเจอร์ใหม่ก็ใช้ Forms API เพื่อพ่วงเข้ากับ template.php
- function css_rearrange($css) ฟังชั่นนี้จะเอาสไตล์ดั้งเดิมของดรูปัลออกเกือบหมด แล้วใส่ไฟล์ CSS Framework ไว้ก่อนสไตล์อื่นๆ เพื่อลดปัญหาการโหลด external CSS เยอะเกินเหตุ และ override สไตล์ดั้งเดิมได้ง่ายขึ้น ในไฟล์ drupal6-core.css ไฟล์เดียว (เอามาจาก ZEN) โดยหลักการมันน่าจะดี แต่ผมไม่รู้ว่ามันมีผลกระทบต่ออย่างอื่นรึเปล่า
- ฟีเจอร์อื่นๆที่มี ก็อย่างเช่น $vars['meta'] เพิ่ม meta ใน head เพื่อประโยชน์ทาง SEO, $vars['nav_access'] ซ่อนไว้สำหรับ screen reader ให้ผู้ใช้สามารถข้ามไปอ่านเนื้อหาหรือเมนูหลักได้ง่ายขึ้น
Documentation อาจไม่ถึงขั้นต้องเป็น Handbook เพราะธีมไม่ได้ซับซ้อนเหมือนโมดูล แต่ถ้ามีคนเขียนหน้า Project Description + README ให้จะดีมากเลย
ตอนนี้ผมกำลังหาไอเดียเพิ่มเติมมาทำ UI ของ menus, blocks และ forum ถ้านึกอะไรออก จะมาบอกเพิ่ม ก็จะค่อยๆทยอยทำไปเท่าที่มีเวลาว่าง

เพิ่มเติมอีกนิด ตอนนีี้ยังไม
เพิ่มเติมอีกนิด
ตอนนีี้ยังไม่ต้องแก้ไขไฟล์ css นะครับ เพราะ UI ยังไม่ลงตัว ผมต้องทำกราฟิคเพิ่ม หลังจากนั้นค่อยตกแต่งมัน
ไม่ค่อยชอบใจระบบ theme
ไม่ค่อยชอบใจระบบ theme settings ของดรูปัลเท่าไร ตอนดูโค้ดของ Acquia Marina ครั้งแรกแทบกรี๊ด เพราะมันใช้วิธี define default theme settings ไว้สองที่ คือในไฟล์
theme-settings.phpกับtemplate.phpและมีโค้ดซ้ำกันค่อนข้างเยอะในส่วนหัวของทั้งสองไฟล์ ซึ่งถ้ามี setting ซับซ้อนกว่านี้ จะทำให้ maintain ลำบากรู้สึกว่ามันไม่เป็นไปตามวิถีทางของดรูปัลยังไงก็ไม่รู้
ตอนทำธีม Inf08 เลยลองใช้วิธีแยกโค้ดส่วนที่ซ้ำกันออกมาเป็นอีกไฟล์นึงต่างหาก ก็รู้สึกว่าโค้ดสะอาดขึ้น (ส่วน
theme settingsจะมี 3 ไฟล์ --theme-settings.php,theme-settings.inc,template.php)แต่เท่าที่ดูตอนนี้ส่วน theme settings ของ Beach ยังดูโอเคอยู่ คิดว่ายังไม่จำเป็นต้องแยกไฟล์ แต่ถ้ามันยุ่งกว่านี้ก็น่าจะแยกไฟล์นะ (มั้ยฮึ!?)
ส่วนฟังก์ชัน
css_rearrange($css)ผมเอาโค้ดของ @sugree มาดัดแปลงนิดหน่อย คิดว่าน่าจะทำงานได้ตามที่ @gibbo ต้องการผมเจอ warning ใน
ผมเจอ warning ใน template.php,v 1.7
คนอื่นเจอไหมครับ?
แก้ละ เหมือนบางครั้งมันจะไม่
แก้ละ
เหมือนบางครั้งมันจะไม่มีตัวแปร
$vars['css']ในphptemplate_preprocess()ครับโอ้ 1.8
โอ้ 1.8
ไม่เจอ
ไม่เจอ
เรื่องแยกไฟล์หรือไม่
เรื่องแยกไฟล์หรือไม่ วินิจฉัยได้เลยครับ
ช่วงนี้ผมกำลังหัดใช้ ubercart
ช่วงนี้ผมกำลังหัดใช้ ubercart อยากเป็นเจ้าของร้านค้า เลยขอพักเรื่องธีมชั่วคราว
กำลังหา แรงบันดาลใจ
กำลังหา แรงบันดาลใจ มาทำกราฟิค ใครเจอ บรรยากาศริมหาดหรือใต้น้ำแบบโดนๆ ช่วยแนะนำด้วย จะเอามาลอก :P
อยากให้ธีมนี้เสร็จ ก่อนที่ฤดูร้อน(ตับแตก)จะผ่านไป
เพื่อให้ช่วยกันทดสอบได้ง่ายขึ
เพื่อให้ช่วยกันทดสอบได้ง่ายขึ้น ผมปล่อย 6.x-0.x-dev แล้ว แต่รอให้มันแพ็คไฟล์ 12 ชั่วโมง ติดตามได้ที่ http://drupal.org/project/beach
ออกเร็วเกินคาด
ออกเร็วเกินคาด http://drupal.org/node/413052/release