คู่มือเริ่มต้นใช้งานฉบับย่อสำหรับนักพัฒนา OpenCart 1.5.X สำหรับผู้เริ่มต้น
คู่มือนี้เขียนขึ้นสำหรับนักพัฒนาที่คุ้นเคยกับ PHP, OOP และสถาปัตยกรรม MVC อยู่แล้ว
ต่อไปนี้คุณจะเห็นตัวอย่างด้านแคตตาล็อกของรถเข็น ด้านผู้ดูแลระบบจะเหมือนกันในการทำงานยกเว้นมุมมองที่ระบุไว้ในส่วนที่เกี่ยวข้อง
การทำความเข้าใจไลบรารี
$this->library_name
ทั้งหมดของการทำงานห้องสมุดสามารถเข้าถึงได้ผ่านคอนโทรลเลอร์รุ่นและมุมมองการใช้ ทั้งหมดนี้สามารถพบได้ใน/system/library/
โฟลเดอร์ ตัวอย่างเช่นในการเข้าถึงผลิตภัณฑ์ในรถเข็นปัจจุบันคุณจะต้องใช้Cart
ชั้นเรียนซึ่งอยู่ใน/system/library/cart.php
และสามารถเข้าถึงได้โดยใช้$this->cart->getProducts()
สิ่งของที่ใช้กันทั่วไป
customer.php
- หน้าที่ที่เกี่ยวข้องกับลูกค้า
user.php
- ผู้ดูแลระบบฟังก์ชั่นที่เกี่ยวข้องกับผู้ใช้
cart.php
- ฟังก์ชั่นที่เกี่ยวข้องกับรถเข็น
config.php
- โหลดการตั้งค่าทั้งหมดจากสิ่งนี้
url.php
- ฟังก์ชั่นการสร้าง URL
การทำความเข้าใจพารามิเตอร์เส้นทาง
เฟรมเวิร์กของ OpenCart อาศัยroute=aaa/bbb/ccc
พารามิเตอร์ในสตริงการสืบค้นเพื่อให้ทราบว่าต้องโหลดอะไรและเป็นคุณลักษณะที่ช่วยในการค้นหาไฟล์ที่คุณต้องการแก้ไขสำหรับแต่ละเพจ เส้นทางส่วนใหญ่ใช้เฉพาะส่วนaaa/bbb
ที่ควรจะเห็นเป็นสองส่วนอย่างไรก็ตามบางส่วนมีสามส่วนส่วนaaa/bbb/ccc
แรกaaa
โดยทั่วไปเกี่ยวข้องกับโฟลเดอร์ภายในโฟลเดอร์ทั่วไปเช่นคอนโทรลเลอร์หรือโฟลเดอร์เทมเพลต ส่วนที่สองมักเกี่ยวข้องกับชื่อไฟล์โดยไม่มีส่วนเกี่ยวข้อง.php
หรือ.tpl
นามสกุล ส่วนที่สามอธิบายไว้ในหัวข้อ "การทำความเข้าใจคอนโทรลเลอร์" ด้านล่าง
การเข้าใจภาษา
ภาษาจะถูกเก็บไว้ใน/catalog/language/
โฟลเดอร์ในyour-language
โฟลเดอร์ย่อย ภายในนี้ค่าข้อความทั่วไปที่ใช้ในหน้าต่างๆจะถูกเก็บไว้ในyour-language.php
ไฟล์ภายในโฟลเดอร์ดังนั้นสำหรับภาษาอังกฤษทางด้านแค็ตตาล็อกคุณจะพบค่าในรูปแบบcatalog/language/english/english.php
. สำหรับข้อความหน้าเฉพาะคุณจะต้องroute
สำหรับหน้าเว็บ (นี้เป็นกรณีทั่วไป แต่ไม่ได้เสมอที่คุณสามารถระบุไฟล์ภาษาใด ๆ ที่คุณต้องการ) ตัวอย่างเช่นหน้าการค้นหามีเส้นทางproduct/search
และดังนั้นข้อความภาษาที่เฉพาะเจาะจงสำหรับหน้าเว็บที่สามารถพบได้ใน(ชื่อเวปไซด์ของไฟล์และโฟลเดอร์ย่อยตรงกับเส้นทางตามมาด้วยcatalog/language/english/product/search.php
.php
ในการโหลดภาษาในคอนโทรลเลอร์ให้ใช้
$this->language->load('product/search');
จากนั้นคุณสามารถใช้ฟังก์ชันไลบรารีภาษาget
เพื่อดึงข้อความภาษาที่ต้องการเช่น
$some_variable = $this->language->get('heading_title');
ตัวแปรภาษาถูกกำหนดในไฟล์ภาษาโดยใช้ตัวแปรพิเศษ$_
ซึ่งเป็นอาร์เรย์ของคีย์และค่าข้อความ ในของ/catalog/language/english/product/search.php
คุณคุณควรพบสิ่งที่คล้ายกับ
$_['heading_title'] = 'Search';
ค่าในไฟล์ภาษาส่วนกลางenglish/english.php
จะถูกโหลดโดยอัตโนมัติและพร้อมใช้งานโดยไม่ต้องใช้$this->language->load
เมธอด
การทำความเข้าใจคอนโทรลเลอร์
ตัวควบคุมถูกโหลดตามroute
และค่อนข้างตรงไปตรงมาเพื่อทำความเข้าใจ ตัวควบคุมจะอยู่ใน/catalog/controller/
โฟลเดอร์ ต่อจากตัวอย่างสุดท้ายตัวควบคุมสำหรับเพจ Search จะอยู่ใน/product/search.php
โฟลเดอร์นี้ แจ้งให้ทราบอีกครั้งว่าเส้นทางที่ใช้โดย.php
ถูกนำมาใช้
เมื่อเปิดไฟล์คอนโทรลเลอร์คุณจะเห็นชื่อคลาส Pascal Case ที่ขยายController
คลาสเรียกว่าControllerProductSearch
. อีกครั้งนี้เฉพาะสำหรับเส้นทางโดยController
ตามด้วยชื่อโฟลเดอร์ย่อยและชื่อไฟล์โดยไม่มีนามสกุลเป็นตัวพิมพ์ใหญ่ ไม่จำเป็นต้องใช้อักษรตัวพิมพ์ใหญ่ แต่ขอแนะนำให้อ่านง่าย เป็นที่น่าสังเกตว่าชื่อคลาสไม่ได้รับค่าใด ๆ จากโฟลเดอร์ย่อยและชื่อไฟล์นอกเหนือจากตัวอักษรและตัวเลข ขีดล่างจะถูกลบออก
ภายในชั้นเรียนมีวิธีการ วิธีการในคลาสที่ประกาศpublic
นั้นสามารถเข้าถึงได้เพื่อเรียกใช้ผ่านเส้นทาง - private
ไม่ได้ ตามค่าเริ่มต้นด้วยเส้นทางสองส่วนมาตรฐาน ( aaa/bbb
ด้านบน) จะมีindex()
การเรียกวิธีการเริ่มต้น หากใช้ส่วนที่สามของเส้นทาง ( ccc
ด้านบน) วิธีนี้จะถูกเรียกใช้แทน ตัวอย่างเช่นaccount/return/insert
จะโหลด/catalog/controller/account/return.php
ไฟล์และคลาสและพยายามเรียกใช้insert
เมธอด
การทำความเข้าใจโมเดล
โมเดลใน OpenCart พบได้ใน/catalog/model/
โฟลเดอร์และจัดกลุ่มตามฟังก์ชันไม่ใช่เส้นทางดังนั้นคุณจะต้องโหลดในคอนโทรลเลอร์ของคุณผ่าน
$this->load->model('xxx/yyy');
นี้จะโหลดไฟล์ในโฟลเดอร์ย่อยที่เรียกว่าxxx
yyy.php
จากนั้นจะพร้อมใช้งานผ่านวัตถุ
$this->model_xxx_yyy
และเช่นเดียวกับคอนโทรลเลอร์คุณสามารถเรียกใช้public
วิธีการเท่านั้น ตัวอย่างเช่นในการปรับขนาดรูปภาพคุณต้องใช้tool/image
โมเดลและเรียกresize
วิธีการดังต่อไปนี้
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
ทำความเข้าใจการกำหนดตัวแปรในมุมมองจากตัวควบคุม
ในการส่งผ่านค่าไปยังมุมมองจากคอนโทรลเลอร์คุณเพียงแค่กำหนดข้อมูลของคุณให้กับ$this->data
ตัวแปรซึ่งโดยพื้นฐานแล้วคืออาร์เรย์ของคู่คีย์ => ค่า ตัวอย่างเช่น
$this->data['example_var'] = 123;
การเข้าถึงสิ่งนี้ในมุมมองเป็นเรื่องเล็กน้อยที่จะเข้าใจได้ง่ายหากคุณคุ้นเคยกับเมธอดextract ()ซึ่งจะแปลงแต่ละคีย์เป็นตัวแปร ดังนั้นexample_var
คีย์จึงกลายเป็น$example_var
และสามารถเข้าถึงได้ในมุมมอง
ทำความเข้าใจกับธีม
ธีมมีให้สำหรับด้านแคตตาล็อกเท่านั้นและโดยพื้นฐานแล้วจะเป็นโฟลเดอร์ของเทมเพลตสไตล์ชีทและรูปภาพธีม โฟลเดอร์ธีมจะอยู่ใน/catalog/view/theme/
โฟลเดอร์ตามด้วยชื่อธีม ชื่อโฟลเดอร์ไม่มีความสำคัญยกเว้นdefault
โฟลเดอร์
ฝั่งผู้ดูแลระบบใช้/admin/view/template/
(ข้าม/theme/theme-name/
จากเส้นทางเนื่องจากไม่อนุญาตให้ใช้ธีมที่แตกต่างกัน)
ไฟล์เทมเพลตอยู่ในtemplate
โฟลเดอร์ภายในโฟลเดอร์ธีม หากไม่มีเทมเพลตใด ๆ สำหรับธีมที่เลือกในปัจจุบันเทมเพลตของโฟลเดอร์เริ่มต้นจะถูกใช้เป็นทางเลือกแทน ซึ่งหมายความว่าสามารถสร้างธีมได้ด้วยไฟล์จำนวนน้อยมากและยังคงทำงานได้อย่างสมบูรณ์ นอกจากนี้ยังช่วยลดความซ้ำซ้อนของรหัสและปัญหาเมื่อทำการอัพเกรด
การทำความเข้าใจมุมมอง (เทมเพลต)
เช่นเดียวกับภาษาและโมเดลโดยทั่วไปไฟล์ดูจะเกี่ยวข้องกับเส้นทางแม้ว่าจะไม่จำเป็นต้องมีเลยก็ตาม โดยทั่วไปจะพบเทมเพลตในด้านแค็ตตาล็อก/catalog/view/theme/your-theme/template/
เว้นแต่จะไม่มีอยู่ซึ่งในกรณีนี้จะใช้เทมเพลตของธีมเริ่มต้น สำหรับตัวอย่างหน้าการค้นหาของเราด้านบนไฟล์คือproduct/search.tpl
. สำหรับเส้นทางที่มีสามส่วนโดยทั่วไปaaa/bbb_ccc.tpl
แม้ว่าจะไม่มีกฎที่กำหนดไว้อย่างชัดเจนก็ตาม ในผู้ดูแลระบบหน้าเว็บส่วนใหญ่ทำตามนี้มีข้อยกเว้นว่าหน้ารายการรายการเช่นหน้ารายชื่อผลิตภัณฑ์ที่อยู่ในรูปแบบการแก้ไขสินค้าที่อยู่ในcatalog/product_list.tpl
catalog/product_form.tpl
อีกครั้งสิ่งเหล่านี้ไม่ได้กำหนด แต่เป็นมาตรฐานสำหรับรถเข็นเริ่มต้น
ไฟล์เทมเพลตนั้นเป็นเพียงไฟล์ php อื่น แต่มีนามสกุล. tpl และถูกเรียกใช้ในไฟล์คอนโทรลเลอร์ดังนั้นทุกสิ่งที่คุณสามารถเขียนโค้ดในคอนโทรลเลอร์สามารถเรียกใช้ในไฟล์เทมเพลตได้ (แม้ว่าจะไม่แนะนำเว้นแต่อย่างแน่นอน จำเป็น)
ทำความเข้าใจกับวัตถุฐานข้อมูล
คิวรีรันโดยใช้
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX
ตามชื่อที่แนะนำคือค่าคงที่ที่มีคำนำหน้าฐานข้อมูลหากมีอยู่
$result
จะส่งคืนอ็อบเจ็กต์สำหรับSELECT
เคียวรีซึ่งมีคุณสมบัติบางอย่าง
$result->row
มีข้อมูลของแถวแรกหากส่งคืนอย่างน้อยหนึ่งรายการเป็นอาร์เรย์ที่เชื่อมโยงกัน
$result->rows
มีอาร์เรย์ของผลลัพธ์แถวที่เหมาะสำหรับการวนซ้ำโดยใช้ foreach
$result->num_rows
มีจำนวนผลลัพธ์ที่ส่งคืน
นอกจากนี้ยังมีวิธีการพิเศษบางอย่างที่$this->db
วัตถุมี
$this->db->escape()
ใช้mysql_real_escape_string ()กับค่าที่ส่งผ่าน
$this->db->countAffected
ส่งคืนจำนวนแถวที่ได้รับผลกระทบจากUPDATE
แบบสอบถามและอื่น ๆ
$this->db->getLastId()
ส่งคืนรหัสการเพิ่มอัตโนมัติล่าสุดโดยใช้mysql_insert_id ()
การทำความเข้าใจตัวแปรที่สงวนไว้
OpenCart ได้กำหนดไว้ล่วงหน้าตัวแปรเพื่อการใช้งานในสถานที่ของมาตรฐาน$_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_FILES
, $_REQUEST
และ$_SERVER
$_SESSION
ถูกแก้ไขโดยใช้โดย$this->session->data
ที่ข้อมูลเป็นอาร์เรย์ที่เชื่อมโยงซึ่งเลียนแบบ$_SESSION
คนอื่น ๆ ทั้งหมดสามารถเข้าถึงได้โดยใช้$this->request
และได้รับการ "ล้าง" เพื่อให้สอดคล้องกับคำพูดวิเศษที่เปิด / ปิดใช้งานดังนั้น
$_GET
กลายเป็น $this->request->get
$_POST
กลายเป็น $this->request->post
$_COOKIE
กลายเป็น $this->request->cookie
$_FILES
กลายเป็น $this->request->files
$_REQUEST
กลายเป็น $this->request->request
$_SERVER
กลายเป็น $this->request->server
สรุป
แม้ว่าข้างต้นจะไม่ใช่คู่มือกันกระสุนสำหรับนักพัฒนา แต่หวังว่าจะเป็นจุดเริ่มต้นที่ดีสำหรับผู้ที่เริ่มต้นใช้งาน