ถึง drupal จะยืดหยุ่นมากจนเราทำอะไรก็ได้ใน content จะเขียน php ลงใน content โดยใช้ php filter หรือจะทำ cck field สำหรับ download ไฟล์ แต่มันก็ยังไม่เพียงพอสำหรับการทำงานบางอย่างของ site ของเรา
เช่นผมอยากจะ validate ข้อมูลบน form ซึ่ง webfrom validation ไม่สามารถทำได้ เราจำเป็นต้องสร้าง custom module ขึ้นมาเพื่อจะทำงานนั้นๆ
การสร้าง custom module นั้นมี tutorial อยู่ที่ http://drupal.org/developing/modules หรือที่ ThaiTux ซึ่งได้แปลไว้เรียบร้อยแล้ว(อ่านแล้วงงนิดหน่อย) ซึ่งผมจะขออธิบายการสร้าง module ง่ายๆ คือ
การสร้าง module จำเป็นต้องมีไฟล์สำคัญอยู่ 2 ไฟล์คือ
โดยความหมายก็ตรงตัวเลยครับ
นอกจากนี้เรายังสามารถทำ validation ได้โดยใช้คำสั่ง
Continue Reading...
เช่นผมอยากจะ validate ข้อมูลบน form ซึ่ง webfrom validation ไม่สามารถทำได้ เราจำเป็นต้องสร้าง custom module ขึ้นมาเพื่อจะทำงานนั้นๆ
การสร้าง custom module นั้นมี tutorial อยู่ที่ http://drupal.org/developing/modules หรือที่ ThaiTux ซึ่งได้แปลไว้เรียบร้อยแล้ว(อ่านแล้วงงนิดหน่อย) ซึ่งผมจะขออธิบายการสร้าง module ง่ายๆ คือ
การสร้าง module จำเป็นต้องมีไฟล์สำคัญอยู่ 2 ไฟล์คือ
- module_name.info
- module_name.module
; $Id$ name = leknarm description = leknarm hook module package = "Other" core = 6.x
โดยความหมายก็ตรงตัวเลยครับ
- name คือชื่อ
- description คือรายละเอียด
- package คือให้มันอยู่ package ไหน ในที่นี้คือ Other
- และ core คือใช้ได้กับ version อะไร
<?php
// $Id$
/**
* Implementation of hook_form().
*/
function leknarm_form_alter(&$form, $form_state, $form_id) {
if($form_id == 'webform_client_form_1') {
$form['#submit'][] = 'leknarm_form1_submit';
}
if($form_id == 'webform_client_form_2') {
$form['#submit'][] = 'leknarm_form2_submit';
}
}
function leknarm_form1_submit($form, &$form_state) {
// do anything
}
function leknarm_form2_submit($form, &$form_state) {
// do anything
}
?> จากด้านบน มีฟังก์ชัน leknarm_form_alter ซึ่งฟังก์ชันดังกล่าวเป็น hook ของ form โดยที่เมื่อมีการ request page ที่มี form ใดๆ มันจะไปเรียกฟังก์ชันดังกล่าวทันที ซึ่งในฟังก์ชันดังกล่าวเราเขียนไว้ว่า ถ้าเป็น form ที่มี id เป็น webform_client_form_1 มีการ submit ข้อมูลแล้วให้ไปเรียกฟังก์ชัน leknarm_form1_submitนอกจากนี้เรายังสามารถทำ validation ได้โดยใช้คำสั่ง
$form['#validate'][] แทนที่คำสั่ง $form['#submit'][]