จุดเริ่มต้นสู่ Joomla! ส่วนประกอบจะคล้ายกันสำหรับส่วนประกอบส่วนใหญ่ สำหรับตัวอย่างนี้ เราจะใช้หนึ่งในองค์ประกอบหลักของ Joomla - เว็บลิงค์ ไฟล์แรกที่จะดำเนินการในส่วนหน้า: …/components/com_weblinks/weblinks.php
อันดับแรก เราจะเห็นการตรวจสอบความปลอดภัยที่ออกแบบมาเพื่อให้แน่ใจว่าไม่มีใครสามารถโทรหาเพจนี้ได้โดยตรง นี่คือมาตรฐานที่ควรใช้ในไฟล์ php ทั้งหมดของคุณ (แม้ว่าจะมีข้อยกเว้นบางประการ):
เราตรวจสอบสตริงการสืบค้นเพื่อดูว่ามีการส่งชื่อคอนโทรลเลอร์เฉพาะหรือไม่ หากเป็นเช่นนั้น เราต้องแน่ใจว่าเราสามารถโหลดไฟล์ที่ต้องการในไดเร็กทอรีคอนโทรลเลอร์ได้:
// จำเป็นต้องมีคอนโทรลเลอร์เฉพาะหากมีการร้องขอ if ($controller = JRequest:: getWord("controller" ) ) ( $path = JPATH_COMPONENT. DS. "controllers" . DS. $controller . ".php" ; if (file_exists ($path) ) ) ( need_once $path ; ) อื่น ๆ ( $controller = "" ; ) ) |
ตอนนี้เราสร้างอินสแตนซ์คลาสคอนโทรลเลอร์ของเราโดยใช้ชื่อที่เรากำหนดไว้ด้านบน:
ทันทีที่งานเสร็จสิ้น เราจะดำเนินการเปลี่ยนเส้นทาง หากจำเป็น:
// เปลี่ยนเส้นทางหากตั้งค่าโดยคอนโทรลเลอร์ $controller -> เปลี่ยนเส้นทาง () ; |
ตัวควบคุมทั่วไป (เฉพาะ) สำหรับส่วนประกอบลิงก์อยู่ที่นี่: .../components/com_weblinks/controller.php
คลาสทั้งหมดนี้กำหนดวิธีการแสดงผล ซึ่งเป็นวิธีการเริ่มต้นที่ใช้ เว้นแต่ผู้ใช้จะระบุงานอื่น
กำหนด ("_JEXEC" ) หรือ die ( "การเข้าถึงแบบจำกัด" ) ; |
นำเข้า("joomla.application.component.controller" );
/** * Weblinks Component Controller * * @package Joomla * @subpackage Weblinks * @since 1.5 */ class WeblinksController ขยาย JController ( /** * วิธีการแสดงมุมมองเว็บลิงก์ * * @access public * @since 1.5 */ function display () ( // ตั้งค่ามุมมองเริ่มต้นหากไม่มีถ้า ( ! JRequest:: getCmd ( "view") ) ( JRequest:: setVar ( "view" , "categories" ) ; ) // อัปเดตจำนวนการเข้าชมสำหรับเว็บลิงก์ if (JRequest:: getCmd ("view" ) == "weblink" ) ( $model =& $this -> getModel ("weblink" ) ; $model -> hit () ; ) // ดูตรรกะแคช -- แบบง่าย ... เราเข้าสู่ระบบแล้วหรือยัง? $user = & JFactory::getUser() ; $view = JRequest::getVar("view"); " , "INT" ; if ($user -> get ("id" ) ||. ($view == "category" && $viewcache == 0 ) ) ( parent:: display (false) ; ) else ( parent :: display (true) ; ) )
ในวิธีนี้ เราตั้งค่ามุมมองเริ่มต้นให้แสดงหมวดหมู่ เว้นแต่จะส่งผ่านมุมมองอื่นเป็นพารามิเตอร์สตริงการสืบค้น หากมุมมองที่ต้องการคือเว็บลิงก์ เราจะเพิ่มตัวนับการดูลิงก์ จากนั้นเราตั้งค่าของตัวแปรมุมมองและเรียกใช้เมธอด diplay ของคลาส JController หลักของเรา
ควรให้ความสนใจเป็นพิเศษกับการเรียกเมธอด getModel มันโหลดโมเดลที่จำเป็นสำหรับส่วนประกอบ ในตัวอย่างนี้ เมธอดนี้จะโหลดโมเดลเว็บลิงก์ที่นี่: .../components/com_weblinks/models/weblink.php
ต่อไปเราจะเปิดคลาสมุมมอง
// ตรวจสอบให้แน่ใจว่าไฟล์นี้รวมอยู่ใน Joomla!< count ($categories ) ; $i ++ ) { $category =& $categories [ $i ] ; $category ->กำหนด("_JEXEC") หรือ die ("จำกัดการเข้าถึง"); |
ขอย้ำอีกครั้งว่านี่เป็นคลาสที่ง่ายมากพร้อมวิธีแสดงผลวิธีเดียว ตรรกะส่วนใหญ่ที่นี่เฉพาะกับส่วนประกอบของลิงก์ แต่ถ้าคุณมองอย่างใกล้ชิด คุณจะพบฟังก์ชันที่ใช้ในคลาสมุมมองส่วนประกอบส่วนใหญ่ ในตอนท้ายของวิธีการแสดง คลาสนี้จะเรียกวิธีการแสดงผลหลัก (JView) โดยส่งชื่อของเทมเพลตที่จะแสดง หากไม่ส่งชื่อของเทมเพลตการแสดงผล ระบบจะใช้เทมเพลต "เริ่มต้น"
และสุดท้าย เราเปิดคลาสเทมเพลต
เราตกลงกันว่าจะไม่ได้ส่งชื่อเทมเพลตเฉพาะ ดังนั้นจะใช้เทมเพลตเริ่มต้น ในกรณีนี้ ไฟล์ต่อไปนี้จะได้รับการพิจารณา: .../components/com_weblinks/views/categories/tmpl/default.php
-> หลบหนี ($ นี้ -> พารามิเตอร์ -> รับ ("page_title" ) ) ;
- ( )
-
ตรรกะส่วนใหญ่ที่นี่มีความเฉพาะเจาะจงกับส่วนประกอบที่กำลังดำเนินการ จากโค้ดก็ชัดเจนว่าไฟล์นี้มี HTML ทั้งหมดที่ผสมกับ PHP - นี่คือคุณสมบัติและวัตถุประสงค์ไฟล์อื่นๆ ที่ใช้ในส่วนประกอบ
- ไฟล์ประเภทอื่นๆ หลายประเภทที่คุณอาจพบในส่วนประกอบ:
- Helpers - ส่วนประกอบมักใช้ไฟล์ helper.php หรือไดเร็กทอรี helpers ที่มีไฟล์จำนวนมาก โดยทั่วไปไฟล์เหล่านี้จะมีเฉพาะฟังก์ชันการทำงานทั่วไปสำหรับส่วนประกอบเท่านั้น
- ดูเหมือนว่าเนื้อหาจะเป็นโฟลเดอร์ที่รับทั้งหมดสำหรับไฟล์อื่นๆ ที่รวมอยู่ในคอมโพเนนต์
- router.php - ไฟล์นี้ถูกใช้เมื่อเปิดใช้งานการตั้งค่า SEF URL เพื่อแปล URL ในทั้งสองทิศทาง (เป็นไฟล์ที่มนุษย์อ่านได้พร้อมนามแฝงและเป็นมุมมองระบบ Joomla พร้อมพารามิเตอร์)
- ไฟล์ xml - โดยปกติแล้วจะกำหนดพารามิเตอร์และข้อมูลอื่นๆ เกี่ยวกับส่วนประกอบและภาพรวม พวกมันถูกใช้เมื่อสร้างรายการเมนูส่วนประกอบ
- index.html - ควรมีไฟล์ index.html ว่างๆ ไว้ในไดเร็กทอรีทั้งหมดของคุณ นี่เป็นมาตรการรักษาความปลอดภัยแบบพาสซีฟ
css/images/js - โฟลเดอร์ที่มีไฟล์ต่างๆ เพื่อใช้การออกแบบและฟังก์ชันการทำงานในฝั่งไคลเอ็นต์ (ในเบราว์เซอร์)
ฉันยังคงแบ่งปันสคริปต์ไซต์เล็กๆ แต่มีประโยชน์มากกับคุณต่อไป ซึ่งจะช่วยปรับปรุงทัศนคติของเครื่องมือค้นหาที่มีต่อไซต์ของคุณ คราวนี้เราจะพูดถึงการเชื่อมโยงหน้าที่เหมาะสม
Page_address_1; Anchor_1, Anchor_2, Anchor_3,..., Anchor_n Page_address_2; anchor_1, Anchor_1, Anchor_2, Anchor_3, ..., Anchor_n
อย่างที่คุณเห็น สามารถใช้สคริปต์เพิ่มเติมได้โดยใช้ที่อยู่หน้าและจุดยึดสำหรับสคริปต์เหล่านั้นจำนวนเท่าใดก็ได้ ที่อยู่หน้าเขียนโดยไม่มี http://www.site.ru/ เช่น ทันทีจากรูทโดยไม่ต้องสแลชแรก ที่อยู่จะถูกแยกออกจากจุดยึดด้วยเครื่องหมายอัฒภาค และจุดยึดจะถูกคั่นด้วยเครื่องหมายจุลภาค คุณสามารถเขียนที่อยู่แบบเต็มได้ซึ่งสะดวกกว่าสำหรับฉันเป็นการส่วนตัว แต่คุณสามารถเปลี่ยนการกรอกและผลลัพธ์ของผลลัพธ์ได้ด้วยตัวเอง ฉันคิดว่าคุณจะคิดออกเองโดยสัญชาตญาณ
ดังนั้นจึงมีการสร้างฐานข้อมูลของลิงก์และจุดยึดสำหรับพวกเขาด้านล่างฉันจะยกตัวอย่างโค้ด PHP สำหรับการแสดงลิงก์โดยตรงสำหรับการเชื่อมโยงบนเว็บไซต์:
เราวางโค้ดนี้ไว้ที่ใดก็ได้บนเว็บไซต์ ซึ่งจะแสดงลิงก์แบบสุ่ม 5 ลิงก์จากฐานข้อมูลและจุดยึดแบบสุ่ม เป็นการดีกว่าที่จะเจือจางพุกแทนที่จะเขียนเพียง 1 ลงในลิงก์ ด้วยการเชื่อมโยงที่เหมาะสมบนเว็บไซต์ของคุณ คุณจะเห็นปริมาณการเข้าชมที่เพิ่มขึ้นและการปรับปรุงตัวบ่งชี้เว็บไซต์อื่น ๆ ทันที
ฉันหวังว่าจะมีคำถามของคุณในความคิดเห็นในโพสต์นี้
วันที่เผยแพร่: 3 มีนาคม 2014- บทวิจารณ์และความคิดเห็น:
มิทรี:
ขอบคุณสำหรับสคริปต์ ฉันจะนำไปใช้ เป็นไปไม่ได้ที่จะคัดลอกซอร์สโค้ดจากไซต์ แต่จะคัดลอกเป็นส่วนเล็ก ๆ เท่านั้นซึ่งจะสะดวกกว่าอย่างครบถ้วน
คิริลล์:
ขอบคุณสำหรับหมายเหตุเกี่ยวกับการคัดลอก ฉันเพิ่งเห็นมันแล้ว ฉันจะพยายามแก้ไขโดยเร็วที่สุด
อเล็กเซย์ พาฟลอฟ:
เกิดข้อผิดพลาดในบรรทัด $tex = explode(///,$sendlist[$count] คุณต้องมีอัฒภาค ไม่ใช่โคลอน ฉันเปลี่ยนโค้ดเล็กน้อยเพื่อให้ชัดเจนยิ่งขึ้น: