Drupal 6.x

3ชอบ

กิตติกรรมประกาศ

ขอบคุณ จาก http://www.bloggang.com/viewdiary.php?id=lkw2005&month=05-2006&date=25&group=10&gblog=10ball.in.th สร้างด้วยซอฟต์แวร์รหัสเปิดคุณภาพยอดเยี่ยม เราขอขอบคุณผู้ที่มีส่วนร่วมทุกๆท่านครับ ...

ปรับแต่ง CKEditor สำหรับ Drupal

ช่วงนี้ค้นวิธีโหลดหน้าเว็บให้เร็วขึ้น พร้อมกับเพิ่งเปลี่ยนมาใช้ CKEditor ก็เลยเขียนวิธีปรับแต่งเล็กๆน้อยครับ และทำ patch เพื่อย้ายมา load CKEditor javascript ตรง footer แทน header

2ชอบ

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

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

ปกติใน drupal core ถึงแม้จะมี block cache คือ cache สำหรับข้อมูลในแต่ละ block แต่ปกติจะไม่ถูกเปิดใช้งาน (สำหรับผู้ใช้ที่ไม่ได้ล๊อกอิน จะใช้ page cache คือ cache ทีเดียวทั้งหน้า ถ้าไม่เจอจึงใช้ block 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 บางทีเจอปัญหา เลยเขียนมาแบ่งปันกันครับ ^^

ส่งต่อ (redirect) URL ตอนเปลี่ยน DNS

วิธี redirect traffic ตอนย้ายเว็บโฮสติ้ง และ DNS ยังไม่เปลี่ยนใหม่

ball.in.th เพิ่งย้ายเว็บโฮสติ้ง เลยเอาวิธีแก้ปัญหาที่เจอมาฝากกันครับ ปกติก่อนย้ายโฮส ถ้าสามารถแก้ Time-To-Live (TTL) ของโดเมนใน DNS ได้ก็จะเป็นการดี ลดเวลาลงให้เหลือน้อยๆ เช่น 1800 (ครึ่งชั่วโมง) แต่ใน cPanel หาที่แก้ TTL ไม่เจอ เลยไม่ได้แก้ 555 ดังนั้นพอเปลี่ยน nameserver แล้ว ก็ต้องรอจนกว่า TTL จะหมดเวลา ถ้าไม่อยากรอ ก็สามารถใช้ mod_rewrite redirect traffic ไปที่ IP ของโฮสใหม่ได้เลย (เฉพาะกรณีที่มี IP ส่วนตัวในโฮสใหม่เท่านั้น) ...

ดูด feed และรูปที่เป็น enclosure ใน Drupal

โมดูล feedapi และ feedapi_mapper ใช้สำหรับดูด feed มาสร้างเป็น node ใน Drupal แต่ถ้าอยากดูดรูปมาด้วย (เฉพาะ feed ที่มีรูปใน enclosure หรือส่วนอื่นที่แยกจากเนื้อหาอย่างชัดเจน) ก็สามารถใช้ mapper ด้านล่าง (อันนี้เป็นตัวแก้บั๊กของ ImageField mapper) โดยจะดึงรูปมาบันทึกไว้ และแสดงโดยใช้ filefield และ imagefield ครับ (mapper ด้านล่างเอาไว้ใช้ชั่วคราวครับ จนกว่า FileField mapper จะสามารถทำได้)

  1. เปิดโมดูลทั้ง 4 ที่กล่าวไว้
  2. บันทึกไฟล์ด้านล่างชื่อ feedapi_mapper_imagefield.inc ไว้ใน sites/all/modules/feedapi_mapper
  3. เพิ่ม imagefield เข้าไปใน "ชนิดเนื้อหา" (content-type) ที่จะเอาไว้สร้าง node สำหรับ feed นี้
  4. ตั้งค่า "[user]" ใน Path ของ imagefield ของชนิดเนื้อหา
  5. สร้างผู้ใช้ใหม่ เช่น "host.com"
  6. สร้าง feed node โดยผู้ใช้ใหม่นี้
  7. ไปที่ Map ของ feed node แล้วเลือก map รูปไปยัง field ที่ต้องการ เช่น options->enclosures->image->jpeg: Map to field_image (imagefield): Original file name
  8. รูปที่ดูดมาจะถูกบันทึกไว้ใน sites/default/files/host.com/ ครับ ^ ^
  9. ดูตัวอย่าง node ที่สร้างเสร็จแล้วได้ที่ ข่าวฟุตบอลไทย
1ชอบ

เริ่มนับสถิติรายวันของ Drupal ตอนเช้า

โมดูล Statistics (มากับ Drupal อยู่แล้ว) ซึ่งเก็บสถิติจำนวนครั้งที่แต่ละ node ถูกอ่าน (node_counter) โดยมีทั้งสถิติรายวัน (daycount) และสถิติทั้งหมด (totalcount) ซึ่งสถิติรายวันจะถูกล้างทิ้ง (reset) ทุกๆ 24 ชั่วโมง โดย statistics_cron() แต่ว่าเรากำหนดไม่ได้ว่าจะครบ 24 ชั่วโมงเมื่อใด เท่าที่อ่าน source code ดู ถ้าเราเรียก cron ทำงานครั้งแรกตอนกี่โมง Drupal ก็จะเริ่มนับสถิติรายวันใหม่ ณ เวลานั้นทุกๆวัน ซึ่งไม่น่าจะถูก เพราะสถิติรายวันน่าจะเริ่มนับใหม่ตอนเช้าของแต่ละวัน ซึ่งเราสามารถแก้ไขได้โดยแก้ statistics_cron() (แก้ Drupal core อีกแล้วครับท่าน 555)

ดูคำที่ใช้ค้นหาเพื่อมาที่เว็บเราใน Drupal

คนทั่วไปใช้คำอะไรหาถึงเจอเว็บเรา บางทีเจอคำประหลาดด้วย 555

คราวก่อนได้แก้ไขหน้า Recent hits เพื่อให้แสดง Referer ซึ่งต้องแก้ไฟล์ที่มากับ Drupal ซึ่งไม่ค่อยถูกหลักเท่าไหร่ เพิ่งไปเจอโมดูล Search Engine Referers ซึ่งทำได้เกือบจะเหมือนกันและใช้ง่ายกว่าเยอะ แต่รุ่นปัจจุบัน (6.x-1.0) ยังไม่แสดงว่าคำที่ใช้ค้น (keyword) นั้นลิงก์มาที่หน้าไหน ต้องแก้ไฟล์อีกนิดหน่อย (แก้ไฟล์จนได้ 555) โดยรวมเอา patch นี้เข้าไปด้วย ก็จะได้ฟังชั่น search_engine_referers_overview() ออกมาเป็น (ส่วนที่แก้เป็นตัวเข้มครับ)

ทำโมดูลกรองคำต้องห้ามใน Drupal

ทีจริงมีโมดูล Wordfilter ซึ่งสามารถกรองคำต้องห้ามได้อยู่แล้ว แต่ว่า Wordfilter จะแก้คำต้องห้ามในเนื้อหาเลย ไม่ได้กรองเฉพาะตอนที่จะแสดงผลเหมือนตัวกรอง (filter) ปกติใน Drupal และไม่กรองเนื้อหาใน CCK text field ที่ทำเพิ่มขึ้นมา พอดูตัวอย่างตาม Wordfilter แล้วทำไม่ยาก ก็ทำใหม่ซะเลย 55 (สำหรับมือใหม่ ดูวิธีสร้างโมดูล helloworld แบบง่ายๆ)

1ชอบ

Add page title icons in Drupal

Jazzzz up your Drupal page title with an icon. Also helps drawing attention to the title. ^ ^

a sample page with icon 1Well, I came across an article about how to add page icons in Joomla. Having written a similar howto for drupal (in Thai), I figured this's a good way to illustrate that Drupal, in this particular task, is better than Joomla. So, here it goes.

When I saw that Acquia Marina had block icons, I was like "Cool, I want it too!!". But instead of block icons, it would be even better to have page icons. So, I adapted the technique. Each content type should have its own page title icon, which can be overridden on a page by page basis. For pages that are not "nodes", icons need to be set individually. Beautiful icons from Crystal Project Icons and Oxygen Icons are used. Thanks to eveyone involved in these projects. ^ ^

เพิ่มหน้ายิ้ม (smilies) ให้กับ FCKeditor ใน Drupal

ใน FCKeditor จะมีปุ่มสำหรับใส่หน้ายิ้ม (smilies) แต่ที่ให้มาไม่ค่อยสวยเท่าไหร่ ซึ่งเราสามารถเปลี่ยนได้ โดยเอาหน้ายิ้มมาจากที่อื่นที่สวยงามกว่าครับ เช่น

  • โมดูล Smileys มีหน้ายิ้มชุด Roving โดย Hubert Florin ซึ่งสวยดี
  • Mazes MiniMazes Mini 2 โดย MazeNL77 แจ่ม
  • มีหน้ายิ้มที่ไหนสวยๆอีกช่วยแนะนำด้วยครับ ^ ^

วิธีเพิ่มหน้ายิ้มก็ทำได้โดย

เพิ่มไอคอนให้กับแต่ละหน้าของ Drupal

เพิ่มไอคอนเติมสีสันให้หน้าใน Drupal ดูสดใสขึ้นมาอีกนิสสสส และดึงสายตามาที่หัวข้อด้วย ^ ^

ตัวอย่างไอคอนในหน้า 1วันก่อนเห็นธีม Acquia Marina มีไอคอนของแต่ละบล็อค เลยเกิดกิเลสอยากมีบ้าง (อีกล่ะ 555) แต่อยากมีไอคอนของหน้า ไม่ใช่บล็อค เลยดัดแปลงไอเดียมาเป็นไอคอนสำหรับหน้าซะเลย โดยให้แต่ละชนิดเนื้อหา (content-type) มีไอคอนคนละแบบ (หรือจะตั้งแยกแต่ละหน้าก็ได้) ส่วนหน้าที่ไม่ใช่ node ก็ต้องตั้งเอาเป็นหน้าๆไป ตัวไอคอนก็ไม่มีปัญญาทำเอง ใช้ของสวยๆจาก Crystal Project Icons และ Oxygen Icons ขอขอบคุณมา ณ ที่นี้ด้วยครับ ^ ^

1ชอบ

ball.in.th มีส่วนร่วมใน Drupal core patch

เรื่องนี้ไม่มีสาระ 555 แค่อยากจะบอกว่า เราได้มีส่วนร่วมในการแก้บั๊กในระบบแคช (#227228) ของ Drupal core 6.11 นับเป็น core บั๊กอันที่สองในซอฟแวร์รหัสเปิดขนาดใหญ่ที่เรามีส่วนร่วมในการแก้ไข (อันแรกเป็นบั๊กใน JURI() ของ Joomla core 1.5)

สำหรับมือใหม่อย่างเรา นับเป็นความภูมิใจที่ได้มีส่วนร่วมพัฒนาซอฟแวร์รหัสเปิดให้ดียิ่งๆขึ้นไป ^ ^

1ชอบ

ย้าย "อ่านต่อ" มาเป็นลิงก์แรก และทำให้เด่นขึ้น

ลิงก์อ่านต่อ กลมกลืนกับลิงก์อื่นเกินไป ไม่โดนเลย

ปกติลิงก์ "อ่านต่อ" จะปนอยู่รวมกับลิงก์อื่นๆตอนดูเฉพาะคำโปรย (node teaser) เช่น "onequad's blog  1 ความเห็น  1 ใหม่  อ่านต่อ  13 reads  แก้ไข  Bookmark this" ช่างไม่เด่นและทำให้สับสนว่าตกลงยังมีต่ออีกหรือเปล่า ต้องย้ายมาเป็นลิงก์อันแรกและทำให้เด่นๆ (ที่จริงอยากทำให้ "อ่านต่อ" ต่อท้ายจากคำโปรยเลย แต่หาวิธีไม่ได้ 55) ...

ทำหัวข้อรองเหมือนนิตยสาร ด้วย CCK

หัวข้อรองอยู่ตรงนี้ ^ ^ เหมือนนิตยสารขึ้นมาอีกนึด

เห็นตามนิตยสารมักมีประโยคดึงดูดความสนใจคนอ่าน ไม่รู้เรียกว่าอะไร ขอเรียกว่า "หัวข้อรอง" (Subhead or Deck) แล้วกัน และเห็นที่ Vancouver Magazine Redesign ก็ทำใน Drupal เลยอยากมีบ้าง 555 ซึ่งก็สามารถเพิ่มเข้ามาใน node ได้ด้วย CCK และแก้ไขธีมนิดหน่อย ...

1ชอบ

เพิ่ม Referrer ในหน้า Recent hits ใน Drupal

ถ้าเปิด Enable access log ไว้ใน admin/reports/settings จะมีหน้า Recent hits (admin/reports/hits) ซึ่งแสดงการใช้งานเว็บไซต์ล่าสุด แต่หน้านี้ยังขาดข้อมูลสำคัญคือ Referrer ซึ่งแสดงว่าผู้ใช้เข้ามาที่แต่ละหน้าจากที่ใด (ที่ไหนลิงก์มาหาเว็บเราบ้าง) ถ้าผู้ใช้เข้ามาจาก search engine ก็มักจะเห็นคำที่ใช้ค้นหาด้วย เช่น q=คำที่ค้น สำหรับ google ...

ธีม comment-form สำหรับบุคคลทั่วไป (ไม่ได้ล๊อกอิน) ใน Drupal

วิธีบอกบุคคลทั่วไปตรง comment-form ว่าต้องรอตรวจสอบ ก่อนที่จะส่งความคิดเห็น

บุคคลทั่วไป (ไม่ได้ล๊อกอิน หรือ anonymous user) สามารถแสดงความคิดเห็นได้ ถ้าเปิดไว้ใน admin/user/permissions#module-comment ซึ่งโดยทั่วไปคงจะต้องรอการตรวจสอบก่อน ('post comments' เฉยๆ ไม่ใช่ 'post comments without approval') เลยอยากจะหาวิธีบอกบุคคลทั่วไปว่าต้องรอตรวจสอบ ถ้าไม่อยากรอก็ล๊อกอินก่อน (สมาชิกที่ล๊อกอินมีสิทธิ์ 'post comments without approval') ...

ตั้งสิทธิ์หรือซ่อน personal contact ใน Drupal

ซ่อน tab personal contact ใน Drupal พร้อมโมดูลตัวอย่าง เพื่อป้องกันอีเมล์ขยะ

ปกติถ้าเปิดโมดูล contact และเปิด personal contact ไว้ใน admin/build/contact/settings สมาชิกที่สามารถ 'access user profiles' จะสามารถติดต่อโดยส่งอีเมล์ไปหาสมาชิกคนอื่นผ่าน personal contact ได้ทาง user/xxx/contact พูดอีกอย่างก็คือ personal contact ไม่สามารถตั้งสิทธิ์แยกจาก 'access user profiles' นั่นเอง ...

ธีม Zen 6.x-1.0 กับ breadcrumb ที่เปลี่ยนไป

ธีม Zen 6.x-1.0 ทำให้ breadcrumb สำหรับหมวดหมู่ (taxonomy term) กลายเป็น "Taxonomy term" หมดเลย (เฉพาะผู้ที่ใช้ธีม Zen หรือ ธีมลูกของ Zen)

ต้องไปแก้ zen_preprocess_page() ใน template.php ให้เหมือนกับ beta3 คือประมาณนี้ ...

1ชอบ

ปรับแต่ง Drupal forum ให้น่าใช้ขึ้น

แปล "Forums" breadcrumb ให้เป็นไทย

เก่า: หน้าแรก › Forums › => ใหม่: หน้าแรก › กระดานสนทนา ›

อันนี้ง่าย แต่มัวไปหาผิดที่เลยหานานเหมือนกันกว่าจะเจอ 55 แปลที่ admin/content/taxonomy

เปลี่ยน icons

เก่า: forum-closed.png forum-default.png forum-hot-new.png forum-hot.png forum-new.png forum-sticky.png => ใหม่: forum-closed.png forum-default.png forum-hot-new.png forum-hot.png forum-new.png forum-sticky.png

โหลด Drupal Forum Icons แล้วเอาไปทับของเดิมที่ /misc/ ...

Syndicate content
ดอกแรก มาไวๆน๊าาา... Spain U21.. 1 วันก่อน
บอลล่อควายไปเเดกน้ำเเดง 2 วันก่อน
@ ช่วงบอลน้อย สงสัยต้องหันไปจับบอลเล็กบ้างนะครับ ^^ 3 วันก่อน
เงียบจุงเบย!!! 4 วันก่อน
บอลนานาชาติ ยังมีการเปลี่ยนแปลงมากเช่นเดิม แนะนำรอดูให้ชัวร์ช่วงก่อนบอลเตะครับช่วงนี้ ตั้งแต่ท้ายซีซั่นถึงก่อนเปิดซีซั่น 1 สัปดาห์ก่อน