คุณกำลังเผชิญกับการสร้างเว็บไซต์ที่สร้างโดยทั้งโปรแกรมเมอร์ (อาจเป็นคุณ) และนักออกแบบหรือไม่? คุณไม่รู้วิธีทำให้งานง่ายขึ้นสำหรับคุณทั้งคู่เหรอ? ฉันให้คำตอบกับคุณ: ใช้ FastTemplate เพื่อทำให้เว็บไซต์ของคุณปรับแต่งได้ง่ายขึ้น!
โอเค คุณอาจสงสัยว่าทำไมคุณจึงควรใช้ FastTemplates
· สามารถเปลี่ยนรูปลักษณ์ของไซต์ทั้งหมดของคุณได้ในไม่กี่วินาที · การเขียนโปรแกรมเชิงนามธรรม ไม่มีโค้ด HTML ขยะ · นักออกแบบไม่จำเป็นต้องสนใจโค้ดที่ "คลุมเครือ" ทั้งหมด · รวดเร็วอย่างน่าประหลาดใจ · นำเทมเพลตเก่ากลับมาใช้ใหม่ได้ง่ายกว่า (เทียบกับรูปแบบปกติ)
FastTemplate มาจากแพ็คเกจ Perl ที่มีชื่อเดียวกัน (ซึ่งสามารถพบได้ใน CPAN) คุณสามารถดาวน์โหลดเวอร์ชัน PHP ได้จากหน้าแรก (ที่อยู่ดาวน์โหลดของเว็บไซต์นี้คือ: http://www.phpe.net/downloads/1.shtml) คุณต้องการไฟล์คลาสเพียงไฟล์เดียวเท่านั้น (class.FastTemplate.php)
ก่อนอื่นให้ฉันอธิบายความแตกต่างระหว่างการใช้เทมเพลตเพื่อสร้างเพจและเพียงแค่สะท้อนหรือพิมพ์ออกมา
การใช้วิธี echo/print เพียงอย่างเดียวก็เหมาะสำหรับการเขียนสคริปต์สั้นๆ แต่ไม่ได้ช่วยให้คุณจัดระเบียบและปรับแต่งได้ดีขึ้น ในทางกลับกัน เทมเพลตทำให้คุณสามารถสร้างเว็บไซต์หลายภาษาได้เพียงแค่เปลี่ยนพารามิเตอร์ พวกเขาสามารถผลักดันให้คุณใส่ใจมากขึ้นเกี่ยวกับสิ่งที่คุณต้องทำ
อย่ากลัวที่จะคิดก่อนเริ่มเขียนโค้ด อาจต้องใช้เวลาสักระยะ แต่ต้นทุนจะหมดไปเมื่อโครงการเติบโตขึ้น
แล้วจะใช้ FastTemplate ได้อย่างไร? ก่อนอื่นคุณต้องทำการเรียกง่ายๆ:
<?php $tpl=new FastTemplate ("path");
-
ส่งผ่านเส้นทางไปยังไดเร็กทอรีที่เก็บไฟล์เทมเพลตทั้งหมดของคุณ มันจะส่งคืนออบเจ็กต์ ซึ่งคุณสามารถใช้สำหรับการกำหนดพารามิเตอร์ การสร้างเพจ ฯลฯ
FastTemplate ขึ้นอยู่กับสมมติฐานที่ว่าเพจขนาดใหญ่ประกอบด้วยส่วนเล็กๆ จำนวนมาก แต่ละส่วนมีชื่อไม่ซ้ำกัน ส่วนที่เล็กที่สุดคือการกำหนดให้กับสตริงข้อความปกติที่มีชื่อไม่ซ้ำกัน ซึ่งสามารถทำได้ผ่านทาง <?php
$tpl->มอบหมาย(NAME, "ข้อความ");
-
เพื่อให้เสร็จสมบูรณ์ ตอนนี้ หากหนึ่งในเทมเพลตของคุณมี {NAME} FastTemplate จะทราบเจตนาของคุณ
นอกจากนี้ FastTemplate จำเป็นต้องทราบว่าคุณต้องการเรียกเทมเพลตของคุณอย่างไร คุณต้องผ่านอาเรย์แบบเชื่อมโยง (associative
array) ถึง <?php $tpl->define(); ?>
มาช่วยชี้แนะหน่อยสิ
<?php
$tpl->define(array(foo => "foo.tpl",
บาร์ => "bar.tpl"));
-
การมอบหมายเหล่านี้จะให้ไฟล์ foo และ bar ที่แตกต่างกันตามลำดับ (ชื่อ foo.tpl และ bar.tpl)
ตอนนี้คุณต้องการให้ FastTemplate แทนที่ {MACROS} ทั้งหมดใน template foo ด้วยค่าที่เกี่ยวข้อง โดยออกคำสั่ง
<?php
$tpl->parse(PAGECONTENT, "foo");
-
เพื่อให้บรรลุ คำสั่งนี้จะกำหนดเนื้อหาของเทมเพลต "foo" ให้กับ PAGECONTENT แน่นอนว่า เรายังไม่เสร็จสิ้น เนื่องจากแถบเทมเพลตคือคำจำกัดความของหน้าหลัก และ FastTemplate จำเป็นต้องแทนที่
{PAGECONTENT} มาโคร นอกจากนี้เรายังจำเป็นต้องกำหนดค่าให้กับ PAGETITLE ดังนี้: <?php
$tpl->มอบหมาย(PAGETITLE, "ทดสอบ FooBar");
$tpl->parse(MAIN, "bar");
-
ง่ายใช่มั้ย? เราแค่ต้องส่งออกมันตอนนี้: <?php
$tpl->FastPrint(หลัก);
-
ไฟล์สามไฟล์ต่อไปนี้แสดงคำอธิบายโดยละเอียดของแบบฝึกหัดจริง ฉันไม่รู้ว่าจะใช้ชีวิตอย่างไรโดยปราศจากเทคโนโลยีนี้ในชีวิตจริง--
นักออกแบบของคุณจะมีความสุขและเจ้านายของคุณจะยิ้มเพราะคุณสามารถทำงานได้มากขึ้นโดยใช้เวลาน้อยลง
bar.tpl <!-- bar.tpl -->
<HTML>
<HEAD><TITLE>โลกแห่งฟีเจอร์ - {PAGETITLE}</TITLE></HEAD>
<BODY BGCOLOR=ข้อความสีดำ=สีขาว>
<H1>{PAGETITLE}</H1>
{เนื้อหาหน้า}
</ร่างกาย>
</HTML>
foo.tpl <!-- foo.tpl -->
ชัดเจนว่าไม่ได้ทำอะไรเลย โปรดดู {NAME}
demo.php3 <?php
รวม "class.FastTemplate.php3";
$tpl = new FastTemplate( ".");
$tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"));
$tpl->มอบหมาย(NAME, "me");
$tpl->มอบหมาย(PAGETITLE, "ยินดีต้อนรับ!");
$tpl->parse(PAGECONTENT, "foo");
$tpl->parse(MAIN, "bar");
$tpl->FastPrint(MAIN);
?>
การสร้างตารางทั้งหมด ฉันยังได้เขียนตัวอย่างสั้นๆ เพื่อสาธิตวิธีสร้างตารางทั้งหมดจากเทมเพลตแถวเดียว มีประสิทธิภาพเพราะคุณยังไม่จำเป็นต้องแก้ไขเอกสาร HTML โดยตรง
เราสร้างตาราง HTML โดยการต่อท้ายเนื้อหาของเทมเพลตเข้ากับชื่อเฉพาะที่กำหนดไว้แล้ว ซึ่งสามารถทำได้โดยการโทร
เมื่อ $tpl->parse() ให้เพิ่ม "." ก่อนชื่อเทมเพลตเพื่อให้บรรลุเป้าหมายนี้ <?php
//กำหนดเนื้อหาของ template foo ให้กับ TPL1
$tpl->parse(TPL1, "foo");
// แนบเนื้อหาของแถบเทมเพลตหลัง TPL1
$tpl->แยกวิเคราะห์(TPL1, ".bar");
?>
page.tpl
<HTML>
<HEAD><TITLE>โลกเด่น - {PAGE_TITLE}</TITLE></HEAD>
<BODY BGCOLOR=ข้อความสีดำ=สีขาว>
<H1>{PAGE_TITLE}</H1>
{PAGE_CONTENT}
</ร่างกาย>
</HTML>
table.tpl
<ตาราง>
<TR> <TH>ชื่อ</TH> <TH>ขนาด</TH> </TR>
{TABLE_ROWS}
</TABLE>
table_row.tpl
<TR>
<TD>{FILENAME}</TD>
<TD>{FILESIZE}</TD>
</TR>
yad.php3
<?php
รวม "class.FastTemplate.php3";
ฟังก์ชั่น InitializeTemplates() {
ทั่วโลก $tpl;
$tpl = FastTemplate ใหม่ ( ".");
$tpl->define( array( หน้า => "page.tpl",
ตาราง => "table.tpl",
table_row => "table_row.tpl" ) );
}
ฟังก์ชัน ReadCurrentDirectory() {
ทั่วโลก $tpl;
$handle = opendir( ".");
ในขณะที่($ชื่อไฟล์ = readdir($handle)) {
$tpl->มอบหมาย(FILENAME, $filename);
$tpl->มอบหมาย(ขนาดไฟล์, ขนาดไฟล์ ($ชื่อไฟล์));
$tpl->parse(TABLE_ROWS, ".table_row");
-
closeir($จัดการ);
$tpl->แยกวิเคราะห์(PAGE_CONTENT, "ตาราง");
}
ฟังก์ชั่น PrintPage($title) {
ทั่วโลก $tpl;
$tpl->มอบหมาย (PAGE_TITLE, $title);
$tpl->parse(FINAL, "หน้า");
$tpl->FastPrint(สุดท้าย);
}
เตรียมใช้งานเทมเพลต();
อ่านไดเร็กทอรีปัจจุบัน();
Printpage( "ยังสาธิตอีก");
?>
การสนทนาเรื่องความเร็ว
"โอเค" คุณอาจจะพูดว่า "เยี่ยมมาก แต่มันจะไม่ส่งผลต่อความเร็วของเว็บไซต์ของฉันหรือ"
ไม่ เว็บไซต์ของคุณอาจจะเร็วขึ้น เหตุผลง่ายๆ ประการหนึ่ง: เนื่องจากคุณในฐานะโปรแกรมเมอร์ใส่ใจในการออกแบบแอปพลิเคชันและการเขียนโค้ด โค้ดของคุณจะมีประสิทธิภาพมากขึ้น และจัดการงานเดียวกันได้ง่ายขึ้นและเร็วขึ้น ดังนั้น คุณอาจเพิ่มเหตุผลอื่นในรายการเหตุผลที่แสดงไว้ข้างต้นว่าทำไมคุณจึงควรพิจารณาใช้ FastTemplate ในโปรเจ็กต์ของคุณ
หากคุณเพียงต้องการแปลงเว็บไซต์ที่มีอยู่ ความสำเร็จด้านประสิทธิภาพอาจไม่ถูกสังเกตเห็น ฉันแนะนำให้ใช้การบัฟเฟอร์ regex ใน PHP ซึ่งจะช่วยได้ในสถานการณ์นี้ เนื่องจาก FastTemplate ใช้นิพจน์ทั่วไปสำหรับทุกๆ มาโคร นิพจน์ทั่วไปแต่ละรายการจะถูกคอมไพล์เพียงครั้งเดียว และผลกระทบด้านความเร็วจะมีน้อยมาก