×

คำเตือน

JFolder::create: Path not in open_basedir paths.

การพัฒนาส่วนขยายของจูมล่าสำหรับมือใหม่

การพัฒนาส่วนขยายของจูมล่ามีความแตกต่างจากการเขียนเว็บ application เอง ซึ่งมือใหม่อาจจะงง โดยเฉพาะคนที่ไม่เคยมีประสบการณ์ในการเขียน PHP แบบ Object Oriented Programming มาก่อน ข้อดีก็คือคุณทำงานน้อยลงครับ แต่ก็มีสิ่งที่ต้องเรียนรู้เพิ่มเติม แต่ไม่ใช่เรื่องยากครับ ขอให้ทำความเข้าใจและสำคัญที่สุดลงมือทำ

ผมมีโอกาสได้เห็นคนเขียนคอมโพเนนท์ของจูมล่าแบบมึนๆ นั่นคือในไฟล์ของคอมโพเนนท์เช่น com_example/example.php เขาเอาไฟล์ HTML ทั้งไฟล์ไปใส่ไว้ร่วมกับ PHP คือมีการเขียนแบบที่เป็น Procedure แบบที่เขาคุ้นเคยมีการเปิดแท็ก <html> และปิดแท็ก </html> ในไฟล์นี้เรียบร้อยซึ่งมันอาจจะทำงานได้ครับ แต่ไม่ถูกต้อง เนื่่องจากการเขียนคอมโพเนนท์นั้นเราทำการแสดงผลแค่บางส่วนของหน้า Page เท่านั้นเนื่องจากตัว Page นั้นจะถูกสร้างโดยจูมล่าอยู่แล้ว เราจะทำการเขียนโค้ดเพื่อใช้งานพื้นที่เพียงส่วนหนึ่งเท่านั้น คือพื้นที่ในส่วนของ คอมโพเนนท์

ก่อนอื่นเรามาทำความเข้าใจก่อนว่าตัว Page ที่เป็น HTML นั้นจะรับผิดชอบโดยเท็มเพลต โดยในการทำงานของเท็มเพลต ผู้ออกแบบจะแบ่งพื้นที่ในหน้าหนึ่งๆ ออกเป็น Module Position ซึ่งเป็นพื้นที่เล็กๆ ที่ใช้งานโดยตัวโมดูล โดยจะมีพื้นที่ส่วนหนึ่งถูกกันไว้สำหรับคอมโพเนนท์ ซึ่งเป็นพื้นที่ส่วนใหญ่แต่จะมีอยู่โซนเดียว ต่างจาก Module Position ที่จะมีหลายพื้นที่ตามที่ผู้ออกแบบจะออกแบบมาและโดยปกติจะล้อมรอบพื้นที่รอบคอมโพเนนท์ ตามรูปตัวอย่างด้านล่างครับ

 

 

 

เขียนปลั๊กอินตรวจสอบผู้ใช้โดยใช้ฐานข้อมูล MSSQL ตอนที่ 2

บทความนี้เป็นตอนต่อเนื่องจาก เขียนปลั๊กอินตรวจสอบผู้ใช้โดยใช้ฐานข้อมูล MSSQL ตอนที่ 1 นะครับหากท่านใดยังไม่ได้ได้อ่านบทความในตอนที่่แล้วขอให้อ่านก่อนนะครับ เพื่อจะได้ทำความเข้าใจได้ต่อเนื่อง จากตอนแรกเราบอกหลักการการทำงาน และขั้นตอนการพัฒนาปลั๊กอินกันไปแล้วในตอนนี้เราจะมาดูการเขียนโค้ดกัน แต่ก่อนที่จะเขียนโค้ดได้เราต้องมาสร้างไฟล์ XML สำหรับการติดตั้งกันก่อน เพื่อที่จะได้ทำการ Discover และติดตั้งให้จูมล่ารู้จัก เรามาดูกันเลยครับ

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

เริ่มต้นเขียนจูมล่าโมดูล (2.5/3.2)-ตอนที่ 2

จากบทความ เริ่มต้นเขียนจูมล่าโมดูล (2.5/3.2)-ตอนที่ 1 ซึ่งได้พูดถึงรายละเอียดเบื้องต้นของการทำงานของจูมล่าโมดูล และการเขียนโค้ดเบื้องต้นในส่วนของไฟล์หลักของโมดูล และไฟล์ XML สำหรับอธิบายการติดตั้ง ในบทความนี้เราจะมาดูกันที่ตัว helper ซึ่งทำหน้าที่ในการโหลดข้อมูลจากฐานข้อมูล เนื่องจากโมดูลตัวนี้ทำหน้าที่ในการแสดงผลกำหนดการฝึกอบรมล่าสุดจากตัวคอมโพเนนท์ชื่อ RegOnline (com_regonline) ดังนั้นหลักการของเราคือเราจะใช้ข้อมูลจากโมเดลของตัวคอมโพเนนท์ในการแสดงรายการ โดยไม่มีการเขียน Query ใหม่แต่อย่างใดนะครับ

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

