ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

หน้า: [1] 2  ทั้งหมด   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: How to use smarty template engine !.  (อ่าน 14516 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« เมื่อ: 10 กรกฎาคม 2007, 23:48:42 »

บทนำ
ช่วงนี้มีหลายคนถามผมมาเกี่ยวกับเรื่องของ "Template Engine" หลายคน ก็เลยคิดว่าน่าจะทำเป็นบทความเล็กๆ ซะหน่อย เพราะถ้าเป็น บทความใหญ่ๆ รับรองเรื่องมันยาว แน่นอน

พูดถึง Template Engine นั้นมีหลายตัวมาก เลยทั้ง bTemplate, FastTemplate, TemplatePower, TBS (TinyButStrong), PatTemplate, etc.

เรียกได้ว่ามีมากมายเยอะแยะไปหมด แต่ที่ชนะใจผมและ คนทั่วโลก ทิ้งห่างแบบไม่เห็นฝุ่น รวมทั้งได้รับการรับรองจาก PHP โดยตรงก็คือ "Smarty Template Engine" นั่นเอง ด้วยความที่ตัวมันทำงานได้ยืดหยุ่น มีคนใช้เยอะ ทำให้มีการแชร์ข้อมูลมาก พัฒนาอย่างต่อเนื่อง ที่สำคัญ Absolutely Free ทำให้หลายๆ คนเลือกที่จะใช้มันสำหรับ พัฒนาโปรเจคใหญ่ๆ วันนี้ผมก็เลยจะมาแนะนำคร่าวๆ ถึง PEAR ตัวนี้สักหน่อย

ประโยชน์ของ Template Engine
ประโยชน์ของระบบ Template นั้นมีมากมายเลยล่ะ โดยผมแบ่งออกเป็น ข้อใหญ่ๆ ได้ดังนี้

1.สามารถแยก Code ออกจาก Design ได้ ทำให้การทำงานทั้ง 2 ฝั่งไม่ต้องรองานกัน
2.สามารถทำระบบ แยก Theme แบบหลายๆตัว ได้เป็นอย่างดี (นึกถึงระบบ WP)
3.ทำให้โคดสั้นลงเพราะไม่จำเป็นต้องมาแทรก html ใดๆ ในหน้า Code และสะดวกต่อการ debug เพราะไม่ต้องมานั่งไล่โคดไป ดู html ไป
4.สามารถพัฒนาต่อได้ง่ายในกรณี สับมือกันทำหรือ ต่อยอด เพราะโคดที่ต้องแก้ มีแค่ภาษาโปรแกรมมิ่ง
5.ไม่ต้องเรียกตัวแปร ซ้ำซ้อน ในกรณีที่ มีการใช้ตัวแปร นั้นๆ หลายจุด
6.มี plugins เสริมต่างๆ ทำให้ลดเวลาในการพัฒนา เช่น (cache, thumnail, captcha, paging, tags, ajax, calendar)
7.สามารถพัฒนา Software ให้ดูเป็นมืออาชีพ และโคด มีความสวยงาม

ความเข้าใจเบื้องต้น
การใช้งานนั้นก็ไม่ยากเลยครับ ก่อนอื่นให้ดาวน์โหลด โปรแกรมจากที่นี่ Smarty Download

ก่อนจะทำงานกับ Smarty เราจะต้องมีความเข้าใจระบบของมันสักเล็กน้อย การทำงานของ Smarty นั้น เป็นระบบที่ อ้างอิง Template จาก โฟลเดอร์

/templates/

เมื่ออ่านค่าได้ทั้งหมดแล้วจะถูก Compile ออกมาเป็น php เก็บไว้ในโฟลเดอร์

/templates_c/

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

รูปแบบการใช้งานเบื้องต้น

<!-- ไฟล์ test.php -->
<?php
include ('smarty/Smarty.class.php'); // include ตาม path
$smarty = new Smarty(); // เรียก Obj
$smarty->compile_check = true; // ตั้งค่า ว่าจะให้ re-compile หรือไม่ ถ้าระบบนิ่งแล้ว ตังเป็น false ไปเลย จะช่วยลดการใช้งาน ทรัพยากรระบบได้

$smarty->assign('title', 'Introduce Smarty'); // ทดลอง assign ค่า แบบ single
$smarty->assign(array('charset'=>'utf-8', 'keywords'=>'1, 2, 3')); // ทดลอง assign ค่าแบบ multiple
$smarty->assign('years', array('2004', '2005', '2006')); // ทดลอง assign ค่า แบบ array

$smarty->display('index.tpl'); // อันนี้จะเป็นการเรียกไฟล์ที่ อยู่ใน /templates/index.tpl มาใช้งาน
?>

<!-- ไฟล์ /templates/index.tpl -->
<html>
<head>
<title>{$title}</title>
<meta http-equiv="content-type" content="text/html; charset={$charset}" />
<meta name="keywords" content="{$keywords}" />
</head>
<body>

{foreach from=$year item=x}
    {$x}<br />
{/foreach}

</body>
</html>
-----------------------------------------------------

เอาละครับ นี่เป็นแค่บทเรียกน้ำย่อย ยังไม่ได้ เข้าลึกถึงรายละเอียด 1 ใน 100 เลย Template Engine ตัวนี้มีความสามารถแบบ สุดๆ ไปเลยครับ จะค่อยๆ มาเขียนถึงการใช้งานในระดับ ต่างๆ อีกที ถ้าใครใจร้อนแนะนำให้ โหลด manual มาอ่านก่อนได้ที่

http://smarty.php.net/distribu...anual/en/Smarty-2.6.7-docs.chm

ปล.การเขียนโปรแกรมนั้นไม่ได้ยากเพียงแต่คุณต้องให้เวลากับมัน
« แก้ไขครั้งสุดท้าย: 11 กรกฎาคม 2007, 00:59:10 โดย bubbleball » บันทึกการเข้า

Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 10 กรกฎาคม 2007, 23:49:04 »

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

วันนี้จะมาต่อกันเรื่องของการใช้งานคำสั่งในการ เปรียบเทียบ นี่เป็นอีกข้อดีของ Smarty ครับ PEAR ตัวอื่นๆ คำสั่งพวกนี้น้อยมากๆ แต่ไม่ใช้ Smarty

หลายๆคนที่เขียนโปรแกรมมาคงจะชินกับการเทียบค่า โดยใช้ พวกคำสั่ง if, else ดีอยู่แล้ว แต่คราวนี้เราจะย้ายคำสั่งพวกนี้มาเขียนใน tpl แทนครับ !

<!-- index.php -->
<?php
#include smarty
#
#
$currentpage = basename($_SERVER['PHP_SELF']);
$smarty-assign('currentpage', $currentpage);
$smarty->display('condition.tpl');
?>

<!-- condition.tpl -->
<html>
....

<ul>
<li>{if $currenpage eq 'index.php'}<b>Home</b>{else}Home{/if}</li>
<li></li>
<li></li>
</ul>

....
</html>

นี่เป็นการเปรียบเทียบค่าง่ายๆ ในไฟล์ tpl ครับ ซึ่งสามารถเรียกได้เหมือนการเขียนโปรแกรมบน php เลย ลองศึกษา ตารางค่าการเปรียเทียบเพิ่มเติมจากที่นี่

http://smarty.php.net/manual/en/language.function.if.php

นอกจากค่าพื้นฐานพวกนี้แล้ว Smarty ยังมี คุณสมบัติ ในการนำ Function เข้าไปใช้ หลายรูปแบบ ทั้งแบบ modifier, function, block, outputfilter, prefilter, postfilter

โดยที่บางคำสั่งของ php เราสามารถนำเข้าไปใช้ได้โดยตรง อาทิเช่น in_array, arry_key_exists, etc.

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

ปล.ดูจากเวลาและพื้นที่แล้วผมคงจะให้ข้อมูล PEAR ตัวนี้ได้อย่างคร่าวๆ เป็นแน่ ถ้าสนใจจริงๆ ลองอ่าน manual นะ ถ้าไม่เข้าใจก็เอามาปรึกษา คุยกันอีกที
« แก้ไขครั้งสุดท้าย: 13 กรกฎาคม 2007, 00:28:09 โดย Tee++; » บันทึกการเข้า

Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 10 กรกฎาคม 2007, 23:49:22 »

เออ วุ้ย ลืมกระทู้นี้ไปเลย วันนี้มาต่อซะหน่อย เอาเรื่องอะไรดีล่ะ เอาเป็นการสร้าง Function เพื่อไปใช้ใน Template ดีกว่า

การสร้าง Function เพื่อเอาไปใช้ในไฟล์ TPL ของ Smarty ทำได้หลายแบบมากๆ

1.Block
การสร้าง แบบ Block นั้นคือเราจะทำการสร้างฟังก์ชั่นมาเพื่อให้ ข้อมูลใน block ทั้งหมดทำงานตามที่ Function กำหนด เช่น

// block.php
<?php
...
function dupContent($params, $content, &$smarty, &$repeat) {
$content = str_repeat($content, $params['num');
return $content;
}

$smarty->register_block("dubContent", "dupContent");
...
?>

// block.tpl
<html...

{dupContent num=2}
Hello Smarty
{/dupContent}

...html>

จากตัวอย่างข้างบนถ้าเรารัน โปรแกรมเราก็จะได้ค่าออกมาเป็น

Hello Smarty Hello Smarty

----------------------------------------------------
2.Function
การสร้าง Function เพื่อเข้าไปใช้ในไฟล์ tpl ก็ไม่ยากอีกเช่นกันออกจะง่ายกว่าด้วยซ้ำลองมาดูตัวอย่างกัน

// function.php
<?php
...
function timer($params) {
return date($params['format'], time());
}

$smarty->register_function("timer", "timer");
...
?>

// function.tpl
<html...
{timer format="d/m/Y H:i:s"}
...html>

จากตัวอย่างด้านบนเราจะได้ค่าออกมาเป็นเวลาปัจจุบันในรูปแบบ dd/mm/yyyy hh:mm:ss

----------------------------------------------------
3.modifier
เป็นการสร้าง function เพื่อไปเปลี่ยนแปลงค่าปัจจุบัน โดยไม่จำเป็นต้องนำเข้าตัวแปร เป็น array ตัวอย่างเช่น

// modifier.php
<?php
...
function hello($str, $var1, $var2) {
return $var1.' '.$var2.' '.$str;
}

$smarty->register_modifier('hello', 'hello');
$smarty->assign('myname', 'Tee++;');
...
?>

// modifier.tpl
<html...
{$myname|hello:'Posted by&nbsp;':'Mr.'}
...html>

จากตัวอย่างนี้เราจะได้ค่าออกมาเป็น "Posted by Mr.Tee++;"

----------------------------------------------------

นอกจากนี้ยังมีการสร้าง function เข้าไปใช้งานอีก 3 รูปแบบคือ

1.prefilter
เป็นอีกรูปแบบนึงโดยการใช้งานเราจะสร้าง function และ register โดยใช้คำสั่ง register_prefilter("function_name")

โดยไฟล์ tpl ทั้งหมดจะถูกทำงานก่อนที่จะ compile

2.postfilter
คล้ายๆ prefilter แต่ทำงานหลังการ compile

3.outputfilter
คล้ายๆ 2 ตัวบนแต่จะทำงานก่อนที่ไฟล์ tpl จะถูกแสดงผล

****ข้อมูลเพิ่มเติมหาอ่านได้ที่ manual ของ smarty ครับ****
« แก้ไขครั้งสุดท้าย: 20 กรกฎาคม 2007, 00:53:58 โดย Tee++; » บันทึกการเข้า

Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 10 กรกฎาคม 2007, 23:49:32 »

ไม่น่าจะพอ
บันทึกการเข้า

Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 10 กรกฎาคม 2007, 23:49:48 »

เท่านี้คิดว่า OK ที่สุดท้าย
บันทึกการเข้า

Warrez
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 2,153



ดูรายละเอียด
« ตอบ #5 เมื่อ: 11 กรกฎาคม 2007, 00:00:31 »

มาปูเสื่อรอคับ
บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 11 กรกฎาคม 2007, 00:15:42 »

ไม่พอบอกผมได้อีกนะครับ

รู้สึกม็อดจะสามารถแยกโพสย่อยได้อีกง่ะ

ไม่รู้จะทำได้หรือเปล่า ไม่เคยเป้นกะเขา =__="
บันทึกการเข้า

yokey.
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 64
ออฟไลน์ ออฟไลน์

กระทู้: 1,077



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 11 กรกฎาคม 2007, 00:49:25 »

ขอบคุณความรู้ครับ
บันทึกการเข้า
santi
คนรักเสียว
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 162



ดูรายละเอียด
« ตอบ #8 เมื่อ: 11 กรกฎาคม 2007, 00:53:22 »

ขอบคุณครับ ได้ความรู้อีกแล้ว  Smiley
บันทึกการเข้า
kool_time
คนรักเสียว
*

พลังน้ำใจ: 40
ออฟไลน์ ออฟไลน์

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 11 กรกฎาคม 2007, 01:11:03 »

ขอบคุณคับ แต่ว่ามานโหลดมาแล้วอ่านไม่ได้ครับ เพื่อนๆเป็นแบบผมปล่าวหว่า
บันทึกการเข้า

myong1
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 569



ดูรายละเอียด
« ตอบ #10 เมื่อ: 11 กรกฎาคม 2007, 07:52:29 »

ขอบคุณคับ แต่ว่ามานโหลดมาแล้วอ่านไม่ได้ครับ เพื่อนๆเป็นแบบผมปล่าวหว่า

ใช่ครับ ผมก็อ่านไม่ได้ครับ

ยังไงก็ขอบคุณ คุณ Tee+ ครับ
บันทึกการเข้า
photogang
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 97



ดูรายละเอียด
« ตอบ #11 เมื่อ: 11 กรกฎาคม 2007, 10:16:38 »

ขอบคุณครับ ได้ความรู้ใหม่อีกแล้ว

คุณ Tee++ ปั่นกระทู้ ระวังโดน mod แบนนะครับ เดี๋ยวไม่ได้เข้าห้องลับนะ  Cheesy
บันทึกการเข้า
Step9
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 122
ออฟไลน์ ออฟไลน์

กระทู้: 8,518



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 11 กรกฎาคม 2007, 12:26:20 »

คือ มันเป็นEngine ใช้ผลิต Template หรือ Theme ใช่ป่ะครับ  Huh?


บันทึกการเข้า

youcanberich
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 124
ออฟไลน์ ออฟไลน์

กระทู้: 2,803



ดูรายละเอียด
« ตอบ #13 เมื่อ: 11 กรกฎาคม 2007, 13:08:04 »

เคยลองแกะดูจากสคริบ phpld  งง+งง+งง และ +งง มันไปหลายต่อมากๆ  Tongue โยงใยกันเยอะแยะ

ขอบคุณครับ ขอนั่งแถวหน้าด้วยคน  Grin
บันทึกการเข้า

amaudy
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 1,212



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 11 กรกฎาคม 2007, 13:16:00 »

ร่วมด้วยช่วยกัน

เล่มนี้นะครับ



ดาวน์โหลดได่ที่นี่

http://rapidshare.com/files/42...9/Smarty.PHP.Template.rar.html

โชคดีนะครับ ชาติเรายังต้องการคนเขียนโปรแกรมเป็นอีกเยอะ

edit: ว่าจะอัปให้ตั้งแต่เมื่อคืนแล้ว แต่ 1. เหนื่อย ขับรถวันเดียวร่วมๆ 700 กิโลเมตร 2. เนท TT&T เน่า เข้าเวบนอกมะได้ ไม่มีที่อัปโหลดไฟล์ให้ เวบฝากไฟล์ไทยๆโฆษณาเยอะเกินเหตุ ผมไม่ใช้เพราะหงุดหงิดครับ
« แก้ไขครั้งสุดท้าย: 11 กรกฎาคม 2007, 13:18:27 โดย amaudy » บันทึกการเข้า

aomnaruk
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 4
ออฟไลน์ ออฟไลน์

กระทู้: 1,245



ดูรายละเอียด
« ตอบ #15 เมื่อ: 11 กรกฎาคม 2007, 13:18:36 »

รอฟังความรู้ใหม่อยู่ครับ
บันทึกการเข้า
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 11 กรกฎาคม 2007, 21:53:04 »

ร่วมด้วยช่วยกัน

เล่มนี้นะครับ



ดาวน์โหลดได่ที่นี่

http://rapidshare.com/files/42...9/Smarty.PHP.Template.rar.html

โชคดีนะครับ ชาติเรายังต้องการคนเขียนโปรแกรมเป็นอีกเยอะ

edit: ว่าจะอัปให้ตั้งแต่เมื่อคืนแล้ว แต่ 1. เหนื่อย ขับรถวันเดียวร่วมๆ 700 กิโลเมตร 2. เนท TT&T เน่า เข้าเวบนอกมะได้ ไม่มีที่อัปโหลดไฟล์ให้ เวบฝากไฟล์ไทยๆโฆษณาเยอะเกินเหตุ ผมไม่ใช้เพราะหงุดหงิดครับ


เยี่ยมไปเลยผมโหลดมาอ่านแล้วล่ะครับ ขอบคุณนะ
บันทึกการเข้า

okgofun
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 396



ดูรายละเอียด
« ตอบ #17 เมื่อ: 12 กรกฎาคม 2007, 16:11:45 »

ขอบคุณมากๆคับ คุณ Tee++ และคุณ amaudy  กำลังจะลองศึกษาดูพอดีเลยครับ
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
9nu
Verified Seller
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 254



ดูรายละเอียด
« ตอบ #18 เมื่อ: 12 กรกฎาคม 2007, 17:27:02 »

ขอบคุณคร้าบ ที่แบ่งปัน
บันทึกการเข้า
Q(@3@)o
สมุนแก๊งเสียว
*

พลังน้ำใจ: 4
ออฟไลน์ ออฟไลน์

กระทู้: 904



ดูรายละเอียด เว็บไซต์
« ตอบ #19 เมื่อ: 12 กรกฎาคม 2007, 19:25:40 »

เช่นถ้าผมจะทำ เทมเพจ Wordpress เอง ใช้โปรแกรมนี้ได้เหรอ ?

แต่โหลดมาแล้วมันเหมือนเป็นสคิป มากกว่าโปรแกรมอ่ะ ชัก งงๆ  Tongue
บันทึกการเข้า

หน้า: [1] 2  ทั้งหมด   ขึ้นบน
พิมพ์