Drupal + MediaWiki
หลายท่านที่ชื่นชอบความสามารถของ Drupal แต่ก็ยังรัก MediaWiki วันนี้ผมขอเล่าวิธีการใช้ Users ร่วมกันระหว่างสองตัวนี้ จริง ๆ ก็มีทางออกหลายอย่างนะครับสำหรับคนที่อยากใช้ Drupal กับ Wiki ผมแอบเห็นคนทำ Profile การติดตั้ง Drupal 5 ให้ทำงานคล้ายคลึง Wiki แต่ผมก็ไม่ได้ลองนะครับแค่ไล่ ๆ ดูเพราะหาวิธีที่จะ Link สองตัวนี้เข้าด้วยกันมานานแล้ว วันนี้ไปเจอเข้าเป็นวิธีกลาง ๆ คือใช้แค่ Users ร่วมกัน สำหรับผมแค่นี้ก็พอแล้วละไม่ต้อง login หลายครั้งให้ยุ่งอยาก ระหว่างรอให้ OpenTLE ฟื้นคืนชีพเพื่อใช้งานจริงก็มาซ้อมมือเขียนวิธีการคร่าว ๆ ไว้ก่อน ถ้าใครอ่านภาษาอังกฤษคล่องก็อ่านจากต้นฉบับได้เลยนะครับเพราะผมอาจจะเขียนอ่านไม่รู้เรื่องก็เป็นได้ตอนนี้ก็เกือบ 7 โมงเช้าแล้วยังไม่ได้หลับ มาเริ่มกันเลยดีกว่าครับ
Software ที่ผมใช้ในครั้งนี้
ขั้นแรก ให้ทำการติดตั้ง Drupal และ MediaWiki ให้เรียบร้อยตามวิธีของทั้งสองเมื่อติดตั้งเรียบร้อยแล้วให้ท่านนำ AuthDrupal Module (Download ) เก็บไว้ใน Directory modules ของ Drupal และ extentions ของ MediaWiki โดยแฟ้มต่าง ๆ ดังนี้
- AuthDrupal/AuthDrupal.php (ใช้ใน MediaWiki)
- AuthDrupal/crypto.php (ใช้ใน MediaWiki และ Drupal)
- AuthDrupal/Mediawiki.module (ใช้ใน Drupal)
- AuthDrupal/Mediawiki.info (ใช้ใน Drupal)
**การแก้ไขและปรับแต่งค่า **
ให้ทำการแก้ไขแฟ้ม crypto.php โดยใส่ค่า $key ให้ตรงกับค่า $wgProxyKey ของ MediaWiki ซึ่งจะอยู่ในแฟ้ม LocalSettings.php สิ่งที่ต้องระวังคือต้องแก้แฟ้มนี้ทั้งใน Drupal และ MediaWiki
ให้ทำการแก้แฟ้ม Mediawiki.module โดยตั้งค่าตัวแปรต่อไปนี้ให้ตรงกับค่าในแฟ้ม LocalSettings.php
wgCookieDomain , wgDBname และ wgDBprefix
โดยปกติแล้วค่า wgCookieDomain จะไม่มีใน LocalSettings.php ต้องใส่เข้าไปเอง
- ให้ปรับแต่งค่าต่อไปนี้ในแฟ้ม LocalSettings.php เพิ่มเติม
//ปิดการสร้าง Users ทางฝั่ง MediaWiki
- ไปยัง Drupal เพื่อทำการเปิดใช้ module
$wgGroupPermissions['*']['createaccount'] = false; //ในกรณีที่ใช้ Database คนละตัวกัน ให้ใช้ true $wgAuthDrupal_UseExtDatabase = true; //กำหนดค่า database ของ Drupal $wgAuthDrupal_MySQL_Host = $wgDBserver; // MySQL host ของ Drupal $wgAuthDrupal_MySQL_Username = $wgDBuser; // MySQL Username ของ Drupal $wgAuthDrupal_MySQL_Password = $wgDBpassword; // MySQL Password ของ Drupal $wgAuthDrupal_MySQL_Database = 'drpl'; // MySQL Database ของ Drupal // ถ้ามีการกำหนดค่า TablePrefix ของ Drupal ก็ให้แก้ให้ตรงกัน ส่วน Table users ก็ไม่ต้องแก้เพราะเหมือนกันอยู่แล้ว $wgAuthDrupal_TablePrefix = “”; $wgAuthDrupal_UserTable = 'users'; // ถ้ามีการกำหนดค่า Profile ใน Drupal และมี fields ชื่อกับนามสกุล โดยมีชื่อ field // profile_first_name และ profile_last_name ก็สามารถใช้ร่วมกันได้ // แต่เท่าที่ลองภาษาไทยจะใช้ไม่ได้ ถ้าท่านกำหนดค่า database เป็น utf8 แบบเข้ากันได้กับรุ่นเก่า // ถ้าจะให้อ่านไทยได้ก็ต้องใช้ utf8 แบบใหม่ครับ // ถ้ากำหนดข้างต้นไว้แล้วก็ให้เปิด true ในค่านี้ $wgAuthDrupal_GetRealNames = true; //สำหรับท่านที่ตั้งค่า fields ไม่ตรงกับที่กำหนดก็สามารถระบุให้ได้ด้วยตัวแปรนี้ $wgAuthDrupal_RealNames_first_name_field = 'your field name'; $wgAuthDrupal_RealNames_last_name_field = 'your field name'; // ตั้งค่าให้ Drupal เป็นตัวจัดการเรื่อง login / logout แทน MediaWiki $wgAuthDrupal_ReplaceLogin = true; //ถ้ากำหนดด้านบนเป็น true ก็ต้องกำหนดค่าหน้า login และ หน้า logout ด้วย $wgAuthDrupal_LoginURL = 'http://yourdomain.com/user/login'; $wgAuthDrupal_LogoutURL = 'http://yourdomain.com/logout'; //และสุดท้ายคือเปิดใช้ extention นี้ให้กับ MediaWiki require_once 'extensions/AuthDrupal/AuthDrupal.php'; SetupAuthDrupal();
ที่มา: http://www.mediawiki.org/wiki/AuthDrupal