28 ตุลาคม 2552
การนำ Feed มาแสดงผลใน Drupal โดยใช้ Module FeedAPI
26 ตุลาคม 2552
การนำ Feed มาแสดงผลโดยใช้ Module Aggregator
16 ตุลาคม 2552
การเขึยน PHP code ใน Drupal
14 ตุลาคม 2552
การทำ Node แบบสุ่มด้วย Views แบบ Block
12 ตุลาคม 2552
ติดตั้ง Blog ให้กับ Drupal
09 ตุลาคม 2552
การเรียกใช้งาน jQuery จาก google APIs
แบบที่ 1 ใช้งานผ่าน google.load()
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// โหลด jQuery
google.load("jquery", "1.3.2");
google.setOnLoadCallback(function() {
// วางโค๊ดของคุณที่นี่
});
</script>
เราสามารถเปลี่ยน Version ได้โดยดูจาก http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery
แบบที่ 2 นำเข้า Libary โดยตรงจาก Google APIs
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
script ด้านบน เป็นการนำเข้า Libary ชนิด last version สามารถเลือก Version ได้นะครับ โดยเลือกได้จาก http://blog.jquery.com/2009/08/20/codejquerycom-redirected-to-google-ajax-apis/
08 ตุลาคม 2552
jQuery
PHP Regular Expression Function
จากที่ผ่านมาเราได้ให้ความรู้เกี่ยวกับ Meta characters ไปแล้ว ในส่วนนี้เราจะพูดถึงฟังก์ชันของ PHP ที่นำเอา regex ไปใช้ซึ่งได้แก่
ฟังก์ัชั่นแบบ Perl Compatible Regular Expression (PCRE) กับ POSIX Extended Regular Expression
Perl compatible Regular Expression (PREC) ประกอบด้วย
- preg_grep
- preg_last_error
- preg_match_all
- preg_match
- preg_quote
- preg_replace_callback
- preg_replace
- preg_split
POSIX Extended Regular Expression ประกอบด้วย
- ereg_replace
- ereg
- eregi_replace
- eregi
- split
- spliti
- sql_regcase
preg_match() ใช้สำหรับค้นหาข้อความ เปรียบเทียบข้อความกับ patthen โดยมี syntax คือ int preg_match (
string $pattern , string $subject [, array &$matches [, int $flags [, int $offset ]]] ) ตัวอย่างเช่น
<?php
$string = "http://docs.google.com/View?id=dvn0000_5ddbv0000";
if (preg_match('/^http:\/\/docs.google.com\/View\?id=([a-z0-9]{7})+_+([a-z0-9]{9})+$/', $string ))
{
echo "$string is Google Docs URL";
}
else
{
echo "$string is't Google Docs URL";
}
?>
ผลลัพธ์ที่ได้ก็จะเป็น http://docs.google.com/View?id=dvn0000_5ddbv0000 is Google Docs URL
ตัวอย่างการนำเอาข้อความที่ค้นหาเจอมาใช้งาน
<?php
$string = "YOUR IP IS 127.0.0.1";
if (preg_match('/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/', $string, $match ))
{
echo $match[0];
}
else
{
echo "$string is't have IP Address";
}
?>
ผลลัพธ์ ที่ได้คือ 127.0.0.1
preg_replace() ใช้สำหรับค้นหาและแทนที่ข้อความ มี syntax คือ mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit=
-1 [, int &$count ]] ) preg_replace สามารถใช้ patthen ในรูปแบบของ array ได้ นั่นก็หมายถึง สามารถแทนที่ข้อความหลาย ๆ แบบ ด้วย ข้อความ หลาย ๆ แบบ ตัวอย่างเช่น
<?php
$patthen = array('/ll/', '/or/');
$strreplace = array('--', '--');
$string = "Hello World";
echo preg_replace($patthen, $strreplace, $string);
?>
ผลลัพธ์ที่ได้คือ He--o w--ld
ereg() ใช้ไว้สำหรับค้นหาข้อความ มี syntax คือ int ereg ( string $pattern , string $string [, array &$regs ] ) ถ้าคนพบรูปแบบที่กำหนดก็จะคืนค่า True ถ้าไม่พบหรือเกิดความผิดพลาด ก็จะคืนค่า False เราสามารถนำค่าที่ค้นหาเจอไปใช้ได้โดยการเพิ่ม parameter ตัวที่ 3 เข้ามา คือ &$regs และจะคืนค่าออกมาเป็น array เราจะมายกตัวอย่างให้ดูำักัน เช่น
<?php
$text = "Hello";
if (ereg("^[a-z]", $text)) {
echo "$text is Match.";
} else {
echo "$text is Not Match.";
}
?>
ผลลัพท์ทีได้จากการ ทำงานของฟังก์ชั่นข้างบนคือ จะพิมพ์ประโยค Hello is Match. ออกมาก
การนำเอาคำที่ค้นหาเจอไปใช้งาน สามารถทำไ้ด้ เช่น
<?php
$date = "01-01-2009";
if (ereg("([0-9]{2})-([0-9]{2})-([0-9]{4})", $date, $regs)) {
$year = $regs[3];
echo "this year is : $year";
} else {
echo "Date Format is Not Match !";
}
?>
จากตัวอย่างข้างบน จะได้ผลลัพธ์ คือ this year is : 2009 จะเห็นว่าเราได้เพิ่ม $regs เข้ามารับค่าของ array ที่เปรียบเทียบแล้วตรงกับ patthen ค่าที่มีอยู่ใน $regs จะเรียงตามกลุ่มของ patthen ที่เราระบุไว้ โดยจะมีข้อมูลอยู่ภายใน array ดังนี้
$regs[0] = "01-01-2009"
$regs[1] = "01"
$regs[2] = "01"
$regs[3] ="2009"
ereg_replace () ใช้่สำหรับค้นหาและแทนที่คำ ใน ข้อความ โดยใช้ patthen เป็นตัวระบุรูปแบบของข้อความ มี syntax คือ string ereg_replace
( string $pattern , string $replacement , string $string ) ถ้าทำการค้นหาเปรียบเทียบคำพบแล้ว ก็จะแทนที่ด้วยคำที่ระบุเข้าไปใน $replacement ตัวอย่างเช่น
<?php
$string = "Hello world";
echo ereg_replace("world", "sutee", $string);
// ผลลัพธ์ ที่ได้ออกมาคือ Hello sutee
?>
01 ตุลาคม 2552
Regular Expressions Metacharacter
Regular Expressions หรือ regex เป็น เครื่องมือที่มีประโยชน์มากในการเปรียบเทียบตัวอักษร คำ หรือ รูปแบบของข้อความต่างๆ ที่เราต้องการจากข้อความอื่นๆ เมื่อค้นหาได้แล้วเราก็อาจจะแทนที่ด้วยข้อความอื่นๆ ได้
การใช้ regex ไม่ได้มีเฉพาะใน PHP นะครับ อย่างใน Javascript, Perl, VBscript แม้กระทั่งใน MySQL ก็มีเช่นกันครับ
ถ้าคุณต้องการจะใช้ regex ละก็คงหนีไม่พ้นที่จะต้องทำความรู้จักกับ Meta characters เพราะนอกจากเราจะใช้ตัวอักษรและตัวเลขต่างๆ ในการสร้างรูปแบบ (pattern) ของตัวอักษรที่เราต้องการจะค้นหาแล้ว เราสามารถใช้ Meta characters มาช่วยสร้างรูปแบบอื่นๆ ที่มีความซับซ้อนมากขึ้นได้
Meta characters
- \ ใช้เป็น escape character
- ^ ใช้สำหรับกำหนด ตำแหน่งเริ่มต้นของข้อความ เช่น "^PHP" จะตรงกับข้อความที่จะต้องขึ้นต้นด้วย PHP เท่านั้น
- $ ใช้สำหรับกำหนด ตำแหน่งสิ้นสุด เช่น "PHP$" จะตรงกับข้อความที่จะต้องลงท้า่ยด้วย PHP เท่านั้น
- . ใช้สำหรับแทนตัวอักษรใด ๆ 1 ตัวอักษร เช่น "P.P" จะตรงกับ "PHP" แต่จะไม่้ตรงกับ "PHHP" เนื่องจากต้องการตัวอักษรตัวใดก็ได้ที่อยู่ตรงกลาง
- [ เริ่มต้นการกำหนดระดับอักษรที่เป็นไปได้ในเงื่อนไข
- ] สิ้นสุดการกำหนดระดับอักษร
- | เป็นสัญลักษณ์ที่สำหรับเป็นทางเลือก
- ( ใช้สำหรับเริ่มจัดกลุ่มตัวอักษร
- ) ใช้สำหรับสิ้นสุดการจัดกลุ่มตัวอักษร
- ? แทนตัวอักษร แต่จะสามารถปรากฎ หรือไม่ปรากฎก็ได้ 1 ครั้ง
- * แืทนตัวอักษร แต่จะสามารถปรากฎ หรือไม่ปรากฎ ได้หลาย ๆ ครั้ง เช่น "wh*" จะตรงกับ "w" และ "where"
- + แทนตัวอักษร ที่จะต้องปรากฎ 1 ครั้ง หรือปรากฎได้หลายครั้ง เช่น "wh+" จะตรงกับ "where" แต่จะตรงกบ "w"
- { เริ่มตรวจสอบจำนวนตัวอักษร
- } สิ้นสุดการตรวจสอบตัวอักษร
- - ใช้สำหรับระบุช่้วงตัวอักษร ต้องใช้ภายใต้ [] เท่านั้น
การใช้งาน [ และ ]
การ ใช้งาน [ และ ] เป็นการตรวจสอบระดับตัวอักษรที่เป็นไปได้ในเงื่อนไข จะสามารถตรวจสอบได้เพียง 1 ตัวอักษร ตัวอย่าง "[abcde]" จะตรงกับ "a" แต่จะไม่ตรงกับ "f" และ "g"การใช้งาน { และ }
เราสามารถระบุจำนวนของตัวอักษร การใช้งานของ { } สามารถใช้ได้ 3 แบบ คือ- {n} n แทนตัวเลขที่ปรากฎได้ หมายถึงต้องมีตัวอักษรปรากฎเท่ากับจำนวนตัวเลขที่ระบุอยู่ เช่น "{3}" จะต้องมี ตัวอักษรหรือตัวเลขปรากฎ 3 ตัวอักษร ซึ่งจะตรงกับ "are" แต่จะไม่ตรงกับ "were"
- {n,} n แทนตัวเลขที่ปรากฎได้ หมยถึง ต้องมีตัวอักษรปรากฎอยู่ มากกว่าหรือเท่ากับ จำนวนตัวเลขที่ระบุอยู่ เช่น "{3,}" จะต้องมี อักษรปรากฎอยู่อย่างน้อย 3 ตัวอักษร ซึ่งจะตรงกับ "are" และ "were" แต่จะไม่ตรงกับ "do"
- {n,m} n แทนตัวเลขที่ปรากฎได้ m แทนตัวเลขที่ปรากฎได้สูงสุด หมายถึง ต้องมีตัวอักษรปรากฏอยู่อย่างน้อน n ตัว แต่ต้องไม่เกิน m ตัว เช่น "{3,5}" ซึ่งจะตรงกับ "are" และ "where" แต่จะไม่ตรงกับ "do"
การใช้งาน [] ร่วมกัีบ {}
การนำเอา "[]" มาใช้งานร่วมกับ "{}" ก็จะทำให้ "[]" ที่ตรวจสอบตัวอักษรได้แต่ 1 ตัวอักษร ก็ทำให้สามารถตรวจสอบ ได้หลาย ตัวอักษร เราสามารถใช้ "-" เช่น "[a-z]{3}" จะตรงกับ "who" และ "are" ซึ่งตรงตามเงื่อนไขก็คือ สามารถมี a - z แต่ต้องมีขนาด 3 ตัวอักษร แต่จะไม่ตรงกับ "2bb" เนื่องจากมี ตัวเลขปรากฎอยู่การใช้ () และ |
เราสามารถใช้ () จัดกลุ่มข้อความที่มีอยู่ และ | ใช้สำหรับเลือกทางเลือก เช่น "a(b|c)" จะตรงกับ "ab" และ "ac" แต่จะไม่ตรงกับ "bc" ลองดูตัวอย่างที่มีการทำงานซับซ้อนมากขึ้นอีกนะครับ "^[a-z]+[a-z]$" ความหมายคือ ต้องขึ้นต้นด้วยตัวอักษร และ ลงท้ายด้วยตัวอักษร อย่างน้อย 1 ตัว "^[a-z\-]" ความหมายคือ ต้องขึ้นต้นด้วยตัวอักษร หรือ "-" ตัวอย่างของ Regex ที่มีใช้บ่อย ๆ "^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$" ใช้สำหรับตรวจสอบ email "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" ใช้สำหรับตรวจสอบ IP AddressFileField ImageField
เมื่อเราจะเข้าไปจัดการกับ Fields ของ content types ยังมี Fields อีกบางประเภท ที่ยังไม่ถูกติดตั้งมากับ CCK นั้นก็คือ Imagefield และ Filefield ในบางครั้งที่เราต้องการให้ Content ของเรามีการแทรกรูปภาพ หรือไฟล์ ลงไปด้วย
การติดตั้ง Imagesfield และ Filefield นั้นจะต้องติดตั้ง Modules ดังนี้
- CCK Module
- FileField Module
และมี Module ที่เกี่ยวข้องกันอีก คือ ImageCache ไว้สำหรับจัดกาีรกับรูปภาพ ซึ่งไม่ต้องติดตั้ง Module นี้ก็สามารถใช้งานได้
เริ่มต้น เราต้องดาวน์โหลด FileField Module และ ImageField Module ก่อน และทำการคัดลอก Modules ทั้ง 2 ตัวนี้ไปไว้ใน /Modules เข้าไปทำการเปิดใช้งาน Modules โดยเข้าไปที่เมนู Administer > Site building > Modules ทำการ Enable Modules ทั้ง 2 ตัวนี้
เราจะมาทดสอบการสร้าง ImageField ให้กับ Announcement โดยเราจะสร้าง Content type ขึ้นมาใหม่โดยกำหนดชื่อว่า Announcement แล้วเพิ่ม ImagesField เข้าไปให้แสดงรูปภาพประกอบด้วย
ขั้นตอนแรก ต้องเพิ่ม Content type เข้าไป โดยไปที่เมนู Administer > Content management > Content types เลือก Add content type
ทำการป้อนค่้าดังนี้
Name : Announcement
Type: announcement
Description : Announcement news this web site
Title field label : หัวข้อข่าว
Body field label : เนื้อหาข่าว
ทำการบันทึกโดยเลือก Save content type แ้ล้วเราจะได้ Content type ชนิด Announcement ขึ้นมาดังรูป
หลังจากสร้าง Content type เสร็จแล้วให้เข้่าไปที่ manage fields ของ Announcement
ทำการเพิ่ม new field ดังนี้
lebel : รูปภาพข่าว
field name picturenews
type : file
Form element : Image
เมื่อทำการป้อนค่าแล้ว เลือกที่ Save
จากนั้นจะเข้่าสู่การกำหนดค่าของ field ที่เราได้สร้่างขึ้นมา
ทำการป้อนค่าดังนี้
Permitted upload file extensions: gif jpg jepg png bmp
ทำเครื่องหมายถูกที่ Use default image
Upload image: เลือกไฟล์ที่เราจะกำหนดให้เป็นไฟล์เริ่มต้น สำหรับผม ผมได้สร้างไฟล์นี้ขึ้นมาเพื่อกำหนดเป็นค่าเริ่มต้นไว้ ผมก็จะเลือกไฟล์ที่ทำได้สสร้างไว้
เลือก Save field settings ถือเป็นการเสร็จสินการเพิ่ม field ชนิด image ให้กับ Announcement ต่อไปนี้เราจะมาทดสอบการเพิ่ม เนื้อหา ให้กับ Announcement กัน โดย เข้าไปที่เมนู Create content > Announcement ตัวอย่างดังรูป
ทำการป้อน หัวข้อข่าว เนื้อหาข่าว และเลือกรูปภาพข่าว จากนั้นเลือก Save เพียงแค่นี้ Announcement ของเราก็สามารถเพิ่มรูปภาพเข้าไปได้แล้ว จากข่าวที่ผมเพิ่มเข้าไป แสดงผลได้แบบนี้
เห็นมั้ยละครับ การเพิ่ม ImageField ไม่ยากอย่างที่คิด ส่วนการเพิ่ม Filefield ก็ทำเหมือนกัน Imagefield นี่แหละ แต่ไอ้ตอนที่เลือก Form element ให้เลือก เป็น File ก็แค่นั้นเองครับ คราวหน้าผมจะมาบอกกับการจัดการขนาด กับรูปภาพที่สร้างขึ้นมาจาก Imagefield นะครับ
Content Type CCK
คราวนี้เราจะมาเรียนรู้กับ Content Types ด้วย CCK (Content Construction Kit)
Content Types หมายถึงประเภทของเนื้อหา ที่ใช้ในเว็บไซต์ทั้งหมด ตามปรกติ Drupal จะกำหนด Contype types มาให้ 2 ประเภท คือ Page และ Story และจะสามารถมีเสริมได้อีก คือ Forum Blog Pool ตาม Modules ที่เราได้เปิดการใช้งาน Content types เหล่านี้ถือเป็น Content types ที่ Modules แต่ละประเภท เป็นคนสร้างขึ้นมาให้ใช้งานนั่นเอง เราสามารถเข้าไปจัดการกับ Content types เข้าไปที่ Administer > Content management > Content types เราสามารถสร้างประเภทเนื้อหาของเราเองได้ การสร้างประเภทเนื้อหาสามารถทำได้โดย เลือกที่ add content type แล้วทำการป้อนข้อมูลของประเภทเนื้อหา และกำหนดค่าต่าง ซึ่งการกำหนดค่าต่าง ๆ จะมีดังต่อไปนี้
Identification : เป็นการกำหนดค่าพื้นฐานของ Content types ชื่อ ชื่อที่ระบบเรียกใช้ คำอธิบาย
Submission form settings : กำหนด ชื่อ field และ label ของ form ในการเพิ่มเนื้อหา และจำนวนตัวอักษรที่น้อยที่สุด
Workflow settings : เป็นการกำหนดค่าด้านการใช้งาน การกำหนดค่าเริ่มต้นของการใช้งาน เช่น อนุญาติให้ประกาศได้เลยหรือไม่
Comment settings : เป็นการกำหนดค่าด้านการ comment ของ Content types ประเภทนี้
CCK หรือ Content Construction Kit เป็น Module ที่มีไว้สำหรับเพิ่ม field ให้กับ Content types หากเริ่มเพิ่มประเภทของเนื้อหาแล้วยังต้องการเพิ่ม field ต้องใช้ CCK เป็นตัวช่วยสำหรับการเพิ่ม field
การติดตั้ง Module CCK เริ่มต้นด้วยการเตรียม Module โดยสามารถเข้าไปดาวน์โหลด ได้ที่ http://drupal.org/project/cck เมื่อดาวน์โหลดเสร็จแล้วก็ทำการแยกไฟล์ แล้วทำการคัดลอกไปไว้ในโฟลเดอร์ modules แล้้วทำการเปิดการใช้งาน Module โดยเข้าไปที่ Administer > Site building > Modules แล้วทำการเปิดกาีรใช้งาน CCK โดยทำการเช็คเครื่องหมายถูก ที่ Modules ภายใต้ package ของ CCK ทั้งหมด
แล้วเลือก Save configuration
หลังจากได้ติดตั้ง Modules CCK ไปกันแล้วเราจะมาลองเพิ่ม field ให้กับ Content types กัน เข้าไปที่ Administer > Content management > Content types ระบบจะทำการเพิ่ม ส่วนของการจัดการ field ให้โดยอัตโนมัติ ตามรูปด้านล่าง
เราสามารถเข้าไปจัดการกับ field ของ Content types ได้ทุกประเภท โดยการคลิ๊กที่ manage fields แล้วจะพบกับส่วนของการจัดการ fields
เราสามารถเพิ่ม fields ได้ โดยป้อนในช่อง new field
- label : ป้ายกำหนดของ field
- field name : ชื่อของ field
- type of data to store : ชนิดข้อมูล
- form element to edit the data : รูปแบบการป้อนข้อมูล
หลังจากนั้นกดปุ่ม save แล้วจะไปพบกับการตั้งค่าของ ชนิดข้อมูลแต่ละประเภท เพียงแค่นี้เราก็สามารถจัดการกับ field ไว้ใช้งานเองได้อย่างไม่ยากเลย
การติดตั้งภาษาไทยให้กับ Drupal
จากนั้นต้องเปิดการใช้งาน ของ Modules Locate โดยเข้าไปที่เมนู Administer > Site building > modules ทำการเช็คถูกที่ ด้่านหน้าของ Modules Locate แล้ว เลือก Save configuration
เมื่อเปิดการใช้งาน Modules Locate แล้ว จะมี เมนูเพิ่มขึ้นมาอีกหนึ่่งตัว คือ Translate interface เข้าไปที่เมนู Translate interface เลือก Import
ช่อง Language file เลือกไฟล์ th.po ที่เราได้ดาวน์โหลดมา
Import into เลือก thai (ภาษาไทย)
เลือก Import
ระบบ จะทำการคัดลองข้อความภาษาออกมาจากไฟล์ th.po และถ้าหาก เราต้องการแปล เพิ่มเอง สามารถทำได้โดยเลือกที่เมนู Search ป้อนคำที่เราต้องการค้นหา และ ค้นหา ทำการแก้ไข ภาษาไทย ให้กับข้อความดังกล่่าว
เมื่อทำการ Import ตัวแปลภาษาเข้ามาแล้ว ต้องไปเปิดการใช้งานภาษาไทย โดยเข้าไปที่เมนู Administer > Site configuration > Language ทำการเช็คถูกที่ Enable และ Default ของภาษาไทย แล้วเลือก Save configuration เป็นการติดตั้งภาษาไทยเสร็จสมบูรณ์
เครดิต : http://www.thaidrupal.org/index.php?q=node/5