Sixhead Template PHP Template Engine ไทยทำตอนที่ 1
หลายๆคนคงเคยได้ยินผมเปรยๆ เรื่อง Sixhead Template มาบ้างแล้ว มาวันนี้ พี่โป้ sixhead.com ได้ เปิด opensource เจ้าตัว Sixhead Template กันแล้ว ผมเลยจะขอจับมาเล่าสู่กันฟังว่าเจ้า Sixhead Template นี้มันคืออะไร
Sixhead Template คือ Template Engine ดีๆ ที่คนไทยทำใช้เอง ผมต้องเล่าย่อยให้ฟังก่อนว่า Template Engine คืออะไร ?? โดยปกติในการพัฒนา Web Application ด้วย PHP นั้น หากเราแยกการทำงานแล้วอาจจะแบ่งแบบเห็นภาพได้ 2 ทางคือ
1. ส่วนที่เป็น core php script หรือส่วนที่เป็น php ให้ทำงานตามโครงสร้างที่ออกแบบไว้ ให้วนลูป ให้ if ให้ else ต่างๆ
เพื่อให้ Program สมบูรณ์ตามความต้องการที่เราวางไว้
2. ส่วนที่เป็นการแสดงผลให้หน้าตา website สวยงาม ส่วนนี้ก็คือพวก HTML , CSS , Javascript ต่างๆเพื่อประกอบกันเป็น
การแสดงผลผ่านหน้าจอ
ปัญหามันเกิดตรงที่ว่า ไอ้ 2 ส่วนที่ผมบอกเนี่ยในการเขียน PHP ตามปกติ มันมักจะปนกันอยู่ใน Source PHP Script ทำให้เกิดปัญหาตามมาคือส่วนใหญ่แล้ว Web Programmer มักไม่ใช่คนที่ทำ Designer หากแต่เป็นคนละกลุ่มกัน หลายๆบริษัทอาจจะแบ่งงานกันว่า Designer เมื่อทำ Design Web เสร็จแล้วต้องมีหน้าที่ตัด เป็น HTML เพื่อส่งงานให้ Web Programmer นำไปประกอบกับโครงสร้าง PHP ที่ออกแบบไว้
บางบริษัทก็ให้ Designer ออกแบบอย่างเดียว แล้วให้ Web Programmer มาตัดเอา Design มาประกอบกับ PHP ที่เขียนไว้
พัฒนาจากปัญหาที่พบเจอมา
ปัญหามันเกิดไอ้ตรงเอามาประกอบนี่แหล่ะครับ หลายๆคนที่ Designer เป็นคนประกอบ มักมีปัญหาไม่เข้าใจโครงสร้างของ PHP
หากประกอบด้วย Dreamweaver แล้วบางหน้าอาจจะเห็นว่า PHP มีแค่หมุดอันเดียว (ที่ข้างในอุดมไปด้วย source php หลายร้อยบรรทัด) คราวนี้พอ Desinger ไปลบ code PHP หมุดเดียวนั้นทิ้ง ทาง Web Programmer ก็แทบสิ้นสติ ด่าพ่อล่อแม่กันทุกครั้งไป
หน้าจอของ Dreamweaver ที่แสดงหมุด php ที่ข้างในเต็มไปด้วย php code (ซึ่ง Designer มักไม่ค่อยเข้าใจและพร้อมจะลบทิ้ง)
แนวคิดของ Templeate Engine ก็คือจับส่วนที่เป็น core script php แยกออกจากส่วนที่เป็น html design คือให้ทั้ง PHP Programer ทำงานแยกส่วนกับ Designer อย่างเด็ดขาด ว่ากันง่ายๆคือ
Designer แก้ไขในส่วน .html (แล้วแต่ templete engine จะตั้งนามสกุลอะไรแต่ขอให้เข้าใจว่า มันคือก้อน html นะครับ) ตกแต่งเอาให้สวยงามตามใจชอบ โดยใน .html จะไม่มีส่วนผสมของ Script php อยู่เลย
ทาง Web programmer ไม่ต้องไปยุ่งส่วน .html ให้เขียนแต่ .php โดยให้ดึง .html เรียกออกมาเป็นชิ้นส่วนนำมาแสดงผล
การทำงานลักษณะนี้ทำให้ง่ายต่อการพัฒนาแบบหลายส่วน โดยทาง Web programmer กับ Designer ก็ตกลงการทำงาน อาจจะให้ Web programmer ขึ้นโครง HTML แบบง่ายๆเอาไว้ให้ Designer ตกแต่งเพิ่มเติมเป็นต้น
ซึ่งแนวคิดของ Template Engine นี้ เจ้าใหญ่ๆที่น่าจะรู้จักกันดีก็เช่น
Smarty Template
http://www.smarty.net
TemplatePower
http://templatepower.codocad.com
หลายๆสำนักที่ทำ PHP Template Engine ออกมาก็มีการพัฒนาต่อยอดให้ Template ของตัวเองมีความสามารถเพิ่มขึ้นมากมาย เช่น มีระบบ Cache มีระบบติดต่อฐานข้อมูลมากขึ้น มีระบบ Genarate HTML อะไรวุ่นวายต่างๆกันไป
บางตัวก็ยิ่งใหญ่จนกลายเป็น PHP Framework กันไป
ซึ่งทั้งหมดที่กล่าวมานี้ ร้อยละ ร้อยคือ ฝรั่งทำมาให้เราไปก้มหัวใช้กันไป :P
มาวันนี้คนไทยทำเองใช้เองแล้ว ผมเลยขอนำเสนอ Sixhead Template ครับ :)
Sixhead Template คือผลงานของคนไทยล้วนๆ
เจ้าของผลงานก็คือพี่โป้จาก http://www.sixhead.com หากใครรู้จักคนเก่าคนแก่หน่อยคงพอจำกันได้ เทคนิคการเขียนลักษณะนี้ พี่โป้ก็ใช้มาตั้งแต่สมัยเขียน Perl แล้ว
พอ port มาเป็น PHP ก็เริ่มมีการพัฒนาต่อยอด ต่างๆมากมายและมีการ Fix Bug ให้ตัว Templete สมบูรณ์มากขึ้นงานนี้ พี่โป้ไม่ได้ทำคนเดียวครับ ^^ ต้องเครดิตให้กับ
^LookHin^
http://www.unzeen.com
K
http://www.dexdev.com
ปัจจุบัน (ณ ที่เขียนบทความนี้) เป็น Version 5.7 เป็นลิขสิทธ์แบบ BSD License คือใช้งานได้ฟรี พูดง่ายๆคือ คุณสามารถเอา sixhead template ไป include ไว้ใน php script ของคุณได้ทันทีจะแก้ไขดัดแปลงอย่างไรก็ได้ แต่ห้ามลบเครดิตของผู้พัฒนาออกเท่านั้นเองครับ
ไป Download มาลองแล้วศึกษาไปพร้อมๆกัน
เชิญไปกดมาลองกันได้ที่
http://sixhead.com/2008/12/02/sixhead-template-php5-template-engine-for-programmer-and-designer/
เมื่อ Download มาแล้วแตก Zip ออกมาจะเจอ Script เต็มไปหมด อย่าตกใจครับ ส่วนใหญ่จะเป็น ตัวอย่างทั้งนั้นหลักๆที่ต้องใช้คือ
SiXhEaD.Template.php
เป็นตัว Class ของ Sixhead Template ตัวหลักของ Template Engine
SiXhEaD.Benchmark.php
เป็นตัว Class ของ Sixhead Benchmark เอาไว้จับดูว่า Script ทำงานใช้เวลาเท่าไร
changelog.txt
เป็น Text File ระบุ Version และรายละเอียดการพัฒนา
license.txt
เป็น Text File ระบุรูปแบบ License
cache-kit.php
เป็นตัว Class เพื่อจัดการเรื่อง Cache ที่ผมเคยเขียนเล่าไปแล้วที่
http://www.scriptdd.com/webtip/php-cache-kit.html
อ่านจบแล้ว พักกันซักครู่ครับแล้ว อ่านต่อ ตอนที่ 2 ได้เลย
Sixhead Template
ตอนที่ 1 เกริ่นนำ
ตอนที่ 2 หัดใช้ display, generate, block, apply
ตอนที่ 3 หัดใช้ sub, get_current_sub(), get_current_sub_total(), block_html และ apply_block
Read (31,236)
Comments (18)
2009-01-21 13:26:45
ความคิดเห็น
เคยใช้แล้ว สุดยอดมากๆ Smarty ชิดซ้ายไปเลย
สมบูรณ์แล้วรึ ว่างๆเดี๋ยวมาเอาไปลอง
โดยคุณ MarMan
2009-01-21 23:17:29
Template Engine ... ไม่เคยได้ยินคำนี้มาก่อนเลย
แล้ว Template Engine เหมือนหรือต่างกับ Framework อย่างไรบ้างครับ
;)
โดยคุณ แอ๋ม
2009-01-22 00:32:11
Template engines มันก็เป็น libraries หนึ่งใน Framework ก็ได้ด้วย ซึ่งมันทำหน้าที่ประมวลตัว information data ซึ่งเป็นข้อมูลที่ได้จากการประมวลผลต่าง ๆ แล้วเช่นพวก text-file, Database ฯลฯ แล้วเอามาประกอบกับ plain text ที่เราจัด format ไว้ เพื่อประมวลผลเป็น formating text พวก html/xhtml หรืออื่น ๆ
Software Development Framework ทำหน้าที่ เอา code ที่เราเขียน เพื่อให้มันใช้งานต่อไป ซึ่งด้านในเนี่ยมันประกอบไปด้วย libraries ต่าง ๆ รูปแบบการพัฒนาตัวซอฟต์แวร์ที่วางไว้ให้แล้ว เราไม่ต้องคิดส่วนนี้เพิ่ม บางครั้งอาจจะมี tools ต่าง ๆ ช่วยในการพัฒนาเช่น deployment tools หรือพวก unit-test ซึ่ง Template engines ก็อาจจะเป็นส่วนหนึ่งของ Software Development Framework ด้วยเช่นกัน
โดยคุณ Ford AntiTrust
2009-01-22 01:01:02
น่าสนใจครับ ทั้งๆที่ยังอ่านไม่เข้าใจดี แต่จะพยายามครับท่าน
โดยคุณ centuryboy1938
2009-01-22 08:29:35
ขอบคุณมากครับ
อย่างนี้น่าลองจริงๆ เสริมความรู้เพิ่มไปอีก
เว็บเพื่อความคิดสร้างสรรค์และแบ่งปันครับ www.narongrit.net โดยคุณ ฉุย
2009-01-22 08:33:11
และขอฝากเว็บโปรโมทด้วยครับ www.diggbookmark.com
ขอบคุณเว็บ scriptdd แห่งนี้ที่เปิดโลกทัศน์ให้กว้างกว่าเดิมครับ
เยี่ยมไปเลยครับ ของใหม่ คนไทยทำด้วย
เคยไปทำโปรแกรมต่อจากคนอื่นแล้ว งงงง? อะไรเนี่ย! มีแต่ html หา phpไม่เจอ
กว่าจะรู้จักก็งมอยู่นานครับ
ไว้จะลองเอาไปใช้ครับแล้วจะมารายงานผล
โดยคุณ Kussx
2009-01-22 09:51:11
ต้องขอบคุณพี่อ้ำ ที่เขียนได้ละเอียดจริงๆ
สำหรับใครยังไม่มีเครื่อง test ให้เข้าไปที่ link แล้วดูตรง See in action
ใช้ง่ายมากครับไม่ยากอย่างที่คิด
ไว้ถ้าผมขยันจะเขียนตัวอย่างใช้งานจริงมาให้ดูกัน
โดยคุณ Pipo
2009-01-22 11:45:04
อ่านแล้วน่าสนใจมาก ถ้าเป็นอย่างนี้นามสกุลของfile ที่แสดงหน้าเว็บก็จะเป็น html ตลอดใช่มัยครับ แต่ตัวfile php ของเราจะส่งค่าต่างๆ ในการแสดงผลไปที่ file html ผมเข้าใจถูกต้องมัยครับ(ถ้าไม่ รบกวนอธิบายหน่อยครับ) ถ้าถูกตามนี้แสดงว่าจะได้รับผลประโยชน์เรื่องของ search มากตามไปด้วย เพราะพวกนี้ไม่ชอบ php เป็นผลงานที่น่าภูมิใจของคนไทยจริงๆ
โดยคุณ eosman
2009-01-22 14:41:39
เรื่องนามสกุล file ไม่เกี่ยวครับ ถ้าอยากให้ออกมาเป็นนามสกุลอะไร ต้องไปใช้ mod rewrite ทำเอาครับ
อย่างของ scriptdd ก็ใช้ mod rewrite ทำ
http://www.scriptdd.com/webtip/apache-mod-rewrite-easy-url.html
http://www.servdd.com Web Hosting คุณภาพบริหารงานโดยนายอ้ำ โดยคุณ 9AuM
2009-01-22 15:18:34
http://www.wp4seo.com wp4SEO ระบบช่วยบริหาร Wordpress Blog จำนวนมาก
http://www.welovetopup.com weLoveTopup เติมเงินออนไลน์ให้ส่วนลดมากที่สุดในตลาด
โอ้ววว ผมกำลังทำ cms ส่วนตัวอยู่ครับ ตอนนี้ก็ทำพวก MC เหลือแต่ V (หลักทฤษฎี MCV ) ครับ แหม อย่างนี้ท่าจะเสร็จเร็ว ขอหยิบยืมไปใช้ด้วยคนครับ อิอิ
ทุกอย่างเกิดจากเหตุ และปัจจัย ไม่ใช่อยู่ดี ๆ ก็เกิดขึ้น :: สร้างฝันบนจินตนาการ www.konkeanweb.com , www.prawee.com ,www.tct15.com ,www.thaiagro.com โดยคุณ [email protected]
2009-01-22 15:59:06
เขียนงานแบบ MVC ทำๆไปแล้วหลงตัวเอง
สุดท้ายพึ่ง framework ที่ออกแบบมาสำหรับ MVC จะดีที่สุด
cms ส่วนตัวนี่ น้องๆหลายคนเชียร์ให้เขียนแข่งกับเมืองนอกอยู่เหมือนกัน
สงสัยต้องกระโดดเข้าสนามนี้ด้วยแล้วสิเนี่ย
http://www.servdd.com Web Hosting คุณภาพบริหารงานโดยนายอ้ำ โดยคุณ 9AuM
2009-01-22 16:13:21
http://www.wp4seo.com wp4SEO ระบบช่วยบริหาร Wordpress Blog จำนวนมาก
http://www.welovetopup.com weLoveTopup เติมเงินออนไลน์ให้ส่วนลดมากที่สุดในตลาด
เคยไปอ่าน Smarty Template Engine เมื่อหลายปีก่อน พบว่ามึนตึ้บ เนื่องจากเป็นเด็กคอมที่โง่คอมพอควร ชอบออกแบบมากกว่า ครั้งแรกที่เจอ Expression Engine เลยชอบมาก เพราะทำอะไรง่ายนัก อยากได้อะไร ก็ให้ระบบมันพ่นออกมา / และเมื่อเจอ UNB (Unclassified NewsBoard) ก็ชอบเช่นกัน ปรับแต่งง่ายดี
แต่แล้วเมื่อมาเจอ Wordpress นักออกแบบที่ชุ่ยอย่างผมกลับชอบที่สุด เพราะไม่ได้ถือว่า Template เป็นแต่ .html ที่รอการ parse แต่ตัวเองก็ใส่โค้ดมั่วๆ ไปได้ด้วย
โลกที่เคยแสวงหาความสมบูรณ์แบบในลักษณะของ Template Engine เลยเปลี่ยนมาเป็นโลกที่ไม่สมบูรณ์ มั่วมั่ง สละสลวยมั่ง แต่งานออกเร็วดี
เมื่อเจอเพื่อนที่เขียน PHP Framework มาราว 10 ปี parse XML ได้สมบูรณ์แบบ เล่นทำตัวเป็นเหมือนพระเจ้าหรือ OS ก็เลยวิวาทะกับมันพอควร แล้วก็บอกว่า "แหะ แหะ ขอกระผมทำง่ายๆ โง่ๆ ต่อไปละกัน แทรก Template ด้วย แทรก php ด้วยละกันนะ"
ชื่นชมท่านมั่กๆ ขอให้สู้ต่อไป อย่าไปฟังเสียงนกเสียงกาแบบผมแล้วท้อไปเสียก่อน :)
โดยคุณ iMenn
2009-01-22 21:00:24
พี่ 9AuM เขียนละเอียดดีจังต้องติดตามๆ
หนทางสู่ความลำบากแสนสบาย หนทางสู่ความสบายแสนลำบาก www.memo8.com | www.gump.in.th โดยคุณ TaTump
2009-01-22 21:16:05
ยอดเยี่ยมมากครับ อนาคตอันใกล้ผมคงจะได้เห็น PHP Framework ฉบับไทยทำด้วยสิเนี่ย
โดยคุณ Edward
2009-01-26 10:45:37
อ่านแบบ ซุ่ม ๆ แล้วจะไปทดลองทำดูบ้าง ....
เอาว่ะ ช่วงนี้เจ้านาย ให้เล่น แต่ CMS นอก ที่ งง เป็นเป็ด
ของลอง ตัวนี้หน่อย เผื่อ จะเอามา พัฒนางานได้ ต่อไปอีก (อิอิ เพื่อ โบนัส)
โดยคุณ โจ้
2009-02-04 22:00:24
พี่อั้มลงมาเอง ก็ดีเช่นกันครับ ผมเชียร์อีกแรง จะได้ประกาศอิสระภาพสักที ถ้าว่างหน่อยก็สร้างภาษาคอมพิวเตอร์ด้วยก็ดีครับพี่
ทุกอย่างเกิดจากเหตุ และปัจจัย ไม่ใช่อยู่ดี ๆ ก็เกิดขึ้น :: สร้างฝันบนจินตนาการ www.konkeanweb.com , www.prawee.com ,www.tct15.com ,www.thaiagro.com โดยคุณ [email protected]
2009-02-17 14:28:20
ขอบคุณครับ ได้เป็นสมาชิกปุ๊บได้ของดีปั๊บเลย
โดยคุณ กอล์ฟ
2011-11-13 16:34:31
ฟีเจอร์น้อยไป ทำได้แค่แทนที่ string กับ block พื้นๆ
loop ใน template ก็ไม่ได้ เอาเข้าจริงๆ ถ้าจะทำอะไรซับซ้อนมันก็ต้องพึ่งโปรแกรมเมอร์เยอะอยู่ดี แทบไม่ช่วยอะไรดีไซเนอร์เลย
และสุดท้าย ไม่มีระบบ cache ทำให้ทำงานช้า ต้อง parse ตลอด
อย่าอวยกันเองให้เวอร์เลยครับ อายเค้า
โดยคุณ ยังต้องฝึกอีกนะหนู
2011-11-16 08:11:33