การใช้งาน ignore_request ในโมเดล

ปกติเราอาจจะเคยเห็นในการเรียกใช้งานโมเดลจะมีการส่งค่าพารามีเตอร์อยู่ตัวหนึ่งให้กับโมเดล คือ ignore_request ซึ่งจะมีค่าเป็น True วันนี้ผมจะมาพูดถึงค่าพารามีเตอร์ตัวนี่้ของโมเดลกันว่าหมายถึงอะไร และใช้งานตอนไหน

ในการเรียก JModelLegacy::getInstance($type, $prefix, $config) หรือ JModel::getInstance() เราจะสามารถส่งค่าพารามีเตอร์ได้สามตัว ซึ่งเป็นการส่งค่าแบบ Optional คือไม่บังคับทั้งหมด เนื่องจากมันมีค่าโดยปริยายหรือค่าเบื้องต้นอยู่แล้ว โดยเฉพาะการเรียกที่ตัวคอนโทรลเลอร์ แต่มีบ้างเหมือนกันที่เราจำเป็นต้องเรียกโมเดลของคอมโพเนนท์อื่นๆ หรีือโมเดลอื่นๆ ที่ไม่ใช่โมเดลที่คอนโทรลเลอร์โหลดให้เรา ในการเรียกใช้งานผ่าน $controller->getModel() เราก็ส่งพารามีเตอร์ได้สามาตัวเช่นกันนะครับ โดยที่ตัวแรกคือ ชื่อของโมเดล ตัวที่สองคือ Prefix เป็นชื่อคอมโพนเนนท์ตามด้วย Model ส่วนตัวที่สามนี่เป็นอาเรย์ครับ ส่งค่าได้มากมายและ ignore_request ก็เป็นหนึ่งในนั้น

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

เขียนปลั๊กอินตรวจสอบผู้ใช้โดยใช้ฐานข้อมูล MSSQL ตอนที่ 1

สำหรับบทความในตอนนี้จะเริ่มเข้าสู่ตัวอย่างของการเขียนตัวปลั๊กอิน หลังจากที่เราได้แนะนำการทำงานของปลั๊กอินในจูมล่าไปแล้ว ถ้าท่านที่ยังไม่เข้าใจเรื่องการทำงานของปลั๊กอินก็กลับไปอ่านดูก่อนนะครับ สำหรับตัวปลั๊กอินนั้นถ้าเข้าใจการทำงานของมันตามเหตุการณ์แล้ว การเขียนโค๊ดนั้นไม่ยากครับ ไม่เหมือนกับการเขียนคอมโพเนนท์

ตัวปลั๊กอินที่เราจะเขียนในชุดของบทความนี้ ลองจินตนาการว่าเรามีฐานข้อมูลของผู้ใช้ที่เก็บอยู่บน MSSQL Server ซึ่งมีชื่่อผู้ใช้ รหัสผ่าน และ อีเมลสำหรับใช้ในการตรวจสอบผู้ใช้ซึ่งใช้อยู่ในเว็บอื่นๆ เช่นบทอินทราเน็ตเป็นต้น ถ้าจะต้องใช้จูมล่าเพิ่มอิีกตัวแล้วต้องมาให้ผู้ใช้สมัครใหม่ สร้างชื่อและรหัสผ่านใหม่ก็คงจะโดนบ่นเป็นแน่ ดังนนั้นจุดมุ่งหมายก็คือเราต้องการที่จะใช้ข้อมูลชุดนี้แหละครับสำหรับให้ผู้ใช้ทำการล็อกอินเข้าใช้งาน แล้วสามารถทำได้โดยไม่ต้องสร้างข้อมูลผู้ใช้บนจูมล่าเลยนะครับ จูมล่าจะสร้างข้อมูลให้เองเมื่อทำการล็อกอินสำเร็จ เราแค่ต้องเข้าไปกำหนดสิทธิในการใช้งานเท่านั้นครับ น่าสนใจมั๊ยครับ

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

การทำงานของปลั๊กอินในจูมล่า

สวัสดีครับ พอดีมีคนสอบถามมาว่าทำไมไม่ค่อยมีใครเขียนโค๊ดของปลั๊กอิน หาอ่านไม่ค่อยได้ ถ้าเป็นบทความหรือคนไทยก็คงใช่ครับ ไม่ค่อยจะมีแต่ถ้าเป็นภาษาอังกฤษก็มีมากเหมือนกัน วันนี้ก็เลยจะนำเสนอบทความเกี่ยวกับปลั๊กอินเรื่องการทำงานของมันก่อนแล้วกันนะครับ เพราะโค๊ดของปลัํ๊กอินเขียนน้อยครับแต่ต้องเข้าใจหลักการ แต่คนที่่คิดปลั๊กอินนี่น่าทึ่งมากครับสำหรับผมที่ไม่ได้เล่าเรียนมาทางด้านคอมพิวเตอร์หรือโปรแกรมมิ่งโดยตรง

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