ในบทเรียนที่แล้ว เราได้ทราบว่าเทมเพลตการเดินทางจะประกอบด้วยบล็อกใดบ้าง ดังนั้นคุณจึงสามารถเริ่มต้นได้ เริ่มต้นด้วยการสร้างสองโฟลเดอร์:
รูปภาพ - โฟลเดอร์นี้จะมีไฟล์รูปภาพที่ใช้จัดรูปแบบเทมเพลต เพราะ เรายังไม่มีการพัฒนาการออกแบบใดๆ จากนั้นโยนไฟล์กราฟิกใดไฟล์หนึ่งลงในโฟลเดอร์นี้ มิฉะนั้น Joomla จะไม่ติดตั้งเทมเพลตและจะแสดงข้อผิดพลาดหากโฟลเดอร์ว่างเปล่า
ข้อควรระวัง: ไม่สามารถวางกราฟิกเนื้อหาในโฟลเดอร์รูปภาพของเทมเพลตได้!
css - โฟลเดอร์นี้จะมี ไฟล์สไตล์ชีตแบบเรียงซ้อน. ในการเริ่มต้น ให้วางไฟล์ template.css เปล่าๆ ลงไป โดยสไตล์การออกแบบต่างๆ จะถูกกำหนดให้กับองค์ประกอบของไซต์
จากนั้น คุณสามารถเริ่มสร้างไฟล์ index.php ที่สำคัญที่สุด ซึ่งจะระบุตำแหน่งที่มองเห็นได้ขององค์ประกอบของไซต์ และบอกให้ Joomla CMS บล็อกที่จะวางส่วนประกอบและโมดูลต่างๆ ไฟล์เป็นการรวมกันของ PHP และ HTML
ฉันมักจะใช้เฉพาะ Macromedia Dreamweaver เมื่อเขียนโค้ด โปรแกรมที่ยอดเยี่ยมฉันขอแนะนำอย่างยิ่งให้ผู้เริ่มต้นใช้งานเพราะ หากคุณทำผิดพลาดขณะทำงานกับโค้ด โปรแกรมจะเน้น jamb ของคุณอย่างแน่นอน
บนเว็บไซต์ คุณจะพบบทช่วยสอนเกี่ยวกับ Macromedia Dreamweaver หากคุณกำลังจะพัฒนาเว็บไซต์ โปรแกรมนี้ควรได้รับการฝึกฝนอย่างน้อยในระดับเริ่มต้น เพื่อที่จะแก้ไขโค้ดเทมเพลตได้โดยไม่มีข้อผิดพลาด
การวางตำแหน่งองค์ประกอบ (บล็อก) ของหน้าทำได้โดยใช้โค้ด HTML โดยเฉพาะเราจะใช้แท็ก DIV แต่วิธีที่ไซต์ของเราจะทำงานบนเครื่องมือ Joomla เช่น มันจะเป็นไดนามิก คุณจะต้องใช้ภาษา PHP ด้วย ด้วยความช่วยเหลือของมัน เราจะกำหนดตำแหน่งบล็อกสำหรับการแสดงโมดูลว่าจะอยู่ที่ใด และจะเรียกตำแหน่งเหล่านี้อย่างไร บล็อกจะยุบหรือไม่ มาเชื่อมต่อสไตล์ชีตจากไฟล์ภายนอก ภาษาของเนื้อหา ตั้งค่าขนาดไซต์ที่จะเปลี่ยนแปลง ฯลฯ
index.php
ส่วนหัวของไฟล์
ส่วนหัวของไฟล์ประกอบด้วยหลายส่วน ส่วนแรกของโค้ดส่วนหัวของ PHP คือการทำให้แน่ใจว่าไฟล์นั้นไม่ได้ถูกเข้าถึงโดยตรงด้วยเหตุผลด้านความปลอดภัย
<
?php
กำหนด ("_JEXEC" ) หรือตาย ;
JHtml::_("behavior.framework" จริง );
$app = JFactory::getApplication() ;
?>
<
?php echo
"<
?"
; ?> เวอร์ชัน xml="1.0" การเข้ารหัส=" <
?php echo
$นี้-> _charset ?> "?>
DOCTYPE เป็นพารามิเตอร์ที่สำคัญมากซึ่งเบราว์เซอร์จะตัดสินใจว่าจะแสดงหน้านี้อย่างไรและจะตีความ CSS อย่างไร
<
!
DOCTYPE html PUBLIC "- / / W3C/ / DTD XHTML 1.0 เข้มงวด/ / EN""http: / / www.w3.org/ TR/ xhtml1/ DTD/ xhtml1-strict.dtd">
ข้อมูลโค้ดต่อไปนี้ดึงข้อมูลภาษาที่ติดตั้งจากการกำหนดค่าส่วนกลาง
<
html xmlns=
"http://www.w3.org/1999/xhtml" xml:lang=" <
?php echo
$นี้-> ภาษา; ?>"หรั่ง = " <
?php echo
$นี้-> ภาษา; ?>"ไดร์ = " <
?php echo
$นี้-> ทิศทาง; ?>" >
ต่อไปนี้เป็นข้อมูลโค้ดที่มีข้อมูลเพิ่มเติมสำหรับส่วนหัว ซึ่งตั้งค่าไว้ในการกำหนดค่าส่วนกลาง คุณสามารถดูข้อมูลนี้ได้โดยดูที่ซอร์สโค้ดของหน้าเว็บใดๆ โดยเฉพาะอย่างยิ่ง เมตาแท็กเหล่านี้เป็นแท็กที่คุณรู้จักอยู่แล้ว
<
head>
<
jdoc:include
type=
"head"
/
>
บรรทัดต่อไปนี้ในส่วนหัวประกอบด้วยลิงก์ไปยังสไตล์ CSS หลักของ Joomla
<
link
rel=
"stylesheet"
href=
"<
?php echo
$นี้-> baseurl ?> / templates/system/css/system.css"พิมพ์ = "ข้อความ /css" /
>
<
link
rel=
"stylesheet"
href=
"<
?php echo
$นี้-> ฐาน ?> / templates/system/css/general.css"พิมพ์ = "ข้อความ /css" /
>
หากต้องการใช้สไตล์การออกแบบเทมเพลต เราจะสร้างลิงก์ไปยังไฟล์ที่มีไฟล์สไตล์ชีตแบบเรียงซ้อน template.css ซึ่งอยู่ในโฟลเดอร์ CSS ไม่สำคัญว่าไฟล์นี้ยังว่างเปล่า สิ่งสำคัญคือการเชื่อมต่อ เราจะจัดการกับการออกแบบในภายหลังเมื่อเราติดตั้งเทมเพลตบน Joomla สิ่งนี้จะทำให้เห็นผลลัพธ์ได้ง่ายขึ้น
<
link
rel=
"stylesheet"
href=
"<
?php echo
$นี้-> ฐาน ?> / templates /<
?php echo
$นี้-> เทมเพลต ?> /css/ template.css"พิมพ์ = "ข้อความ /css" /
>
ข้อมูลโค้ดต่อไปนี้ช่วยให้เราสามารถยุบคอลัมน์ด้านซ้ายหรือด้านขวา หากไม่มีโมดูลในตำแหน่ง "ซ้าย" และ "ขวา" หากทั้งสองคอลัมน์ถูกยุบ เนื้อหาจะใช้พื้นที่ 100% ของความกว้างของหน้า หากรวมเพียงคอลัมน์เดียว เนื้อหาจะใช้เวลาถึง 80% เมื่อรวมสองคอลัมน์ เนื้อหาคิดเป็น 60% ของความกว้างหน้า
<
?php
ถ้า ($ นี้-> countModules("ซ้ายและขวา" ) == 0) $contentwidth = "100" ;
ถ้า ($ นี้-> countModules("ซ้ายหรือขวา" ) == 1) $contentwidth = "80" ;
ถ้า ($ นี้-> countModules("ซ้ายและขวา" ) == 1) $contentwidth = "60" ;
?>
ปิดส่วนหัว
<
/
head>
<
body>
บล็อก “หน้า” มีการออกแบบเฉพาะหน้าของเว็บไซต์ ซึ่งจะมีความกว้าง 950px
<
div id=
"page"
>
บล็อก "top" อยู่ที่ด้านบนสุดของหน้าและมีสองบล็อก "logo" และ "user1"
<
div id=
"top"
>
ในโบเก้ “โลโก้” เราจะวางไฟล์กราฟิกโลโก้ ซึ่งจะเขียนในรูปแบบชีต แต่เราเขียนผลลัพธ์อัตโนมัติของชื่อไซต์ในไฟล์ index.php และชื่อจะอยู่ในแท็ก H1 ซึ่งสำคัญมากสำหรับการเพิ่มประสิทธิภาพเครื่องมือค้นหา
<
div id=
"logo"
>
<
h1>
<
?php echo
$app
-
>getCfg("ชื่อเว็บไซต์"); ?><
/
h1>
<
/
div>
กำหนดตำแหน่ง "user1" ในบล็อกชื่อเดียวกันเพื่อแสดงโมดูลการค้นหาไซต์
<
div id=
"user1"
>
<
jdoc:include
type=
"modules"
name=
"user1"
style=
"xhtml"
/
>
<
/
div>
<
/
div>
<
!
-
-
конец блока top -
-
>
เอาต์พุตของโมดูลเมนูแนวนอนในบล็อก "user2" ที่ตำแหน่ง "user2" บล็อกจะยุบหากไม่มีโมดูลในตำแหน่งนั้น
<
?php if
($นี้-> countModules("user2") ): ?>
<
div id=
"user2 "
>
<
jdoc:include
type=
"modules"
name=
"user2"
style=
"xhtml"
/
>
<
/
div>
<
?php endif
; ?>
ถัดมาบล็อกส่วนหัวของไซต์ "ส่วนหัว" ในนั้นเราจะกำหนดตำแหน่ง "ส่วนหัว" สำหรับเอาต์พุตของโมดูล บล็อกจะยุบหากไม่มีโมดูลในตำแหน่งนั้น ฉันตั้งใจขยายความสามารถของบล็อกนี้เพื่อให้สามารถวางภาพส่วนหัวได้ไม่เพียงเท่านั้น แต่ยังรวมถึงตัวหมุนภาพด้วย
<
?php if
($นี้-> นับโมดูล (" หัวข้อ")
)
: ?>
<
div id=
"หัวข้อ">
<
jdoc:include
type=
"modules"
name=
"หัวข้อ" style="xhtml" />
<
/
div>
<
?php endif
; ?>
ในบล็อก "user3" กำหนดตำแหน่ง "user3" สำหรับการแสดงโมดูล
บล็อกจะยุบหากไม่มีโมดูลใดแสดงที่ตำแหน่งนี้ "user3"
<
?php if
($นี้-> countModules("user3") ) : ?>
<
div id=
"user3"
>
<
jdoc:include
type=
"modules"
name=
"user3"
style=
"xhtml"
/
>
<
/
div>
<
?php endif
; ?>
บล็อกของคอลัมน์ด้านซ้ายจะเปิดขึ้น ซึ่งจะยุบลงหากไม่มีโมดูลในตำแหน่ง "ซ้าย"
<
?php if
($นี้-> countModules("left" ) ) : ?>
<
div id=
"left"
>
<
jdoc:include
type=
"modules"
name=
"left"
style=
"xhtml"
/
>
<
/
div>
<
?php endif
; ?>
บล็อกเนื้อหาที่สำคัญที่สุดจะเปิดขึ้น ซึ่งอาจกินพื้นที่ 100% ของความกว้างหน้า 80% และ 60% ขึ้นอยู่กับจำนวนคอลัมน์ที่รวม
<
div id=
"content<
?php echo
$contentwidth
; ?>
"
>
การแสดงข้อความในส่วนประกอบ
<
jdoc:include
type=
"message"
/
>
เอาต์พุตเนื้อหา
<
jdoc:include
type=
"component"
style=
"xhtml"
/
>
<
/
div>
<
!
-
-
конец блока контента-
-
>
บล็อกของคอลัมน์ด้านขวาจะเปิดขึ้น ซึ่งจะยุบลงหากไม่มีโมดูลอยู่ในตำแหน่ง "rigth"
<
?php if
($นี้-> countModules("ขวา") ): ?>
<
div id=
"rigth"
>
<
jdoc:include
type=
"modules"
name=
"right"
style=
"xhtml"
/
>
<
/
div>
<
?php endif
; ?>
เอาต์พุตของบล็อก "ส่วนท้าย" ออกแบบมาเพื่อแสดงโมดูล "HTML code" พร้อมข้อมูลลิขสิทธิ์ คุณยังสามารถวางเมนูแนวนอนด้านล่างหรือโมดูลการนำเสนอเนื้อหาได้ที่นี่ บล็อกจะยุบหากไม่มีการแสดงโมดูลมากกว่าหนึ่งโมดูลในตำแหน่ง "ส่วนท้าย" นี้
<
?php if
($นี้-> countModules("ส่วนท้าย") ): ?>
<
div id=
"footer"
>
<
jdoc:include
type=
"modules"
name=
"footer"
style=
"xhtml"
/
>
<
/
div>
<
?php endif
; ?>
บล็อกหน้าไซต์ "หน้า" เนื้อหาและรหัสทั้งหมดถูกปิด
<
/
div>
<
!
-
-
конец блока page-
-
>
<
/
body>
<
!
-
-
конец блока body -
-
>
<
/
html>
<
!
-
-
конец кода-
-
>
เราได้สร้างไฟล์ index.php ที่สมบูรณ์แล้ว ตอนนี้คุณรู้แล้วว่าคำสั่งใดและบล็อกเทมเพลตจะแสดงในลำดับใด
โปรดทราบ: เพื่อให้โค้ดเทมเพลตสามารถอ่านได้จากแผงผู้ดูแลระบบของ joomla จะต้องเปิดไฟล์ index.php ในโปรแกรมแก้ไข AkelPad และบันทึกในการเข้ารหัส UTF-8 ขณะที่ยกเลิกการเลือก BOM หากคุณใช้โปรแกรม Macromedia Dreamweaver เพื่อทำงานกับไฟล์ คุณต้องเลือก "แก้ไข" > "คุณสมบัติของหน้า" ในเมนูย้อนกลับ และเลือกการเข้ารหัสเอกสาร Unicode (utf-8) ในขณะที่ยกเลิกการเลือก "เปิดใช้งานลายเซ็น Unicode (BOM )". อย่างไรก็ตาม ขอแนะนำอย่างยิ่งให้คุณอย่าแก้ไขโค้ดจากแผงผู้ดูแลระบบของ Joomla หากคุณทำอะไรพลาดไป จะไม่มีการย้อนกลับ ซึ่งแตกต่างจากโปรแกรม Macromedia Dreamweaver ที่คุณสามารถยกเลิกการเปลี่ยนแปลงที่ทำไว้ได้ตลอดเวลา
การออกแบบบล็อกจะอธิบายไว้ใน template.css แต่เราจะปรับแต่งสไตล์ชีตหลังจากติดตั้งเทมเพลตบน Joomla 3 (joomla 2.5) และสำหรับสิ่งนี้คุณต้องสร้าง
ผู้อ่านจำนวนมากในหนังสือเกี่ยวกับคอมพิวเตอร์จะอ่านทุกอย่างที่ไม่สนใจทันทีและอ่านต่อในสิ่งที่พวกเขาจริงๆ ต้องการทราบ. โดยส่วนตัวแล้วฉันทำอย่างนั้น อย่างไรก็ตาม ไม่มีอะไรต้องกังวล - ไม่ค่อยมีหนังสือทางเทคนิคที่ต้องอ่านตั้งแต่ต้นจนจบ หรือบางทีคุณอาจทำอย่างนั้น - ข้ามแปดบทเริ่มต้นและเลือกบทนี้เพราะมันมีชื่อเรื่องที่น่าสนใจที่สุด? และใครอยากจะเสียเวลากับรายละเอียดเมื่อโครงการอื่นกำลังลุกเป็นไฟในที่ทำงาน?
โชคดีที่ความเร่งรีบนี้ไม่ได้ทำให้คุณหยุดอ่านส่วนที่สองของหนังสือ ซึ่งเกี่ยวกับการใช้ PHP เพื่อสร้างเว็บไซต์และโต้ตอบกับเว็บ ในบทนี้ คุณจะได้เรียนรู้วิธีแก้ไขเนื้อหาของหน้าเว็บและสำรวจเว็บโดยใช้ลิงก์และฟังก์ชันมาตรฐานต่างๆ บทต่อไปจะเสริมเนื้อหาที่นำเสนอ - จะกล่าวถึงรายละเอียดเกี่ยวกับวิธีการโต้ตอบของผู้ใช้ในรูปแบบ HTML บทที่ 11 อธิบายถึงการจัดระเบียบของส่วนต่อประสานกับฐานข้อมูล บทที่เหลือในตอนที่ 2 ครอบคลุมแง่มุมที่ไม่สำคัญของการเขียนโปรแกรมเว็บใน PHP
อย่างไรก็ตามควรจำไว้ว่าเนื้อหาของส่วนที่ 1 จำเป็นอย่างยิ่งสำหรับความรู้ปกติของ PHP ถือว่าคุณได้อ่านส่วนแรกแล้ว ดังนั้นตัวอย่างจะใช้แนวคิดหลายอย่างที่กล่าวถึงก่อนหน้านี้ ดังนั้น หากคุณอ่านผ่านบางส่วนของหนังสือ คุณจะต้องย้อนกลับไปยังบทก่อนหน้าเป็นครั้งคราวและตามให้ทัน
ลิงค์ง่ายๆ
<а href = "date.php">
$link = "date.php";
พิมพ์"<а href
= \"$link\">ดูวันที่ของวันนี้
\n"
คุณอาจสงสัยว่าทำไมต้องมีเครื่องหมายแบ็กสแลช (\) ก่อนเครื่องหมายคำพูด (") ในโค้ดลิงก์ เนื่องจากเครื่องหมายคำพูดเป็นอักขระพิเศษใน PHP และใช้เป็นตัวคั่นสตริง ดังนั้น เครื่องหมายคำพูดจึงเป็นสตริงตามตัวอักษรในสตริง ดังนั้น เครื่องหมายคำพูดจึงเป็นสตริงตามตัวอักษรในสตริงที่ต้องถูกป้องกัน .
หากจำเป็นต้องหลีกเครื่องหมายคำพูดรบกวนคุณ เพียงเปิดโหมด magic_quotes_gpc ในไฟล์ php.ini ของคุณ ผลลัพธ์คือเครื่องหมายอัญประกาศเดี่ยว อัญประกาศ แบ็กสแลช และอักขระว่างทั้งหมด จะถูกหลีกโดยอัตโนมัติในข้อความ!
มาพัฒนาตัวอย่างที่กำหนด หากต้องการแสดงรายการลิงก์อย่างรวดเร็วในเบราว์เซอร์ คุณสามารถใช้อาร์เรย์:
// สร้างอาร์เรย์ของส่วน
$contents - array("สอน", "บทความ", "สคริปต์", "ติดต่อ");
// วนซ้ำและส่งออกแต่ละองค์ประกอบของอาร์เรย์ตามลำดับ
สำหรับ ($i = 0; $i< sizeof($contents;
$i++)
พิมพ์ " ".$เนื้อหา[$i]."
\n";
// - การกำหนดจุดสิ้นสุดของเครื่องหมายพิเศษ;
ส่วนประกอบของไฟล์ (เทมเพลต)
เรามาถึงหนึ่งในคุณสมบัติ PHP ที่ฉันโปรดปราน เทมเพลต (ที่ใช้กับการเขียนโปรแกรมบนเว็บ) เป็นส่วนหนึ่งของเอกสารบนเว็บที่คุณจะนำไปใช้ในหลายๆ หน้า เทมเพลต เช่น ฟังก์ชัน PHP ช่วยให้คุณไม่ต้องยุ่งยากในการคัดลอก/วางส่วนของเนื้อหาหน้าและโค้ดโปรแกรม เมื่อขนาดของไซต์เพิ่มขึ้น ความสำคัญของเทมเพลตก็เพิ่มขึ้น เนื่องจากช่วยให้คุณสามารถแก้ไขที่ระดับของทั้งไซต์ได้อย่างง่ายดายและรวดเร็ว ส่วนนี้จะอธิบายถึงความเป็นไปได้บางอย่างที่เปิดขึ้นเมื่อใช้เทมเพลตที่ง่ายที่สุด
โดยทั่วไป เนื้อหา/โค้ดทั่วไป (เช่น เทมเพลต) จะถูกจัดเก็บไว้ในไฟล์แยกต่างหาก เมื่อสร้างเอกสารบนเว็บ คุณเพียง "รวม" ไฟล์เหล่านี้ไว้ในตำแหน่งที่เหมาะสมบนหน้า PHP มีสองฟังก์ชันสำหรับสิ่งนี้: include() และ need()
รวม () และต้องการ ()
ลักษณะที่โดดเด่นที่สุดประการหนึ่งของ PHP คือความสามารถในการสร้างเทมเพลตและไลบรารีการเขียนโปรแกรมแล้วแทรกลงในสคริปต์ใหม่ การใช้ไลบรารีช่วยประหยัดเวลาและความพยายามในการใช้ฟังก์ชันทั่วไปในเว็บไซต์ต่างๆ นักอ่านกับ
ประสบการณ์การเขียนโปรแกรมในภาษาอื่น (เช่น C, C++ หรือ Java) ความคุ้นเคยกับแนวคิดของไลบรารีฟังก์ชันและการใช้งานในโปรแกรมเพื่อขยายฟังก์ชันการทำงาน
การรวมไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไปในสคริปต์ทำได้โดยใช้ฟังก์ชัน PHP need() และ include() มาตรฐาน ดังที่จะแสดงในส่วนถัดไป แต่ละฟังก์ชันเหล่านี้ใช้ในสถานการณ์เฉพาะ
ฟังก์ชั่น
PHP มีสี่ฟังก์ชั่นสำหรับการรวมไฟล์ในสคริปต์ PHP:
- รวม();
- include_once();
- จำเป็นต้อง();
- need_once()
แม้จะมีชื่อคล้ายคลึงกัน แต่ฟังก์ชั่นเหล่านี้ทำงานต่างกัน
ฟังก์ชัน include() รวมเนื้อหาของไฟล์ในสคริปต์ ไวยากรณ์ของฟังก์ชัน include() คือ:
รวม (ไฟล์ไฟล์)
ฟังก์ชัน include() มีคุณสมบัติที่น่าสนใจอย่างหนึ่ง นั่นคือสามารถดำเนินการตามเงื่อนไขได้ ตัวอย่างเช่น หากมีการเรียกใช้ฟังก์ชันในบล็อกคำสั่ง if จากนั้นไฟล์จะรวมอยู่ในโปรแกรมก็ต่อเมื่อเงื่อนไข i f เป็นจริง หากใช้ฟังก์ชัน includeO ในคำสั่งแบบมีเงื่อนไข ก็จะใช้ฟังก์ชันนั้น ต้องอยู่ในวงเล็บปีกกาหรือตัวคั่นอื่น เปรียบเทียบความแตกต่างทางไวยากรณ์ในรายการ 9.1 และ 9.2
รายการ 9.1 การใช้ include() อย่างไม่ถูกต้อง
ถ้า (some_conditional)
รวม ("text91a.txt"); อื่น
รวม ("text91b.txt");
รายการ 9.2. การใช้ include() อย่างเหมาะสม
ถ้า (some_conditional) :
รวม ("text91a.txt");
รวม ("text91b.txt");
โค้ด PHP ทั้งหมดในไฟล์รวม อย่างจำเป็นอยู่ในแท็ก PHP อย่าคิดว่าการเก็บคำสั่ง PHP ไว้ในไฟล์จะทำให้มั่นใจว่าประมวลผลได้อย่างถูกต้อง:
คุณต้องใส่คำสั่งในแท็กที่เหมาะสมแทน ดังที่แสดงในตัวอย่างต่อไปนี้:
พิมพ์ "นี่คือไฟล์รวมที่ไม่ถูกต้อง";
ฟังก์ชัน include_once() ทำหน้าที่เหมือนกับ include() โดยมีข้อยกเว้นประการหนึ่ง: ฟังก์ชันจะตรวจสอบดูว่าไฟล์ถูกรวมไว้แล้วหรือไม่ก่อนที่จะรวมอยู่ในโปรแกรม หากรวมไฟล์แล้ว การเรียก include_once() จะถูกละเว้น และหากไม่มี ไฟล์จะถูกรวมโดยค่าเริ่มต้น ในแง่อื่นๆ ทั้งหมด include_once() ก็ไม่ต่างจากการรวม() ไวยากรณ์ของฟังก์ชัน include_once() คือ:
include_once (ไฟล์ ไฟล์)
โดยทั่วไปแล้ว ฟังก์ชัน need() จะคล้ายกับ include() -- และยังรวมถึงเทมเพลตในไฟล์ที่มีการเรียกไปยัง need() ไวยากรณ์ของฟังก์ชัน need() คือ:
ต้องการ (ไฟล์ไฟล์)
อย่างไรก็ตาม มีความแตกต่างที่สำคัญอย่างหนึ่งระหว่างฟังก์ชัน need() และ include() ไฟล์ที่ระบุโดยพารามิเตอร์ need() จะรวมอยู่ในสคริปต์ โดยไม่คำนึงถึงตำแหน่งของ requirement() ในสคริปต์ ตัวอย่างเช่น หากคุณเรียก requirementre() ในบล็อก if ที่มีเงื่อนไขเป็นเท็จ ไฟล์จะยังคงรวมอยู่ในสคริปต์!
ในหลาย ๆ สถานการณ์ การสร้างไฟล์ที่มีตัวแปรและข้อมูลอื่น ๆ ที่ใช้ในไซต์นั้นสะดวก และจากนั้นรวมไว้ตามต้องการ แม้ว่าชื่อของไฟล์นี้จะตั้งขึ้นเอง แต่ฉันมักจะเรียกมันว่า init.tpl (ย่อมาจาก "initializaion.template") รายการ 9.3 แสดงให้เห็นว่าไฟล์ init.tpl ธรรมดาๆ หน้าตาเป็นอย่างไร ในรายการ 9-4 เนื้อหาของ init.tpl จะรวมอยู่ในสคริปต์ด้วยคำสั่ง required()
รายการ 9.3. ตัวอย่างไฟล์เริ่มต้น
$site_title = "สูตร PHP";!}
$contact_email = " [ป้องกันอีเมล]";
$contact_name = "ดับเบิลยู เจ กิลมอร์";
รายการ 9.4 โดยใช้ไฟล์ init.tpl
require ("init.tpl
");?>
print $site_title; ?>
print "Welcome
to $site_title. For questions, contact
\"mai1 ถึง:$contact_email\">$contact_name
."; ?>
การส่ง URL เมื่อเรียก need() จะได้รับอนุญาตก็ต่อเมื่อเปิดใช้งานโหมด "URL fopen wrappers" (โหมดนี้เปิดใช้งานโดยค่าเริ่มต้น)
เมื่อขนาดของไซต์เพิ่มขึ้น อาจเกิดขึ้นได้ที่ไฟล์บางไฟล์รวมอยู่ในสคริปต์มากกว่าหนึ่งครั้ง บางครั้งสิ่งนี้ไม่ได้ทำให้เกิดปัญหา แต่ในบางกรณี การเปิดใช้งานไฟล์อีกครั้งจะเป็นการรีเซ็ตตัวแปรที่เปลี่ยนแปลง หากมีการกำหนดฟังก์ชันในไฟล์รวม ความขัดแย้งของชื่ออาจเกิดขึ้นได้ จากที่กล่าวมา เราก็มาถึง function ต่อไปครับ คือ need_once()
ฟังก์ชัน need_once() ช่วยให้มั่นใจได้ว่าไฟล์จะรวมอยู่ในสคริปต์เพียงครั้งเดียว หลังจากการเรียกร้องให้ requi re_onse() ความพยายามเพิ่มเติมทั้งหมดที่จะรวมไฟล์เดียวกันจะถูกละเว้น ไวยากรณ์ของฟังก์ชัน required_onse() คือ:
คุณน่าจะใช้ไฟล์รวมฟังก์ชันบ่อยขึ้นเมื่อเว็บแอปพลิเคชันของคุณมีขนาดโตขึ้น ฟังก์ชันเหล่านี้มักใช้ในตัวอย่างในหนังสือเล่มนี้เพื่อลดความซ้ำซ้อนของโค้ด ตัวอย่างแรกจะกล่าวถึงในหัวข้อถัดไปเกี่ยวกับหลักการสร้างเทมเพลตพื้นฐาน
ส่วนประกอบของอาคาร
เมื่อกำหนดโครงสร้างของหน้าเว็บทั่วไป ฉันมักจะแบ่งมันออกเป็นสามส่วน: ส่วนหัว ส่วนเนื้อหา และส่วนท้าย โดยปกติแล้ว เว็บไซต์ที่มีการจัดระเบียบอย่างดีส่วนใหญ่จะมีหัวข้อที่ไม่เปลี่ยนแปลงมากนัก ส่วนหลักแสดงเนื้อหาที่ร้องขอของไซต์ ดังนั้นจึงมีการเปลี่ยนแปลงบ่อยครั้ง สุดท้าย ส่วนท้ายประกอบด้วยข้อมูลลิขสิทธิ์และลิงก์การนำทาง ส่วนท้ายเช่นส่วนหัวมักจะไม่เปลี่ยนแปลง อย่าเข้าใจฉันผิด ฉันไม่ได้พยายามขัดขวางความคิดสร้างสรรค์ของคุณเลย ฉันเคยเห็นเว็บไซต์ที่ยอดเยี่ยมมากมายที่ไม่ปฏิบัติตามหลักการเหล่านี้ ฉันแค่พยายามหาโครงสร้างทั่วไปที่สามารถใช้เป็นจุดเริ่มต้นสำหรับงานต่อไปได้
หัวข้อ
ไฟล์ส่วนหัว (เช่นไฟล์ในรายการ 9.5) มีอยู่ในเกือบทุกเว็บไซต์ที่เปิดใช้งาน PHP ของฉัน ไฟล์นี้มี
ข้อมูลทั่วทั้งไซต์ เช่น ชื่อเรื่อง ข้อมูลติดต่อ และส่วนประกอบบางอย่างของโค้ดหน้า HTML
รายการ 9.5. ตัวอย่างไฟล์ส่วนหัว
// ไฟล์: header.tpl
// วัตถุประสงค์: ไฟล์ส่วนหัวสำหรับไซต์ PhpRecipes
$site_name = "PHPRRecipes";
$site_email=" [ป้องกันอีเมล]";
$site_path = "http://localhost/phprecipes";
print $site_name; ?>
|
// แสดงวันที่และเวลาปัจจุบัน
วันที่พิมพ์ ("F d, h:i a");
เป็นเรื่องปกติที่ผู้เข้าชมจะจำกัดการเข้าถึงไฟล์รวม โดยเฉพาะอย่างยิ่งหากไฟล์มีข้อมูลที่ละเอียดอ่อน (เช่น รหัสผ่าน) ใน Apache คุณสามารถป้องกันไม่ให้ดูไฟล์บางไฟล์ได้โดยการแก้ไขไฟล์ http.conf หรือ htaccess ตัวอย่างต่อไปนี้แสดงวิธีปิดใช้งานการดูไฟล์ .tpl ทั้งหมด:
คำสั่งอนุญาตปฏิเสธ
อนุญาตจาก 127.0.0.1
ปัญหาด้านความปลอดภัยของ PHP และไซต์มีรายละเอียดอยู่ในบทที่ 16
ชื่อเรื่องวิ่ง
ส่วนหัว (ส่วนท้าย) มักเรียกว่าข้อมูลที่ด้านล่างของหน้าเว็บไซต์ - รายละเอียดการติดต่อ ลิงก์ และข้อมูลลิขสิทธิ์ ข้อมูลนี้สามารถวางไว้ในไฟล์แยกต่างหากและรวมเป็นเทมเพลตในลักษณะเดียวกับส่วนหัว สมมติว่าเมื่อถึงปีใหม่ คุณต้องเปลี่ยนข้อมูลลิขสิทธิ์และนำมาไว้ที่แบบฟอร์ม "ลิขสิทธิ์ © 2000-2001" มีสองวิธี: ใช้เวลาวันคริสต์มาสอีฟแก้ไขหน้าคงที่หลายร้อยหน้า หรือใช้แม่แบบเหมือนกับในรายการ 9.6 การเปลี่ยนแปลงง่ายๆ เพียงครั้งเดียว คุณก็สามารถกลับไปทำงานบ้านในวันหยุดได้
รายการ 9.6.ตัวอย่างไฟล์ส่วนท้าย (footer.tpl)
ติดต่อ
|
ความเป็นส่วนตัวของคุณ
หมายเหตุการใช้ตัวแปรร่วม $site_email ในไฟล์ส่วนท้าย ค่าของตัวแปรนี้เป็นค่าทั้งหน้า และเราถือว่าไฟล์ header.tpl และ footer.tpl จะรวมอยู่ในหน้าสุดท้ายเดียวกัน นอกจากนี้ ให้สังเกตการมีอยู่ของ $site_path ในลิงก์ความเป็นส่วนตัว ฉันใส่พาธแบบเต็มไปยังลิงก์ทั้งหมดในเทมเพลตของฉันเสมอ หาก URL ของลิงก์ประกอบด้วยชื่อเดียว Privacy.php ไฟล์ส่วนท้ายจะถูกฮาร์ดโค้ดไปยังไดเร็กทอรีเฉพาะ
ส่วนสำคัญ
เนื้อหาของส่วนหัวและส่วนท้ายรวมอยู่ในส่วนหลักของหน้า โดยพื้นฐานแล้วเป็นส่วนหลักที่มีข้อมูลที่น่าสนใจสำหรับผู้เยี่ยมชมไซต์ ส่วนหัวดูสวยงาม ส่วนท้ายมีข้อมูลที่เป็นประโยชน์ แต่สำหรับส่วนหลักของหน้าที่ผู้ใช้กลับมาที่ไซต์ครั้งแล้วครั้งเล่า แม้ว่าฉันจะไม่สามารถให้คำแนะนำใดๆ เกี่ยวกับโครงสร้างเพจเฉพาะได้ แต่เทมเพลตอย่างเช่นในรายชื่อ 9-7 ทำให้การดูแลเพจง่ายขึ้นมาก
รายการ 9.7.
ตัวอย่างเนื้อหาหลักของหน้า (index_body.tpl)
/tutorials.php">บทช่วยสอน
บทความ
สคริปต์
ติดต่อ
|
ยินดีต้อนรับสู่ PHPRecipes จุดเริ่มต้นสำหรับสคริปต์ PHP บทช่วยสอน
และข้อมูลเกี่ยวกับการทำอาหารรสเลิศ!
รวบรวมทั้งหมดเข้าด้วยกัน: ส่วนหัว ส่วนท้าย และส่วนเนื้อหา
บางทีอารมณ์ของฉันอาจแสดงออกได้ดีที่สุดโดยพันเอก "ฮันนิบาล" สมิธ (จอร์จ เป็ปพาร์ด) จากซีรีส์ A-Team อันโด่งดัง: "ฉันรักเมื่อทุกอย่างลงตัว" ฉันพบสิ่งที่คล้ายกันเมื่อรวมเทมเพลตที่แตกต่างกันเพื่อสร้างเอกสารเว็บที่สมบูรณ์ ด้วยการรวมส่วนเอกสารสามส่วนเข้าด้วยกัน: header.tpl, index_body.tpl และ footer.tpl คุณสามารถสร้างหน้าง่ายๆ เช่นเดียวกับหน้าในรายการ 9-8 ได้อย่างรวดเร็ว
รายการ 9.8.
สร้างหน้า index.php โดยรวมไฟล์ต่างๆ
// ไฟล์: index.php
// ปลายทาง: หน้าแรกของ PHPRecipes
// แสดงชื่อเรื่อง
รวม ("header.tpl");
// เอาต์พุตหลัก
รวม ("index_body.tpl");
// ส่วนท้ายเอาต์พุต
รวม ("footer.tpl");
ดีอย่างไร? คำสั่งง่ายๆ สามคำสั่ง - และคุณมีหน้าสำเร็จรูปอยู่ตรงหน้าคุณ ข้อความของหน้าสรุปจะแสดงในรายการ 9.9
รายการ 9.9 หน้า HTML ที่สร้างขึ้นในรายการ 9-8 (index.php)
PHPRecipes
ลิขสิทธิ์ 2000 PHPRecipes สงวนลิขสิทธิ์.
ติดต่อ |
ความเป็นส่วนตัวของคุณ
บนมะเดื่อ รูปที่ 9-1 แสดงลักษณะของหน้าผลลัพธ์ในเบราว์เซอร์ แม้ว่าปกติฉันจะไม่ใช้เส้นขอบตาราง แต่คราวนี้ฉันได้รวมไว้เพื่อให้ทั้งสามส่วนของหน้าโดดเด่นชัดเจนยิ่งขึ้นในรูป
ข้าว. 9.1. ลักษณะที่ปรากฏของเพจที่สร้างขึ้นในรายการ 9.8
การเพิ่มประสิทธิภาพเทมเพลต
ในตัวแปรที่สอง (ในความคิดของฉันดีกว่า) เทมเพลตจะทำในรูปแบบของฟังก์ชั่นที่อยู่ในไฟล์แยกต่างหาก นี่เป็นการจัดโครงสร้างเพิ่มเติมสำหรับเทมเพลตของคุณ ฉันเรียกไฟล์นี้ว่าไฟล์เริ่มต้นและเก็บข้อมูลที่เป็นประโยชน์อื่นๆ ไว้ในนั้น เนื่องจากเราได้ดูตัวอย่างส่วนหัวและส่วนท้ายที่ค่อนข้างยาวแล้ว รายการ 9-10 และ 9-11 จึงถูกตัดให้สั้นลงเล็กน้อยเพื่อแสดงแนวคิดใหม่
รายการ 9.10 เทมเพลตไซต์ที่ปรับให้เหมาะสม (site_init.tpl)
// ไฟล์: site_init.tpl
// วัตถุประสงค์: ไฟล์เริ่มต้น PhpRecipes
$site_name = "PHPRRecipes";
$site_email = " [ป้องกันอีเมล]";
$site_path = "http://localhost/phprecipes/";
ฟังก์ชัน show_header($site_name) (
print $site_name: ?>
นี่คือส่วนหัว
ฟังก์ชันแสดงส่วนท้าย ()
นี่คือส่วนท้าย
รายการ 9.11 การใช้ไฟล์เริ่มต้น
// รวมไฟล์เริ่มต้น
รวม ("site_init.tpl");
// แสดงชื่อเรื่อง
แสดงส่วนหัว ($site_name);
// เนื้อหาเนื้อหา นี่คือข้อมูลเนื้อหาบางส่วน
// แสดงส่วนท้าย Show_footer();
โครงการ: เครื่องกำเนิดหน้า
แม้ว่าเว็บไซต์ส่วนใหญ่ที่ฉันสร้างขึ้นจะสร้างเนื้อหาหลักของหน้าตามข้อมูลที่อ่านจากฐานข้อมูล แต่จะมีบางหน้าที่แทบไม่เปลี่ยนแปลงอยู่เสมอ โดยเฉพาะอย่างยิ่ง พวกเขาสามารถแสดงข้อมูลเกี่ยวกับทีมพัฒนา ข้อมูลติดต่อ โฆษณา ฯลฯ ฉันมักจะเก็บข้อมูล "คงที่" นี้ในโฟลเดอร์แยกต่างหาก และใช้สคริปต์ PHP เพื่อโหลดเมื่อมีการร้องขอ แน่นอน คุณมีคำถาม - ถ้านี่เป็นข้อมูลคงที่ สคริปต์ PHP มีไว้เพื่ออะไร? เหตุใดจึงไม่โหลดหน้า HTML ปกติ ข้อดีของ PHP คือคุณสามารถใช้เทมเพลตและแทรกตัวอย่างข้อมูลแบบคงที่ได้ตามต้องการ
<а href =
"=$site_path:?>/static.php?content=$content">ชื่อหน้าคงที่
เริ่มต้นด้วยการสร้างหน้าคงที่ เพื่อความง่าย ฉันจะจำกัดตัวเองไว้ที่สามหน้าที่มีข้อมูลเกี่ยวกับไซต์ (รายการ 9.12) โฆษณา (รายการ 9.13) และข้อมูลติดต่อ (รายการ 9.14)
รายการ 9.12 ข้อมูลไซต์ (about.html)
เกี่ยวกับ PHPRecipes
โปรแกรมเมอร์คนใดไม่ผสมผสานการเขียนโปรแกรมทั้งคืนกับคุกกี้รสเลิศ ที่ PHPRecipes แทบจะไม่มีคืนใดเลยที่ผู้เขียนโค้ดของเราคนใดคนหนึ่งผสม HTML เล็กน้อยกับเห็ดพอร์โทเบลโลแสนอร่อยหรือแม้แต่ฟองดู ดังนั้นเราจึงตัดสินใจนำคุณ สิ่งที่ดีที่สุดที่เรารักมากที่สุด: PHP และอาหาร!
ถูกต้องแล้วผู้อ่าน บทช่วยสอน สคริปต์ ซูเฟล่ และอีกมากมาย 0เท่านั้นที่ PHPRecipes
ข้อมูลการโฆษณา
ไม่ว่าพวกเขาจะมาเพื่อเรียนรู้เทคนิค PHP ล่าสุดหรือเพื่อทบทวนวิธีการก็ตาม
ในการอบไก่ คุณสามารถพนันได้เลยว่าผู้อ่านของเราคือผู้มีอำนาจตัดสินใจ พวกเขาคืออุตสาหกรรม
ผู้เชี่ยวชาญที่ตัดสินใจเกี่ยวกับสิ่งที่บริษัทซื้อ
สอบถามข้อมูลโฆษณาติดต่อ
">[ป้องกันอีเมล] .
รายการ 9.14 รายละเอียดการติดต่อ (contact.html)
ติดต่อเรา
มีเคล็ดลับการเข้ารหัส?
รู้จักท็อปปิ้งที่สมบูรณ์แบบสำหรับมันเทศหวานหรือไม่?
แจ้งให้เราทราบ! ติดต่อทีมงานได้ที่ [ป้องกันอีเมล].
เรามาสร้างหน้า static.php ซึ่งแสดงข้อมูลคงที่ที่ร้องขอ ไฟล์นี้ (ดูรายการ 9-15) รวมส่วนประกอบของหน้าเว็บไซต์ของเราและไฟล์เริ่มต้นของ site_init.tpl
รายการ 9.15. ผลลัพธ์ทั่วไปของหน้าสแตติก (static.php)
// ไฟล์: static.php
// วัตถุประสงค์: แสดงหน้าสแตติกที่ร้องขอ
// คำเตือน: สันนิษฐานว่าไฟล์ "site_init.tpl" และทั้งหมด
// ไฟล์คงที่อยู่ในไดเรกทอรีเดียวกัน
// ฟังก์ชั่นโหลดและตัวแปรรวม ("site_init.tpl"):
// ชื่อที่แสดง show_header($site_name);
// แสดงเนื้อหาที่ขอ รวมถึง ("$content.html"):
// แสดงส่วนท้าย แสดงส่วนท้าย ();
ตอนนี้ทุกอย่างพร้อมที่จะสร้างสคริปต์หลักแล้ว เพียงแค่ใส่ในหน้า
<а href = "static.php?content=about">ชื่อหน้าคงที่
ข้อมูลการโฆษณา
ติดต่อเรา
การคลิกที่ลิงค์ใด ๆ เหล่านี้จะโหลดหน้าคงที่ที่เกี่ยวข้องซึ่งฝังอยู่ใน static.php ในเบราว์เซอร์!
ผลลัพธ์
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับเป้าหมายหลักที่ PHP ออกแบบมาเพื่อแก้ไข: การสร้างหน้าเว็บแบบไดนามิก มีการพิจารณาคำถามต่อไปนี้:
- การประมวลผล URL;
- การสร้างเนื้อหาแบบไดนามิก
- การรวมและการสร้างเทมเพลตพื้นฐาน
บทนี้สรุปด้วยโปรแกรมสร้างเพจ ซึ่งเป็นโปรแกรมที่โหลดเพจแบบสแตติกลงในเทมเพลต และทำให้ง่ายต่อการดูแลเพจ HTML แบบสแตติกจำนวนมาก
บทต่อไปเกี่ยวกับการใช้ PHP ร่วมกับรูปแบบ HTML เพื่อปรับปรุงการโต้ตอบของไซต์ของคุณอย่างมาก แล้ว - การโต้ตอบกับฐานข้อมูล! คุณต้องเรียนรู้สิ่งที่น่าสนใจมากมาย
จากบทเรียนก่อนหน้านี้ เราได้เรียนรู้ว่าการใช้วิธี GET คุณสามารถส่งพารามิเตอร์บางอย่างไปยัง URL ได้โดยตรง อย่างไรก็ตาม ไม่มีอะไรป้องกันเราจากการดำเนินการนี้โดยไม่มีแบบฟอร์ม เพียงแค่แสดงรายการใน URL
เราสามารถส่งพารามิเตอร์ผ่านทาง URL และเราสามารถรับพารามิเตอร์เหล่านี้ได้จากสคริปต์ แล้วอะไรทำให้เราไม่สามารถแสดงหน้าต่างๆ ให้ผู้ใช้เห็นโดยขึ้นอยู่กับพารามิเตอร์ใน URL
สร้างเพจแบบไดนามิก
ในการแสดงหน้าต่างๆ ให้ผู้ใช้เห็น คุณต้องเตรียมเนื้อหา ปล่อยให้มันอยู่ในอาร์เรย์หลายมิติ:
"การสร้างไดนามิกเพจ", "เนื้อหา" => "ข้อความของบทความเกี่ยวกับไดนามิกเพจ" ], [ "title" => "วิธีจับลูกแมว", "เนื้อหา" => "เนื้อหาของบทความเกี่ยวกับลูกแมว" ] ]; ?> พารามิเตอร์ไดนามิกใน URL จะถูกเรียกว่า id และเราจะจับมันใน $_GET["id"] เราสามารถเพิ่มฟิลด์ id ให้กับแต่ละอิลิเมนต์ของอาร์เรย์ได้ แต่จากนั้นเราจะต้องวนซ้ำทุกอิลิเมนต์และมองหา subarray ที่มี id ที่ต้องการ ดังนั้นจึงง่ายกว่ามากที่จะใช้คีย์ของอาร์เรย์หลักเป็น id
พูดง่ายๆ คือเราใช้รหัสและพยายามค้นหาบทความด้วยรหัสนั้นในอาร์เรย์ $articles ดูเหมือนว่า:
ยังคงเป็นเพียงการร่างเอาต์พุตเมนูและตรวจสอบความถูกต้องของรหัส กลายเป็นเราเตอร์ php จริง!
"หน้าหลัก", "เนื้อหา" => "ข้อความของบทความเกี่ยวกับเว็บไซต์ของเรา" ], [ "ชื่อ" => "การสร้างหน้าแบบไดนามิก", "เนื้อหา" => "ข้อความของบทความเกี่ยวกับหน้าแบบไดนามิก" ], [ "title" => "วิธีจับลูกแมว", "เนื้อหา" => "เนื้อหาของบทความเกี่ยวกับลูกแมว" ] ]; # ถ้า id ถูกส่งผ่าน ให้เขียนบทความไปที่ $article หรือ null ถ้าไม่มีบทความที่มี id นี้ if(isset($_GET["id"])) $current_article = $articles[$_GET["id"]] ?? โมฆะ; # ถ้า id ไม่ผ่าน แสดงว่านี่คือหน้าหลัก เราสามารถแสดงหน้าด้วย id = 0 else $current_article = $articles; ?>
$บทความ): ?> ">= $article["title"] ?>
= $current_article["title"] ?>
= $current_article["content"] ?>
ข้อผิดพลาด 404: ไม่พบหน้า
ตอนนี้คุณสามารถสร้างไซต์ไดนามิกโดยที่จำนวนหน้าขึ้นอยู่กับจำนวนองค์ประกอบอาร์เรย์ ไม่ใช่ไฟล์ PHP :) หากไซต์ควรมีหน้าประเภทต่างๆ เช่น บทความและผลิตภัณฑ์ คุณสามารถส่งประเภทหน้าเป็นพารามิเตอร์ที่สองได้: site.ru?type=article&id=5
แน่นอนว่าระบบนี้ไม่สมบูรณ์แบบ หลังจากนั้นไม่นาน คุณจะได้เรียนรู้วิธีสร้าง CNC แบบปกติ (URL ที่สะดวกกว่า เช่น site.ru/articles/5/) และจัดเก็บบทความในไฟล์หรือฐานข้อมูล
ในการสร้างไซต์ที่ดูดี ขยายได้ และมีประสิทธิภาพไม่ว่าจะมีความซับซ้อนใดๆ ก็ตาม คุณควรเริ่มต้นด้วยไซต์ที่เรียบง่าย กระบวนการนี้ไม่ใช่เรื่องง่าย ต้องใช้ความรู้พื้นฐานบางอย่างเกี่ยวกับ PHP และ MySQL แต่ถ้าคุณดูทีละประเด็น คุณสามารถจัดทำ "แผนงาน" ที่จะมีประโยชน์เมื่อสร้างไซต์ใหม่ มาเตรียม "แกนกลาง" และฐานสำหรับโครงการกันเถอะ ในตอนแรกมันจะเป็นไซต์นามบัตรทั่วไป แต่จากนั้นด้วยการเพิ่มฟังก์ชั่นมันสามารถเปลี่ยนเป็นอะไรก็ได้ มาเริ่มกันเลย 1. การจัดทำฐานข้อมูล. สร้างตารางแรกในฐานข้อมูล MySQLสร้างฐานข้อมูลใหม่ เช่น "mysite" โดยส่วนตัวแล้ว ฉันคุ้นเคยกับการเข้ารหัส UTF-8 ดังนั้นฉันจะทำการจองทันที: ตรวจสอบให้แน่ใจว่าไฟล์ข้อความทั้งหมดของไซต์ ฐานข้อมูล ตาราง และฟิลด์ตารางอยู่ในการเข้ารหัสเดียวกัน สร้างตารางในฐานข้อมูลใหม่ ขอเรียกว่า "หน้า" ตารางนี้จะจัดเก็บหน้าคงที่ของไซต์ในอนาคตและข้อมูลเกี่ยวกับพวกเขา ตารางต้องมีฟิลด์ต่อไปนี้: - page_id - รหัสหน้า (SMALLINT, คีย์หลัก, auto_increment);
- page_alias - นามแฝงของหน้าสำหรับสตริงที่อยู่ CNC (VARCHAR, 255);
- page_title - ชื่อเรื่องของหน้าในหน้าต่างเบราว์เซอร์ (VARCHAR, 255);
- page_meta_d - คำอธิบายเมตาของหน้าสำหรับแท็กคำอธิบายเมตา (VARCHAR, 255);
- page_meta_k - คำหลักเมตาสำหรับแท็กคำหลักเมตา (VARCHAR, 255);
- page_h1 - ชื่อหน้า (VARCHAR, 255);
- page_s_desc - คำอธิบายสั้น ๆ ของเนื้อหา เช่น หากเนื้อหาของไซต์จะอยู่ในรูปแบบของบล็อก (TEXT)
- page_content - ข้อความหลักของหน้าซึ่งจะแสดงในคอลัมน์กลางของไซต์ (TEXT)
- page_publish - มี "Y" ถ้าเพจถูกเผยแพร่ หรือ "N" ถ้าเพจถูกซ่อน (CHAR ค่าเริ่มต้นคือ "Y")
ทันทีหลังจากสร้างตารางให้ใส่ค่าสำหรับหน้าหลักของไซต์ลงไป ในช่อง "page_alias" ของหน้าหลัก ฉันแนะนำให้ใส่ค่า "home" เมตาแท็ก - ตามธีมของทั้งไซต์ ในทำนองเดียวกัน คุณสามารถสร้างหน้าอื่นๆ ได้ เช่น "เกี่ยวกับบริษัท" ด้วยนามแฝง "เกี่ยวกับ" และเมตาแท็กของหน้านั้นๆ หรือ "ผู้ติดต่อ" ด้วยนามแฝง "ผู้ติดต่อ" เป็นต้น 2. สร้างไฟล์การกำหนดค่าไซต์ในโฟลเดอร์รูทของไซต์ซึ่งควรว่างเปล่าในขั้นตอนนี้ เราสร้างโฟลเดอร์ "cfg" ในนั้นโดยใช้ .htaccess เราปิดการเข้าถึงด้วยคำสั่ง "ปฏิเสธจากทั้งหมด" สร้างไฟล์ core.php โดยมีเนื้อหาดังต่อไปนี้:
// มายเอสคิวแอล คลาส MyDB
{ var $dblogin = "รูท"; // เข้าสู่ระบบฐานข้อมูลของคุณ var $dbpass = ""; // รหัสผ่านฐานข้อมูลของคุณ var $db = "ไซต์ของฉัน"; // ชื่อของฐานสำหรับไซต์ var $dbhost="localhost"; var$ลิงค์; แบบสอบถาม var$; var $ผิดพลาด; var $ผลลัพธ์; var$ข้อมูล; var $ดึง; ฟังก์ชันเชื่อมต่อ() ( $this->link = mysql_connect($this->dbhost, $this->dblogin, $this->dbpass); mysql_select_db($this->db); mysql_query("ตั้งชื่อ utf8");
} ฟังก์ชั่นปิด () ( mysql_close($this->link);
} เรียกใช้ฟังก์ชัน ($ แบบสอบถาม) ( $this->query = $แบบสอบถาม; $this->result = mysql_query($this->query, $this->link); $this->err = mysql_error();
} แถวฟังก์ชัน() ( $this->data = mysql_fetch_assoc($this->result);
} ดึงข้อมูล () ( ในขณะที่ ($this->data = mysql_fetch_assoc($this->result)) ( $this->fetch = $this->ข้อมูล; ส่งคืน $this->fetch;
}
} หยุดการทำงาน() ( unset($this->data); unset($this->result); unset($this->fetch); unset($this->err); unset($this->query);
}
} ขณะนี้ไฟล์นี้มีเฉพาะคลาสการเชื่อมต่อฐานข้อมูลอย่างง่าย แต่ในอนาคต คุณสามารถเพิ่มฟังก์ชันที่มีประโยชน์ต่างๆ ลงในไฟล์ได้ ซึ่งจะพร้อมใช้งานจากทุกที่ในโค้ดของไซต์ อย่าลืมเปลี่ยนชื่อผู้ใช้และรหัสผ่านสำหรับฐานข้อมูลของคุณ หากคุณกำลังทำงานบนสภาพแวดล้อม Windows ฉันขอแนะนำให้ใช้ . โปรแกรมแก้ไขนี้มีหมายเลขบรรทัด และแปลข้อความจากการเข้ารหัสหนึ่งไปยังอีกรหัสหนึ่งได้อย่างง่ายดาย ความสนใจ! หากคุณทำงานในการเข้ารหัส UTF-8 - แปลงไฟล์เป็น UTF-8 โดยไม่มี BOM - สิ่งนี้จะช่วยหลีกเลี่ยงปัญหาในอนาคต 3. สร้าง index.php - ตัวควบคุมไซต์หลักสร้างไฟล์การกำหนดค่าแล้ว ตอนนี้เราสร้าง index.php ในโฟลเดอร์รูทของไซต์ - นี่จะเป็นสคริปต์หลักของไซต์ ซึ่งเป็น "ตัวควบคุมหลัก" ชนิดหนึ่ง เนื้อหาของไฟล์ index.php:
กำหนด ("ดัชนี", ""); // ตั้งค่าตัวควบคุมหลักคงที่ Require_once($_SERVER."/cfg/core.php"); // เชื่อมต่อแกน // เชื่อมต่อกับฐานข้อมูล $db = ใหม่ MyDB(); $db->เชื่อมต่อ(); // ตัวควบคุมหลัก สวิตช์ ($_GET) ( กรณี "หน้า": รวม($_SERVER."/com/page.php"); หยุดพัก; ค่าเริ่มต้น: รวม ($_SERVER."/com/home.php"); หยุดพัก;
} รวม ($_SERVER."/ template.php"); $db->ปิด (); ตัวแปร $_GET จะบอกตัวควบคุมหลักว่าส่วนประกอบของไซต์ใดที่จะโหลดตามคำขอ ตอนนี้ไซต์ของเรามีเพียงสององค์ประกอบ: "หน้า" และ "หน้าหลัก" (โดยหลักการแล้วคุณสามารถใช้องค์ประกอบเดียวในการแสดงหน้าปกติ แต่บ่อยครั้งที่รูปลักษณ์ของหน้าหลักของเว็บไซต์แตกต่างจากหน้าปกติของ รายการเมนู) ตรรกะของตัวควบคุมหลักเป็นดังนี้: ชื่อของส่วนประกอบที่ต้องการ (ค่าของตัวแปร $option) ถูกแยกออกจากสตริง URL โดยขึ้นอยู่กับค่าของมัน ไฟล์ของส่วนประกอบนั้นรวมอยู่ด้วย (อยู่ใน / โฟลเดอร์คอม). ไฟล์คอมโพเนนต์จะทำงานที่จำเป็นทั้งหมด ดึงข้อมูลจากฐานข้อมูลและเขียนลงในตัวแปรเพื่อส่งผ่านไปยังเทมเพลตการออกแบบ ในตอนท้ายไฟล์การออกแบบไซต์จะเชื่อมต่อซึ่งตัวแปรและข้อมูลทั้งหมดที่แยกออกมาในส่วนประกอบจะถูกโอนย้าย ฟังดูซับซ้อนกว่าที่ใช้งานได้มาก 4. สร้างคอมโพเนนต์เอาต์พุตเพจปกติในรูทของไซต์ ให้สร้างโฟลเดอร์ "com" ซึ่งจะจัดเก็บไฟล์คอมโพเนนต์ ตามความเข้าใจของฉัน ส่วนประกอบของไซต์คือไฟล์ที่มีการประมวลผลข้อมูลสำหรับส่วนต่างๆ ของไซต์ ตัวอย่างเช่น ส่วนประกอบของหน้าปกติดึงชื่อ คำอธิบาย และข้อความของเนื้อหาจากฐานข้อมูล และเขียนลงในตัวแปร $title, $meta_d, $meta_k, $content เป็นต้น จากนั้นข้อมูลนี้จะถูกถ่ายโอนไปยัง เทมเพลตการออกแบบ (คุณสามารถสร้างเทมเพลตการออกแบบของคุณเองสำหรับแต่ละส่วนประกอบ ) และแสดงให้ผู้ใช้เห็นเป็นหน้า HTML ตัวอย่างเช่น คอมโพเนนต์แคตตาล็อกที่สามารถสร้างได้ในอนาคตจะทำเกือบสิ่งเดียวกัน แต่จะมีข้อมูลเกี่ยวกับผลิตภัณฑ์ และมีข้อมูลเฉพาะของตนเอง ฟิลด์อื่นๆ ในตาราง และอื่นๆ ดังนั้นสำหรับแต่ละส่วนการทำงานของไซต์ จึงควรสร้างส่วนประกอบแยกต่างหาก ในรูปแบบ MVC (Model-View-Controller) คอมโพเนนต์จะมีบทบาทเป็นโมเดล สร้างไฟล์ "page.php" ในโฟลเดอร์ "com" เนื้อหาของไฟล์มีดังนี้:
/* ส่วนประกอบของหน้า */ $นามแฝง = $_GET; $query = "เลือก * จากหน้า WHERE page_alias="".$alias."" AND page_publish="Y" LIMIT 1"; $db->run($แบบสอบถาม); $db->row(); // ตัวแปรส่วนประกอบ $id = $db->ข้อมูล; $นามแฝง = $db->ข้อมูล; $title = $db->ข้อมูล; $h1 = $db->ข้อมูล; $meta_d = $db->ข้อมูล; $meta_k = $db->ข้อมูล; $s_desc = $db->ข้อมูล; $ส่วนประกอบ = $db->ข้อมูล; // หากไม่มีหน้านี้ ถ้า (!$id) ( ส่วนหัว ("ไม่พบ HTTP / 1.1 404"); $component = "ข้อผิดพลาด 404 ไม่มีหน้านี้";
} $db->หยุด (); 5. สร้างส่วนประกอบการแสดงผลหน้าแรกหน้าหลักในฐานข้อมูลของเราถูกจัดเก็บไว้ภายใต้นามแฝง "บ้าน" และจนถึงขณะนี้โครงสร้างไม่แตกต่างจากหน้าปกติของไซต์ - เป็นเพียงบทความ อย่างไรก็ตาม เราจะสร้างส่วนประกอบแยกต่างหากสำหรับมัน - สำหรับอนาคตก็ว่าได้
เนื้อหาของคอมโพเนนต์ "home.php" ในโฟลเดอร์ "com" เกือบจะเหมือนกับเนื้อหาของคอมโพเนนต์ของเพจปกติ ยกเว้นสตริงการสืบค้นไปยังฐานข้อมูลและชื่อของคอมโพเนนต์ สตริงการสืบค้นตอนนี้มีลักษณะดังนี้: $query = "SELECT * FROM wx_pages WHERE page_alias="home" LIMIT 1"; 6. สร้างเทมเพลตการออกแบบสำหรับทั้งไซต์สร้างไฟล์ template.php ในรูทของไซต์ อันที่จริง นี่เป็นเลย์เอาต์การออกแบบเว็บปกติในรูปแบบ HTML + CSS โดยมีตัวแปร PHP อยู่ในตำแหน่งที่เหมาะสมเท่านั้น แทรกระหว่างแท็กชื่อเรื่อง=$title?>ในคอลัมน์กลางของส่วนแทรกของไซต์=$component?>ดังนั้นตลอดทั้งเทมเพลต เราจึงวางตัวแปรที่จำเป็นซึ่งประกาศไว้ในส่วนประกอบต่างๆ โฟลเดอร์รูทควรมีโฟลเดอร์ "css" และ "images" สำหรับองค์ประกอบการออกแบบ ในไฟล์ /css/style.css - คุณสามารถปรับแต่งสไตล์ตามที่คุณต้องการ 7. ล้างลิงก์และไฟล์ .htaccessในการสร้างลิงก์ใหม่ทั้งหมด ฉันใช้ mod_rewrite พร้อมคำแนะนำโดยตรงสำหรับกฎสำหรับแต่ละส่วนประกอบแยกกัน เนื่องจากการแยกวิเคราะห์แถบที่อยู่โดยใช้ตัวควบคุมนั้นถือเป็นฟังก์ชันที่ไม่จำเป็น เนื้อหาของ .htaccess ในขั้นตอนนี้คือ:
Rewrite Engine เปิดอยู่ ฐานการเขียนซ้ำ / RewriteCond %(REQUEST_FILENAME) !-d RewriteCond %(REQUEST_FILENAME) !-f #ไฟล์ต้องห้าม RewriteRule .htaccess - [F] RewriteRule template.php - [F] # mod_rewrite กฎ RewriteRule page/(+)([\/](0,1))\.htm$ index.php?option=page&alias=$1 [L] ในอนาคต เราจะเพิ่มกฎสำหรับองค์ประกอบการค้นหา แค็ตตาล็อก บล็อกบทความ ฯลฯ มีจุดเดียวคือการแปลงลิงก์เช่น "mysite.com/index.php?option=pages&alias=about" เป็นลิงก์เช่น "mysite.com/pages/about.htm" ซึ่งดูดีทีเดียว ในการพัฒนา พยายามหลีกเลี่ยงอาร์เรย์ $_GET ด้วยเหตุผลด้านความปลอดภัย และอย่าพึ่งพาอาร์เรย์นั้น ขอแนะนำให้จัดเก็บเฉพาะพารามิเตอร์สำหรับตัวควบคุมหลัก (ตัวแปร $option) และสำหรับส่วนประกอบ (ตัวแปร $alias) ในนั้น นอกจากนี้ในแต่ละโฟลเดอร์ของไซต์ "ในกรณี" ให้สร้างไฟล์ index.html ที่ว่างเปล่าซึ่งจำเป็นเพื่อไม่ให้มีสิ่งใดปรากฏขึ้นเมื่อเข้าถึงไดเร็กทอรีผ่านแถบที่อยู่ แท็ก: php, mysql, เอ็นจิ้นไซต์, คอนโทรลเลอร์, การสร้างไซต์, mvc
2017-01-10
สร้างเว็บไซต์แบบไดนามิกด้วย php
สวัสดีผู้เยี่ยมชมที่รัก!
วันนี้จากหน้าหลักโดยใช้ภาษาการเขียนโปรแกรม PHP เราจะสร้างหน้าไดนามิกซึ่งต่อมาจะถูกสร้างขึ้นบนเซิร์ฟเวอร์ตามคำขอของผู้ใช้แต่ละคน
ดังนั้น โดยการเปลี่ยนโครงสร้างของไซต์และเติมหน้าการเปลี่ยนแปลงที่คล้ายกัน เราจะได้รับไซต์แบบไดนามิก ซึ่งจะทำให้การสนับสนุนด้านเทคนิคและการพัฒนาง่ายขึ้นมากในอนาคตเมื่อเทียบกับเวอร์ชันคงที่
- ทำไมคุณต้องมีเว็บไซต์แบบไดนามิก
- วิธีแปลงไซต์คงที่เป็นไดนามิก
- เราสร้างบล็อกของไซต์แบบไดนามิก
- การแปลงหน้าเว็บจากสแตติกเป็นไดนามิก
- ไฟล์ต้นฉบับของไซต์
ทำไมคุณต้องมีเว็บไซต์แบบไดนามิก
เหตุใดคุณจึงต้องมีไซต์ไดนามิกได้กล่าวถึงในตอนต้นของคำแนะนำทีละขั้นตอนในบทความ การติดตั้งเว็บเซิร์ฟเวอร์ Denwer ในเครื่อง ซึ่งอธิบายถึงความจำเป็นในการติดตั้งเว็บเซิร์ฟเวอร์ในเครื่อง ดังนั้น เราสามารถย้อนกลับและรีเฟรชคำถามนี้ได้
นอกจากนี้ หากคุณต้องการพิจารณาข้อดีข้อเสียของไซต์แบบสแตติกและไดนามิกเพิ่มเติม คุณสามารถแนะนำให้คุณทำความคุ้นเคยกับหน้าของไดเร็กทอรีออนไลน์ "Puzzleweb.ru" ที่มีส่วนประเภทไซต์ ซึ่งมีคำอธิบายค่อนข้างกระชับ แต่ในขณะเดียวกันก็มีตัวเลือกไซต์ที่แตกต่างกันอย่างชัดเจน
ภาพหน้าจอ 12
สำหรับสิ่งนี้ เราสามารถเพิ่มได้เฉพาะเพื่อให้ได้รับทรัพยากรทางอินเทอร์เน็ตที่เต็มเปี่ยมอย่างแท้จริง เป็นไปไม่ได้ที่จะข้ามขั้นตอนนี้และคงตัวเลือกของไซต์แบบสแตติกไว้
ดังนั้น เราจะไม่เจาะลึกถึงการอภิปรายเชิงทฤษฎีเกี่ยวกับความจำเป็นในการสร้างไซต์แบบไดนามิกอีกต่อไป แต่เราจะพิจารณาต่อไปว่าเราจะทำอย่างไร
วิธีแปลงไซต์คงที่เป็นไดนามิก
อย่างที่คุณทราบ ความแตกต่างพื้นฐานระหว่างไซต์แบบไดนามิกและไซต์แบบคงที่คือในไซต์แบบคงที่ หน้าเว็บสำเร็จรูปจะอยู่บนเซิร์ฟเวอร์และรอคิวเพื่อส่งไปยังเบราว์เซอร์ของผู้ใช้ ในเวลาเดียวกัน หากหน้าต่างๆ มีความแตกต่างแม้เพียงเล็กน้อย สมมติว่าความแตกต่างนั้นอยู่ในวลีเดียวหรือแม้แต่ในคำเดียว ก็จะยังคงเป็นหน้าที่แยกจากกัน
ในเวอร์ชันไดนามิก การก่อตัวของเพจจะเกิดขึ้นบนเซิร์ฟเวอร์ตามคำขอของผู้ใช้แต่ละคน ขึ้นอยู่กับข้อมูลที่ร้องขอ
ด้วยวิธีง่ายๆ สามารถเปรียบเทียบได้กับคอนสตรัคเตอร์ ซึ่งสามารถสร้างรูปทรงต่างๆ จำนวนมากจากองค์ประกอบจำนวนจำกัด ในเวลาเดียวกัน หากคุณทำการเปลี่ยนแปลงใดๆ กับองค์ประกอบใดองค์ประกอบหนึ่ง การเปลี่ยนแปลงนั้นจะมีผลในโครงสร้างทั้งหมดที่รวมองค์ประกอบนี้ไว้ด้วย
จากนี้ เราจะทำให้หน้าหลักที่เราสร้างขึ้นดูเหมือนคอนสตรัคเตอร์ที่ประกอบด้วยองค์ประกอบบางอย่าง (ในกรณีของเรา สิ่งเหล่านี้จะเป็นไฟล์) ซึ่งหน้าเว็บจะถูกรวบรวมในภายหลังตามคำขอของผู้ใช้
เพื่ออธิบายขั้นตอนที่เราจะดำเนินการ เราจะใช้โค้ด HTML ของเฟรมหน้าหลัก ซึ่งได้รับจากขั้นตอนหนึ่งของการสร้างไซต์ในบทความ
-
-
"utf-8"
>
ชื่อหน้า
"คำอธิบาย"เนื้อหา = "คำอธิบายสั้น ๆ ของเนื้อหาหน้า"
>
-
-
"เครื่องห่อ"
>
เนื้อหาหลัก
-
-
-
ดังที่คุณเห็นจากโค้ด HTML คอนเทนเนอร์ ออกแบบมาเพื่อรองรับส่วนที่มองเห็นได้ของหน้าเว็บ ประกอบด้วยบล็อกหลักดังต่อไปนี้:
- หมวก;
- โรเตเตอร์;
- เนื้อหาหลัก;
- แถบด้านข้าง;
- ชั้นใต้ดิน.
ในกรณีนี้ คุณต้องใส่ใจกับข้อเท็จจริงที่ว่าสี่ในห้าบล็อกเป็นเรื่องปกติ และบล็อก "เนื้อหาหลัก" เพียงบล็อกเดียวจะแตกต่างกันสำหรับแต่ละหน้า
ในการรับองค์ประกอบของไซต์ไดนามิก เราจะแยกเนื้อหาจากบล็อกเหล่านี้ออกเป็นไฟล์แยกต่างหาก ซึ่งเราจะรวมในภายหลังเมื่อรวบรวมหน้าเว็บต่างๆ ตามคำขอของผู้ใช้
ตอนนี้ในขั้นตอนนี้จะมีไฟล์เหล่านี้เพียงห้าไฟล์เท่านั้น แต่ในอนาคต เมื่อเพิ่มหน้าหรือฟังก์ชันเพิ่มเติมในไซต์ ไฟล์ใหม่จะถูกเชื่อมต่อ และอื่นๆ ตามความจำเป็น
การสร้างโครงสร้างเว็บไซต์ดังกล่าวจะช่วยให้ในอนาคตไม่มีส่วนร่วมในงานประจำของการเปลี่ยนรหัส HTML ของทุกหน้าในกรณีที่มีการแทนที่หรือเสริมส่วนใดส่วนหนึ่งที่ใช้ร่วมกัน ในกรณีเช่นนี้ การเปลี่ยนแปลงเฉพาะไฟล์ใดไฟล์หนึ่งก็เพียงพอแล้ว ซึ่งจะทำให้ขั้นตอนการเปลี่ยนทั้งหมดเสร็จสมบูรณ์ อย่างที่คุณเห็นมีข้อได้เปรียบ
แต่เพื่อให้เราทำเช่นนี้ได้ เราต้องการภาษา PHP ซึ่งหน้าเว็บสามารถเข้าถึงบล็อกที่จัดสรรเหล่านี้และถ่ายโอนเนื้อหาไปยังตัวเองได้
ถ้าใครยังไม่ชินกับภาษา PHP แนะนำให้มาทำความรู้จักให้ดีกว่านี้ เพราะ PHP เป็นหนึ่งในเครื่องมือพัฒนาเว็บไซต์ที่สำคัญที่สุด ซึ่งสามารถทำได้โดยใช้เอกสารอ้างอิงประเภทต่างๆ ซึ่งสามารถพบได้ในปริมาณมากใน Runet
เป็นตัวเลือก คู่มือที่กล่าวถึงซ้ำๆ "Puzzleweb.ru" ซึ่งส่วนหนึ่งอุทิศให้กับหัวข้อของ PHP สำหรับการศึกษา PHP ในเชิงลึกยิ่งขึ้น คุณสามารถใช้หนังสืออ้างอิงพิเศษที่จัดทำขึ้นโดยเฉพาะสำหรับภาษานี้ ซึ่งโพสต์บนเว็บไซต์ "php.ru" ใช้ลิงก์ "https://php.ru/manual/control-structures.intro.html" เพื่อไปที่หน้า "บทนำ" ซึ่งคุณสามารถเลือกส่วนใดก็ได้ของคู่มือที่คุณสนใจได้อย่างง่ายดาย
แต่เพื่อสร้างไซต์ไดนามิกในขณะนี้และให้ความสามารถในการเชื่อมต่อไฟล์กับหน้า HTML การใช้คำสั่งเพียงภาษาเดียวก็เพียงพอแล้ว (ใน PHP สคริปต์ใดๆ จะประกอบด้วยลำดับของคำสั่ง) นี่อาจเป็นหนึ่งในสี่ตัวเลือกที่เป็นไปได้สำหรับคำแนะนำในการเชื่อมต่อไฟล์:
- รวม;
- จำเป็นต้อง;
- include_once;
- ต้องการ_ครั้งเดียว
มันไม่มีเหตุผลที่จะอธิบายคุณสมบัติของพวกเขาที่นี่ เนื่องจากมีการอธิบายโดยละเอียดในหนังสืออ้างอิง ตัวอย่างเช่น การใช้ลิงก์ "http://www.puzzleweb.ru/php/26_inc_files.php" คุณจะเข้าใจได้ดี
เราจะใช้คำสั่ง "require_once" เมื่อสร้างเว็บไซต์ ฉันมักจะใช้ตัวเลือกนี้ สะดวกที่สุดสำหรับฉัน
ตอนนี้เราเข้าใจแล้วว่าเรากำลังจะทำอะไรต่อไปเรามาดำเนินการจริงกัน
เราสร้างบล็อกของไซต์แบบไดนามิก
ในการสร้างบล็อกที่จะเข้าร่วมในการประกอบหน้าเว็บ ก่อนอื่นคุณต้องสร้างบล็อกเหล่านั้น ซึ่งทำได้ในโปรแกรมแก้ไขข้อความ Notepad++ ในลักษณะเดียวกับที่เราสร้างไฟล์ไซต์แรก "index.html" ในบทความ สร้างหน้าเว็บและโฮสต์บนเว็บเซิร์ฟเวอร์ภายในเครื่อง. ในกรณีนี้ควรระบุส่วนขยายเท่านั้นไม่ใช่ "html" แต่เป็น "php" ในขณะเดียวกันก็จำเป็นต้องให้ความสนใจกับการเข้ารหัสเพื่อหลีกเลี่ยงการปรากฏของอักขระที่เข้าใจยากประเภทต่างๆ ในหน้าในอนาคต
ไฟล์จะถูกสร้างขึ้นในโฟลเดอร์ "บล็อก" ที่สร้างขึ้นใหม่แยกต่างหาก สำหรับไฟล์ที่ใช้ร่วมกันในทุกหน้า เราจะกำหนดชื่อตามชื่อของบล็อกที่เกี่ยวข้อง และสำหรับบล็อก "หลัก" เราจะระบุชื่อเฉพาะสำหรับแต่ละหน้าของไซต์
ดังนั้น สำหรับหน้าหลัก เราจะเชื่อมต่อไฟล์ชื่อ "block_glavnaya" กับบล็อก "หลัก" สำหรับส่วนที่เหลือ: "ส่วนหัว" "ส่วน" "ข้าง" และ "ส่วนท้าย"
เมื่อสร้างไฟล์ คุณยังสามารถคำนึงด้วยว่าเพื่อให้ขั้นตอนนี้ง่ายขึ้น คุณสามารถคัดลอกโดยใช้เมนู "ไฟล์" โดยระบุชื่อไฟล์ใหม่เมื่อบันทึก "บันทึกเป็น"
โดยทั่วไป การสร้างไฟล์เป็นขั้นตอนมาตรฐาน ดังนั้นจึงไม่น่าจะมีปัญหาใดๆ ในท้ายที่สุดควรมีลักษณะเช่นนี้
จากนั้นเราคัดลอกเนื้อหาของแต่ละบล็อกและถ่ายโอนไปยังไฟล์ที่เหมาะสม เรามาดูรายละเอียดเพิ่มเติมโดยใช้ตัวอย่าง "header.php"
1. เปิดไฟล์ "index.html" ในโปรแกรมแก้ไข Notepad++ เลือกพื้นที่ที่ต้องการของบล็อก "ส่วนหัว" แล้วกดปุ่มเมาส์ขวาและซ้ายสลับกันเพื่อคัดลอกไปยังคลิปบอร์ด
ควรสังเกตว่าที่นี่เราคัดลอกเนื้อหาทั้งหมดของบล็อกยกเว้นเมนู นี่เป็นเพราะเพื่อแสดงปุ่มเมนูที่ใช้งานอยู่ในแอตทริบิวต์แท็ก - จำเป็นสำหรับแต่ละหน้าในการกำหนดค่าให้กับคลาสคลาส "กิจกรรม". เช่นเดียวกับส่วนที่คล้ายกันในบล็อก "ส่วนท้าย"
ในอนาคตเราจะย้ายส่วนย่อยของเมนูเหล่านี้ในบล็อก "ส่วนหัว" และ "ส่วนท้าย" เป็นไฟล์แยกกัน แต่ตอนนี้เราจะไม่ทำให้ซับซ้อนและทิ้งไว้ในที่เดียวกัน
วิธีเลือกและคัดลอกส่วนของบล็อก "ส่วนหัว" ไปยังคลิปบอร์ดจะแสดงอยู่ในภาพหน้าจอด้านล่าง
3. และสุดท้าย ในการเลื่อนเนื้อหาของไฟล์ใน Notepad ++ ไปทางซ้าย คุณต้องกด "Tab" หลาย ๆ ครั้งในขณะที่กดปุ่ม "Shift" เป็นผลให้เราได้รับไฟล์ "header.php" ที่สร้างขึ้นในรูปแบบต่อไปนี้
เราจะทำเช่นเดียวกันกับไฟล์อื่นๆ ภาพหน้าจอด้านล่างแสดงให้เห็นว่าเนื้อหาจะมีลักษณะอย่างไรเมื่อการดำเนินการที่จำเป็นทั้งหมดเสร็จสิ้น
รูปที่ 6 ไฟล์ "section.php"
รูปที่ 7 ไฟล์ "block_glavnaya.php"
รูปที่ 8 ไฟล์ "aside.php"
รูปที่ 9 ไฟล์ "footer.php"
ดังนั้นเราจึงได้รับไฟล์ทั้งหมดสำหรับสร้างไดนามิกเพจ และตอนนี้เราสามารถไปที่โค้ด HTML ของเพจได้โดยตรง
การแปลงหน้าเว็บจากสแตติกเป็นไดนามิก
เพื่อให้แน่ใจว่าหน้าหลักของเราโหลดไฟล์ที่สร้างไว้ในส่วนก่อนหน้า ก่อนอื่นคุณต้องเปลี่ยนนามสกุลของไฟล์ "index" จาก "html" เป็น "php" จากนั้นเปิดใหม่อีกครั้งในโปรแกรมแก้ไข Notepad++ และทำให้ การเปลี่ยนแปลงต่อไปนี้:
- ลบเนื้อหาของบล็อกที่เคยถ่ายโอนไปยังไฟล์ที่สร้างขึ้นใหม่
- เขียนคำสั่ง "require_once" ใน PHP ไปยังพื้นที่ว่าง เพื่อระบุพาธไปยังไฟล์ที่เกี่ยวข้อง
- ในแท็กเมนู
- ซึ่งระบุพาธไปยังเพจ สำหรับเพจหลัก ให้เปลี่ยนนามสกุลจาก "html" เป็น "php" และอื่นๆ ให้ระบุชื่อเพจที่สร้างขึ้นใหม่
- ระบุ "บ้าน" ในชื่อเรื่อง
หลังจากดำเนินการเหล่านี้แล้ว หน้าหลักของเราควรมีลักษณะดังนี้
จากภาพหน้าจอด้านบน คุณจะเห็นว่าคำสั่ง PHP ทั้งหมดถูกเน้นด้วยแท็กเปิด. สัญลักษณ์นี้ใช้เพื่อระบุว่าเมื่อใดควรเริ่มและหยุดการประมวลผลโค้ดที่เขียนด้วย PHP ดังนั้นในอนาคต รหัส PHP ทั้งหมดจะถูกแยกตามการกำหนดนี้
คุณยังสามารถให้ความสนใจว่าชื่อของหน้าใหม่นั้นถูกสร้างขึ้นโดยคำนึงถึงวัตถุประสงค์ของพวกเขา ดังนั้นโครงสร้างและรหัสของไซต์จึงได้รับการรับรู้ที่ดีขึ้น
สิ่งนี้ทำให้การเปลี่ยนแปลงทั้งหมดของเราเสร็จสมบูรณ์ และตอนนี้ หากเราเปิดหน้าหลักอีกครั้งในเบราว์เซอร์ เราก็ไม่ควรเห็นการเปลี่ยนแปลงใดๆ กับไซต์เวอร์ชันก่อนหน้า มันควรจะเปิดในลักษณะเดียวกับเมื่อก่อน แต่ถ้าผลลัพธ์มีบางอย่างผิดปกติ หมายความว่าคุณต้องมองหาข้อผิดพลาดที่เกิดขึ้นในการดำเนินการข้างต้น
รีเฟรชเบราว์เซอร์ตอนนี้และลองเปิดหน้าหลัก
อย่างที่คุณเห็น ในกรณีของเรา หน้าหลักเปิดขึ้นโดยไม่มีปัญหาใดๆ แต่ไม่เหมือนกับงานก่อนหน้าของไซต์ หน้าเว็บได้รับแบบฟอร์มนี้อันเป็นผลมาจากการก่อตัวบนเซิร์ฟเวอร์เมื่อประมวลผลคำขอ
ดังนั้นตอนนี้เว็บไซต์ของเราจึงมีไดนามิกเพจแรก และหลังจากเพิ่มหน้าอื่นๆ ที่คล้ายกันเข้าไปแล้ว ไซต์นี้สามารถเรียกไดนามิกได้อย่างถูกต้องพร้อมกับผลที่ตามมาทั้งหมด เช่น มันจะมีข้อได้เปรียบทั้งหมดที่มีอยู่ในไซต์ไดนามิก และเราจะสามารถตรวจสอบสิ่งนี้ได้เมื่อเราเติมเต็มด้วยฟังก์ชันประเภทต่างๆ ในอนาคต
ด้วยวิธีนี้ เราจะดำเนินการขั้นตอนที่สำคัญของการพัฒนาเว็บไซต์ให้เสร็จสิ้น และในบทความถัดไป เราจะสร้างหน้าไดนามิกใหม่สำหรับเว็บไซต์นั้น ซอร์สโค้ดของไซต์เวอร์ชันล่าสุดสามารถดาวน์โหลดได้ตามปกติจากลิงก์ที่ส่วนท้ายของบทความ
ไฟล์ต้นฉบับของไซต์
ไฟล์ต้นฉบับของไซต์พร้อมการอัปเดตที่ทำในบทความนี้สามารถดาวน์โหลดได้จากไฟล์แนบ วัสดุเพิ่มเติม.
| | | |