Planet Drupal Thailand

The Drupal Book, Reprinted

Thai Drupal Book

ได้รับเมลแจ้งจาก บก. ว่าพิมพ์เพิ่มอีก 3,000 ตอนนี้ยอดรวมคือ 6,500 เล่มจากการพิมพ์สองครั้ง

Few Drupal Updates

ช่วงหลังๆ ผมร้างราจาก Drupal ไปมาก ส่วนหนึ่งเป็นเพราะผันตัวเองออกจากวงการ web development อีกส่วนหนึ่งคือเว็บใหม่ไม่เกิด เว็บเดิมไม่เปลี่ยน เลยไม่ได้ติดตามอะไรมาก

วันนี้เกิดอาการ "คิดถึง" เลยมานั่งอัพเดตโลกของ Drupal เข้าหัวหน่อย

Acquia

<

ul>

  • Acquia กำลังจะออก Drupal Commons เท่าที่ผมเข้าใจมันคือดิสโทรสำหรับงานด้าน social network เทียบได้กับ BuddyPress
  • Acquia มาทำตลาด Drupal โดยเรียกมันว่า "Social Publishing" แทนคำว่า CMS
  • Acquia Drupal คงทำหน้าที่เป็นแค่ดิสโทรที่ช่วยให้ Acquia ทำงานสะดวกขึ้น หวังนวัตกรรมจากมันคงจะยาก
  • <

    p>ที่น่าจับตาคือ Drupal Garden หรือ hosted service ที่ทำรอ Drupal 7 กะว่าออกรุ่นจริงแล้วทำตลาดได้ทันที

  • เพิ่มเติม

    เปิด block cache ใน drupal ถึงแม้มีการใช้ hook_node_grants()

    เพิ่มความเร็วให้กับ Drupal 6.x ด้วย block caching

    ปกติใน drupal core ถึงแม้จะมี block cache คือ cache สำหรับข้อมูลในแต่ละ block ของผู้ใช้ที่ล๊อกอิน แต่ปกติจะไม่ถูกเปิดใช้งาน (สำหรับผู้ใช้ที่ไม่ได้ล๊อกอิน จะ cache ทีเดียวทั้งหน้าเลย เป็น page cache) ซึ่งเราสามารถเปิดใช้งาน block cache ได้ด้วยโมดูล Block Cache Alter และยังสามารถตั้งได้ว่า จะให้ cache เป็น Cache once for everything (global), Per page, Per role, Per role per page, Per user, หรือ Per user per page ตามแต่ลักษณะข้อมูลในแต่ละ block เช่น ถ้า block นี้เนื้อหาเหมือนกันทุกหน้าและทุกผู้ใช้ ก็ตั้งเป็น global, หรือถ้าเนื้อหาจะเปลี่ยนตามกลุ่มผู้ใช้ (User Role) ก็ตั้งเป็น Per role

    อ่านเพิ่มเติม

    ทิปตอน restore Drupal จาก backup

    ตอน restore Drupal จาก backup บางทีเจอปัญหา เลยเขียนมาแบ่งปันกันครับ ^^

    1. ขึ้น error อะไรก็ไม่รู้ ทั้งๆที่ restore ทั้ง database และ ไฟล์ ครบสมบูรณ์  อันที่เจอบ่อยๆเป็นปัญหามาจากส่วน variables และ ธีม ทำดังนี้ส่วนใหญ่แล้วจะหายดี
      • ไป override 'theme_default' ใน settings.php ให้เป็น garland
      • ไปที่หน้าธีมที่ใช้อยู่ admin/build/themes/settings/xxx แก้อะไรนึดหน่อยแล้วบันทึก
      • ไปที่หน้าตั้งค่าเว็บไซต์ admin/settings/site-information แก้อะไรนึดหน่อยแล้วบันทึก
      • เรียก update.php ให้ทำงาน
      • เลิก override 'theme_default'
    2. database crash เจ้ง  ต้อง restore จาก backup แต่ตอนกำลัง restore อยู่ ซึ่งยังไม่สมบูรณ์ จะทำให้ site off-line ได้ยังไง  อันนี้งงอยู่นาน จึงคิดได้ว่า ก็ไปเปลี่ยน password ใน settings.php ให้มันผิดชั่วคราว ก็ได้แล้ว 555

     

    Think

    This one is used technique I just learn from my previous work, but this time I created it my own style. "Think"

    Think outside the boxes

    Think outside the box(es).

    Drupal Login/Logout Menu

    ผมทำ Blognone Mobile ค้างไว้ชาติเศษ ตอนนี้ @lewcpe มาสานฝันให้มันเป็นจริง และมันก็เข้าสู่สถานะแห่งโลกความเป็นจริง นั่นคือการแก้บั๊ก

    (ตอนนี้ทดสอบได้แล้วที่ m.blognone.com)

    ปกติแล้วการล็อกอินของ Drupal นิยมทำเป็น block ไว้ที่หน้าแรก แต่สำหรับ mobile site แล้ว การเอา block พวกนี้มาใส่มันค่อนข้างเปลืองที่ วิธีที่ดีกว่าคือทำลิงก์ใน menu ให้กดไปยังหน้าล็อกอินอีกทีหนึ่ง

    พาธสำหรับหน้าล็อกอินที่รู้จักกันทั่วไปคือ /user

    แต่ปัญหาคือ เมื่อล็อกอินไปแล้ว เมนู "Login" จะยังคงเกะกะให้เห็นอยู่ ซึ่งจะต่างจากเมนู Logout (/logout) ที่จะไม่แสดงจนกว่าเราจะล็อกอิน

    ค้นพบทางแก้ในหน้าโมดูลของ Login Menu สรุปว่า

    • หน้าล็อกอิน ใช้พาธ /user/login
    • หน้าล็อกเอาท์ ใช้พาธ /logout

    มันจะแสดงในสถานะที่เหมาะสมให้กับเราเอง ตอนไหนที่มันไม่สมควรจะอยู่ มันจะหายไปจากสายตา

    cron run fail on ubuntuclub: done

    อวสานอภิมหากาพย์ run cron ก็ คิดว่าปัญหาได้ถูกเคลียร์แล้ว (หวังว่า) ปัจจุบัจจุบันยังคงเจอหน้า error บ้าง แต่น้อยลงมาก

    เหตุที่แก้ได้คือ หลังจากที่ลองรันใน beta.ubuntuclub แล้ว cron ผ่านเรียบร้อยดี ก็เลยลองรันซ้ำดูอีกสักที ปรากฏว่า มันขึ้น error ของ cron มาว่า fail ในตอนที่ feed ข้อมูลในส่อนของ aggregator module ก็เลยจับได้ละว่า ใครเป็นตัวการ แต่ก็ยังงงอยู่ว่า ตอนแรกที่ทดสอบ run โดยปิด module ทั้งหมดไปทำไมมันไม่ผ่าน

    ก็เลยแก้ด้วยการ ไล่ลบข้อมูล feed ของทั้งหมดทิ้งไปก่อน แล้วลบโมดูล aggregator ทิ้ง (uninstall เลย) ก็พอรันแล้วก็พบว่า cron ผ่านเรียบร้อยดี โล่งอกเลย

    ในส่วนของ feed aggregator ก็ปรับมาเหลือแค่ ubuntuclub forum กับ twitter #ubuntu
    ส่วน feed aggregator เดิมก็ขยับมาใช้โมดูล planet แทน

    ดูเหมือนจะเรียบร้อยดี

    ผ่านสงครามครั้งนี้ได้ค่า EXP มาอีกเยอะ

    • drupal รัน cron ของ feed aggregator ก่อน database logging และ update module (เพื่ออะไร หรือแค่เรียงตามอักษร)
    • ถ้า cron fail มันจะเสียทั้งกระบวนการเลย แทนที่จะข้ามไป
    • drupal จะพยายามทำงานให้ได้ แม้ว่าบางส่วนจะเสียหาย มันจะทำงานให้ดีที่สุดเท่าที่สังขารจะอำนวย แต่นั่นก็เลยเป็นว่าเราจะไม่รู้เลยว่ามันมีปัญหาจนกว่าอาการจะสาหัส

    ยิ่งใช้ยิ่งประทับใจ drupal จะติดก็บางเรื่องที่ยังปรับไม่ค่อยได้ดั่งใจ

    cron run fail on ubuntuclub: round 3

    เช้าวันเสาร์ มหากาพย์ อภิมหาสงคราม cron ยังไม่จบ โซโล่มื้อเช้าในเวลาใกล้เที่ยง กลับมากด Zelda: Spirit Track สักชั่วโมง แล้วก็ ลุกมาขัดการมหากาพย์ต่อ

    ก็วันนี้ลองวิธี เอา site เดิมไปวางที่อื่น บนเซิร์ฟเวอร์เดียวกัน ก็ตะก่อนนี้นานมาแล้ว เคยตั้ง beta.ubuntuclub ไว้ เอาไว้ test web ก็เลยพอดี ใช้อันนี้ซะเลย

    วิธีการก็ไม่มีไร ย้ายไฟล์ทั้งหมดไป ส่วน db ก็เปลี่ยนก้อน ข้อมูลเหมือนเดิมหมด

    รอบแรก รัน manually ผ่านหน้า status report โช๊ะ ไม่ผ่าน
    ถัดมาลองใหม่ โหลด drupal 6.15 มาแตกทับ รันอีกรอบ โช๊ะ ผ่านวุ๊ย
    เจดดดด เสร็จล่ะกู เรียบร้อย ปิดฉายสงครามยืดเยื้อกันเถิด
    ก็ทำที่ site จริง ด้วยวิธีการดังกล่าว run cron โช๊ะ ไม่ผ่าน เข็ดม่อนนน ไรเนี่ย

    จบ episode 3 ไว้เท่านี้ก่อน เดี๋ยวกลับไปหาทางใหม่

    cron run fail on ubuntuclub: round 2

    ยกที่2 ของการพยายามแก้ cron จากครั้งก่อนก็ยังคงหาวิธีไม่ได้ เลยกะว่า จะเคลียร์ table ของ module ต่างๆออกให้หมด แล้วลอง run cron ดู เพื่อจะดูว่ามันเป็นที่ตัว drupal หรือเป็นที่ module ก็เลยย้ายข้อมูลทั้งหมดมาทำที่ localhost

    ก็พอวางเสร็จ ก่อนจะจัดการอะไรต่อ ก็เลยลอง run cron ซะรอบนึง โอ้วพี่น้อง มันดัน run ผ่านหว่ะ ไม่ได้ปรับแต่งอะไรเลย

    ก็เลย เอาล่ะ ลองติดต่อไปที่ dreamhost ดู ก็คุยไปคุยมา มาจบที่คำตอบสุดท้าย

    Thank you for following up. Unfortunately we can not troubleshoot custom
    Drupal installations as we only support Drupal installation made using
    the DreamHost one-click installer. We can only recommend that you contact
    Drupal for support for their product:

    ก็ก่อนหน้านั้นผมถามไปยาวๆ โดยมีประโยคป้องกันคำตอบแบบนี้ไว้แล้ว หนึ่งชุดว่า

    Today I tried to fix it in localhost (My Computer). I copy everything from /home/ubuntuclub/ubuntuclub.com/* then put it to my computer and test to run Cron without any drupal configuration (Everything same as real site, except configuration of database name). It's pretty done

    แต่ก็ยังมาจบที่คำตอบแบบนี้อยู่ ก็เลยไม่รู้ว่าจะยังไงต่อดี

    แผนการณ์ถัดไป คิดว่าจะลองรันบนเครื่องเดิม แต่ไปไว้ใน sub domain แทนเพื่อ test ดูก่อน