Planet Drupal Thailand
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 ดูก่อน
cron run fail on ubuntuclub
จากที่เริ่มหันมาจัดการจัดระเบียบ ubuntuclub ชุดใหญ่ ก็ได้พบว่า cron มีปัญหา ไม่ยอมรัน เท่าที่เคยเจอปัญหาที่สัมผัสกะตัวเองก็มีของ pclinuxclub.com ที่เดียว ของขานั้นแก้อยู่นาน มาสรุปได้ว่า มีปัญหาที่ binary ของไฟล์ database ก็แก้ไขโดย dump ออกมาใส่ db ก้อนใหม่ ก็คือเปลี่ยน binary นั่นแหล่ะ นอกนั้นก็มีที่เคยเสริชเจอบ้างประปราย
ของ ubuntuclub ที่มีปัญหาคือ พอรัน manually ในหน้า status แล้ว มันบอกแค่ "cron run fail" ส่วนเรียกจาก cron.php ก็ขึ้นหน้าขาวตามปกติ
จากที่ดูใน aggregator แล้ว ครั้งสุดท้ายที่ได้ข้อมูลอัพเดทมาเป็นข้อมูลของช่วงเดือนธันวาที่ผ่านมา แสดงว่า มันพังช่วงประมาณที่อัพเดทจาก drupal 6.14 ไป 6.15 แต่จริงๆแล้ว drupal 6.14 ไป 6.15 นั้น db ไม่มีการอัพเดทอะไร ดังนั้นแปลว่า มันน่าจะพังเพราะการอัพเดท module ใดสักตัว
ลองตามคำแนะนำของ @manatsawin คือ ปิดโมดูลทีละตัวดู ว่าจะ run ได้ไม๊ ก็ลองปิดจนเหลือแค่ core มันก็ยังไม่ยอมรัน แต่ไม่ได้เคลียร์ table กับ data ก็คงไม่ได้ช่วยอะไร คิดว่าเดี๋ยวจะลองดูดมาใส่ localhost แล้วลอง เคลียร์ module แบบเกลี้ยงๆดู ว่าจะรันได้ไม๊
ระหว่างนี้ยังหาทางแก้ไม่ได้ ด้วยว่าอับจนซึ่งหนทาง ตอนนี้ก็เลยแก้ด้วยวิธี ช่างมัน (เรียกแก้เหรอนั่น) แล้วไปปิดตัว database logging ไปก่อน เพราะก่อนที่จะปิดโมดูลไปนี่ เฉพาะ table access log นี่ พวกล่อไปครึ่งกิ๊กละ
ไว้หาทางแก้ได้จะมาโน๊ตไว้อีกที
จัดการ tag
วันหยุด ยังอยู่ในอารมณ์ขยันจะแก้ ubuntuclub.com คิดอยู่ว่า ubuntuclub ค่อนข้างอาภัพ เพราะผมไม่ค่อยจะดูแลสักเท่าไหร่ จะดูแลทีก็ช่วงมีอารมณ์จะดู ถึงเวลาพักนึงพอเบื่อก็ช่างหัวมัน ปล่อยไปตามยถากรรม แต่อันนี้ก็พอเข้าใจตัวเองอยู่ ดังนนั้นช่วงนี้ไฟเริ่มโหม ต้องรีบโซโล่ก่อนไฟจะมอด
ก็ที่ปรับไปแล้วคือหน้าตา theme แล้วก็ จัดการเรื่อง markdown เป็นที่เรียบร้อย wusiwyg ขยะๆจงหายไปซะ
กลับมาถึงงานช้างคือเรื่องของ tag อันนี้ถือว่ามาใช้กรรมในอดีต เพราะ admin ที่ดี ก่อน approve ข่าวมีหน้าที่ที่ต้องทำคือ
- spam หรือไม่
- ตรวจสอบความถูกต้องของเนื้อหา
- ตรวจคำผิด
- เช็คลิงก์
- การจัดฟอร์แมท
- แก้ไข tag ให้เรียบร้อย
แต่สิ่งที่ผมทำโดยมากผมจะทำแค่ข้อแรก คือ เช็คดูว่า spam ป่าว แล้ว approve เลย ดังนั้น tag มันเลยเน่ามากๆ ก็ถึงเวลาต้องมาสางย้อนหลัง
จริงๆสิ่งที่เป็นปัญหาของ ubuntuclub เลย คือ เป้าที่ผมวางไว้แต่แรกว่า ให้มันเป็นเว็บที่เปิดกว้างมากๆ คือแค่สมัครสมาชิกก็เขียนข่าวได้เลย แต่การจะเป็นเว็บแบบนั้นได้ แปลว่าต้องใช้การดูแลสูง แต่ผมกลับทำตรงข้าม
ทีนี้กลับมาที่ tag ต่อ
tag เน่าคืออะไร
- tag ไม่ตรงกับเนื้อหา
- tag ในคำที่ไม่ต้องใส่ เช่น เว็บ ubuntuclub นี่ไม่จำเป้นต้องมี tag ubuntu เพราะถ้ามันไม่เกี่ยวกับ ubuntu ก็ไม่มีเหตุให้ต้องมาเขียนในนี้
- พิมพ์ผิด อันนี้เลวร้ายมาก เช่น ubutnu หรือที่เลวร้ายกว่านั้นคือแบบที่เขียนบนวินโดวส์ คือพอมีสระแทรกในภาษาอังกฤษมันจะมองไม่เห็น
- ไม่ดู autocomplete เราจะเจอ tag เช่น command, command-line, cmd อะไรเทือกๆนี้
- เขียนเป็นคำอธิบาย อันนี้เลวร้ายสุด เช่น "การใช้ command", "วิธีใช้ command"
- ไม่ใส่ , คั่นระหว่าง tag อันนี้ไม่ใช้ความผิดคนกรอก เป็นความผิดของมาตรฐานเอง ที่บางเว็บใช้ , หรือบางเว็บใช้ spacebar ในการ seperate
วิธีแก้
เนื่องจาก tag เยอะมากๆ เราไม่สามารถแก้หมดได้ในวันเดียว เราจะทยอยแก้ยังไงไม่ให้งงเอง
เท่าที่หาวิธีมาได้ทั้งหมดผมใช้วิธีดังนี้
- ไล่ดูในหน้า term list ลบ Tag ที่ไม่เอาทิ้งให้หมด
- tag ที่ถูกแล้วก็แก้ case ให้สวยงามนิดนึง เช่น bittorrent เป็น Bittorrent หรือ อื่นๆ
- แบ่งลบเป็นหมวดๆ วันนี้หมวดตัว a วันต่อไปหมวดตัว b
- จัดการ Tag หมด แล้วมาไล่ดูเนื้อหาต่อ
- นั่งดูทีละข่าว ว่าควรต้องเพิ่ม tag ไหม (ในส่วนนี้จะไม่ต้องลบ tag แล้ว เพราะลบทิ้งหมดแล้ว มีแต่เพิ่มอย่างเดียว)
- ตั้งเป็นเกณฑ์ ไล่แก้ตาม node id วันละสัก 100 node
- ครบก็เสร็จ
เกณฑ์ในการวาง tag เราจะวาง tag ยังไง ที่ผมมองไว้คงตามนี้
- ชื่อ Product เช่น ชื่อยี่ห้อ หรือชื่อโปรแกรม
- ชื่อรุ่นไม่เอา เช่น Nvidia gt38xx ก็ใส่ Nvidia อย่างเดียว
- ถ้างานเป็นช่วงปี แยกใส่ระหว่างงานกับปี เช่น AOSS2007 แยกเป็น AOSS กับ 2007
- รุ่นของ ubuntu จะเก็บทั้ง codename ทั้งเลขเวอร์ชั่น เช่น KarmicKoala, 9.10
- อันที่เกี่ยวกัน เช่น ข้อข้างบน จะตั้ง Synonym
ได้เวลาใช้กรรม คิดว่าที่ช่วงนี้เกิดฮึดจะทำเพราะเสาร์อาทิตย์เริ่มได้อยู่บ้านบ้าง กอปรกับไม่ได้มีไรอย่างอื่นทำ
หวังว่าจะเคลียร์ tag ให้เสร็จได้ก่อนพระศุกร์เข้าพระเสาร์แทรก
Drupal views arguments
โจทย์คือ ต้องการดึงข้อมูลของ node type ที่ต้องการขึ้นมาแสดง โดยมีเงื่อนไขว่า node ที่จะแสดง ให้แสดง node ที่คนนั้นๆ เขียน ในหน้าของ user นั้นๆ คือสั้นๆว่า ให้แสดง node ที่ตัวเองเขียน ในหน้า user account ของตัวเองนั้นเอง
ไอเดียคือ ปรับ thaiopensource ใหม่ แล้วก็ แต่เดิมมันเคยมีข้อมูลของผู้ประกอบการ Open Source อยู่ ซึ่งในหน้านั้นก็จะมี Site Reference ว่าเคยไปทำให้ที่ไหนมาบ้าง ซึ่งมันดูลอยๆ ก็เลยปรับใหม่ โดยเอามาผู้กับเรื่อง Success Story โดยให้ผู้ประกอบการเขียนเป็นเชิงบทความไปเลย แล้วค่อยให้ Drupal ดึงข้อมูลขึ้นมาแสดงให้ โดยอิงว่า ถ้าอยู่ในหน้า gumara ก็ให้แสดง Success Story ที่ gumara เขียน แค่นี้เอง
ฟังดูเหมือนจะง่าย ซึ่งจริงๆก็ง่าย ถ้ารู้ แต่ถ้าไม่รู้ก็ไม่ง่าย (งงเลย)
เอาสั้นๆว่า ผมแค่จะมา note ขั้นตอนไว้ ว่าต้องทำยังไง ครั้งหน้าจะได้ไม่ลืม
วิธีคือ ใช้ Module Views กำหนดค่าตามนี้
- View arguments -> User: Name
- Action to -> Provide default argument
- Default argument -> PHP Code
-
PHP argument code ->
$args = drupal_get_title();
return $args;
เท่านี้ก็ได้ละคับ ขอบคุณ คุณมานพ แล้วก็ drupal.in.th ครับ
Drupal Example: Obama and Abhisit
คุณ @gzix ทักมาใน Twitter ว่าให้โปรโมทหนังสือ Drupal ใน drupal.in.th ด้วย เลยจัดให้ตามขอ ไหนๆ ทำแล้วเลยอัพเดตหน้า Introduction to Drupal ด้วยเลย
อย่างแรกที่ทำคือ เพิ่มรางวัล Hall of Fame ของ Packt Publishing ประจำปี 2009 ลงไปในลิสต์ อีกอันที่ทำคือแก้ตัวอย่างเว็บที่ใช้ Drupal ให้ทันสมัยขึ้นหน่อย
สัญชาตญาณครีเอทีฟที่มีอยู่น้อยนิดในตัวผม บอกว่าควรออกมาเป็นยังงี้
ผลคือ ประสบความสำเร็จด้วยดี
Using Drush on Windows with Cygwin
What is Drush?
หนึ่งในเครื่องมือที่ขาดไม่ได้เวลาทำงานกับ Drupal ก็คือ Drush ที่ทำให้ทำงานหลายๆ อย่างได้ด้วยการใช้ command line หลักๆ ก็เช่น ดาวน์โหลดและติดตั้งโมดูล/ธีม, เคลียร์ cache, รัน update.php, รัน cron, ดูค่าในตาราง variables ฯลฯ
Why Drush?
ความสามารถของ Drush ที่ใช้บ่อยที่สุดก็น่าจะเป็นตอนติดตั้งโมดูล/ธีม นี่แหละ รันคำสั่งบรรทัดเดียว มันจะดาวน์โหลดแพ็กเกจและแตกไฟล์ให้เสร็จเรียบร้อย สมมติเราต้องการติดตั้งโมดูลซัก 5-6 ตัว ขั้นตอนปกติที่จะต้องทำก็คือ
- ไปที่ drupal.org
- ค้นหาโมดูลที่ต้องการ (ถ้าจะให้เร็วกว่านั้น แนะนำให้ค้นหาโมดูลด้วย Firefox quick search)
- ดาวน์โหลดแพ็กเกจติดตั้งของแต่ละโมดูล
- แตกแพ็กเกจไปไว้ในไดเร็กทอรี
sites/all/modules - ไปที่
http://example.com/admin/build/modules - คลิกเลือกโมดูลที่ต้องการเปิดใช้งาน
- กดปุ่ม Save configuration
ในขณะที่ Drush สามารถทำได้โดยพิมพ์คำสั่งแค่ 3 บรรทัด
$ cd /cygdrive/d/www/my_drupal_site $ drush dl admin admin_menu devel markdown cck views $ drush en admin admin_menu devel markdown cck views
<
p>โฆษณาเสร็จแล้ว มาเข้าเรื่องตามหัวข้อบล็อกกันดีกว่า



ความคิดเห็นล่าสุด
4 hours 10 min ก่อน
4 hours 55 min ก่อน
5 hours 9 min ก่อน
5 hours 11 min ก่อน
5 hours 15 min ก่อน
5 hours 46 min ก่อน
6 hours 56 min ก่อน
8 hours 40 min ก่อน
10 hours 54 min ก่อน
11 hours 1 นาที ก่อน