Hướng dẫn bắt đầu nhanh dành cho nhà phát triển OpenCart 1.5.X dành cho người mới bắt đầu
Hướng dẫn này được viết cho các nhà phát triển đã quen thuộc với PHP, OOP và kiến trúc MVC
Trong phần sau, bạn sẽ thấy các ví dụ cho phía danh mục của giỏ hàng. Phía quản trị viên có chức năng giống hệt nhau, ngoại trừ các chế độ xem được ghi chú trong phần liên quan
Hiểu thư viện
Tất cả các chức năng của thư viện đều có thể truy cập được thông qua Bộ điều khiển, Mô hình và Chế độ xem bằng cách sử dụng $this->library_name
. Tất cả những thứ này có thể được tìm thấy trong /system/library/
thư mục. Ví dụ: để truy cập các sản phẩm của giỏ hàng hiện tại, bạn sẽ cần sử dụng Cart
lớp, nằm trong/system/library/cart.php
và có thể được truy cập bằng$this->cart->getProducts()
Các mặt hàng thường dùng
customer.php
- Các chức năng liên quan đến khách hàng
user.php
- Các chức năng liên quan đến người dùng quản trị
cart.php
- Các chức năng liên quan đến giỏ hàng
config.php
- Tất cả cài đặt được tải từ cái này
url.php
- Chức năng tạo URL
Hiểu thông số tuyến đường
Khung của OpenCart dựa vào route=aaa/bbb/ccc
tham số chuỗi truy vấn trong để biết nội dung cần tải và là tính năng nền tảng để tìm các tệp bạn cần chỉnh sửa cho mỗi trang. Hầu hết các tuyến đường thực sự chỉ sử dụng phần aaa/bbb
nên được xem như hai phần, tuy nhiên một số có ba phần aaa/bbb/ccc
Phần đầu tiên aaa
thường liên quan đến thư mục trong một thư mục chung như bộ điều khiển hoặc các thư mục mẫu. Phần thứ hai thường liên quan đến tên tệp, không có liên quan .php
hoặc .tpl
phần mở rộng. Phần thứ ba được giải thích trong phần "Hiểu bộ điều khiển" bên dưới
Hiểu ngôn ngữ
Ngôn ngữ được lưu trữ trong /catalog/language/
thư mục trong your-language
thư mục con. Trong phạm vi này, các giá trị văn bản chung được sử dụng trên các trang khác nhau được lưu trữ trong your-language.php
tệp bên trong thư mục, vì vậy đối với ngôn ngữ tiếng Anh ở phía danh mục, bạn sẽ tìm thấy các giá trị trong đó catalog/language/english/english.php
. Đối với văn bản trang cụ thể, bạn sẽ cần nội dung route
cho trang (Trường hợp này thường xảy ra, nhưng không phải lúc nào bạn cũng có thể chỉ định bất kỳ tệp ngôn ngữ nào bạn thích). Ví dụ: trang tìm kiếm có tuyến đường product/search
và do đó có thể tìm thấy văn bản ngôn ngữ cụ thể cho trang đó catalog/language/english/product/search.php
(Lưu ý rằng tên tệp và thư mục con khớp với tuyến đường theo sau .php
.
Để tải ngôn ngữ trong bộ điều khiển, bạn sử dụng
$this->language->load('product/search');
Sau đó, bạn có thể sử dụng chức năng thư viện ngôn ngữ get
để truy xuất các văn bản ngôn ngữ cụ thể, chẳng hạn như
$some_variable = $this->language->get('heading_title');
Các biến ngôn ngữ được gán trong tệp ngôn ngữ bằng cách sử dụng một biến đặc biệt $_
là một mảng các khóa và giá trị văn bản. Trong bạn, /catalog/language/english/product/search.php
bạn sẽ tìm thấy một cái gì đó tương tự như
$_['heading_title'] = 'Search';
Các giá trị trong tệp ngôn ngữ chung english/english.php
được tải tự động và có sẵn để sử dụng mà không cần $this->language->load
phương thức
Hiểu bộ điều khiển
Bộ điều khiển được tải dựa trên route
và khá dễ hiểu. Bộ điều khiển được đặt trong /catalog/controller/
thư mục. Tiếp tục từ ví dụ cuối cùng, Bộ điều khiển cho trang Tìm kiếm /product/search.php
nằm trong thư mục này. Lưu ý lại rằng tuyến đường tiếp theo là.php
được sử dụng.
Mở tệp điều khiển, bạn sẽ thấy một tên lớp Pascal Case mở rộng Controller
lớp, được gọi ControllerProductSearch
. Điều này một lần nữa dành riêng cho tuyến đường, vớiController
theo sau là tên thư mục con và tên tệp mà không viết hoa phần mở rộng. Viết hoa không thực sự bắt buộc, nhưng nó được khuyến khích để dễ đọc. Cần lưu ý rằng tên lớp không nhận bất kỳ giá trị nào từ thư mục con và tên tệp ngoài các chữ cái và số. Dấu gạch dưới bị xóa.
Trong lớp là các phương thức. Các phương thức trong lớp được khai báo public
là có thể truy cập được để chạy qua tuyến - private
thì không. Theo mặc định, với một lộ trình hai phần tiêu chuẩn ( aaa/bbb
ở trên), một index()
phương thức mặc định được gọi. Nếu phần thứ ba của một tuyến đường ( ccc
ở trên) được sử dụng, phương thức này sẽ được chạy thay thế. Ví dụ: account/return/insert
sẽ tải /catalog/controller/account/return.php
tệp và lớp và cố gắng gọi insert
phương thức
Hiểu mô hình
Các mô hình trong OpenCart được tìm thấy trong /catalog/model/
thư mục và được nhóm lại dựa trên chức năng, không phải theo tuyến, và do đó bạn sẽ cần tải chúng vào bộ điều khiển của mình thông qua
$this->load->model('xxx/yyy');
Thao tác này sẽ tải tệp trong thư mục con xxx
được gọi yyy.php
. Sau đó, nó có sẵn để sử dụng thông qua đối tượng
$this->model_xxx_yyy
và như với bộ điều khiển, bạn chỉ có thể gọi các public
phương thức của nó . Ví dụ, để thay đổi kích thước một hình ảnh, bạn sẽ sử dụng tool/image
mô hình và gọi resize
phương thức của nó như sau
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Hiểu phép gán biến trong các khung nhìn từ bộ điều khiển
Để chuyển các giá trị đến khung nhìn từ bộ điều khiển, bạn chỉ cần gán dữ liệu của mình cho $this->data
biến, về cơ bản là một mảng các cặp khóa => giá trị. Như một ví dụ
$this->data['example_var'] = 123;
Việc truy cập điều này trong một dạng xem sẽ dễ hiểu nếu bạn đã quen thuộc với phương thức extract () để chuyển đổi mỗi khóa thành một biến. Vì vậy, example_var
khóa trở thành $example_var
và có thể được truy cập như vậy trong khung nhìn.
Hiểu chủ đề
Chủ đề chỉ có sẵn cho phía danh mục và về cơ bản là một thư mục gồm các mẫu, bảng định kiểu và hình ảnh chủ đề. Thư mục chủ đề được đặt trong /catalog/view/theme/
thư mục theo sau là tên chủ đề. Tên thư mục không quan trọng ngoại trừ default
thư mục
Phía quản trị viên sử dụng /admin/view/template/
(bỏ qua /theme/theme-name/
đường dẫn vì nó không cho phép các chủ đề khác nhau)
Tệp mẫu nằm trong một template
thư mục trong thư mục chủ đề. Nếu bất kỳ mẫu nào không có sẵn cho chủ đề hiện được chọn, mẫu của thư mục mặc định sẽ được sử dụng thay thế làm dự phòng. Điều này có nghĩa là các chủ đề có thể được tạo với rất ít tệp và vẫn hoạt động đầy đủ. Nó cũng làm giảm sự trùng lặp mã và các vấn đề khi nâng cấp được thực hiện
Hiểu các chế độ xem (mẫu)
Như với ngôn ngữ và mô hình, tệp dạng xem thường liên quan đến tuyến đường, mặc dù không nhất thiết phải như vậy. Các mẫu ở phía danh mục thường được tìm thấy /catalog/view/theme/your-theme/template/
trừ khi nó không tồn tại, trong trường hợp đó, các mẫu của chủ đề mặc định sẽ được sử dụng. Đối với ví dụ trang tìm kiếm của chúng tôi ở trên, tệp là product/search.tpl
. Đối với các tuyến đường có ba phần, aaa/bbb_ccc.tpl
mặc dù không có quy tắc cố định nào. Trong phần quản trị, hầu hết các trang đều tuân theo điều này, ngoại trừ các trang liệt kê các mục, như trang danh sách sản phẩm, nằm trong catalog/product_list.tpl
và biểu mẫu chỉnh sửa sản phẩm catalog/product_form.tpl
. Một lần nữa, những điều này không được thiết lập, nhưng là tiêu chuẩn cho giỏ hàng mặc định.
Tệp mẫu trên thực tế chỉ là một tệp php khác, nhưng có phần mở rộng .tpl và thực sự được chạy trong tệp bộ điều khiển, do đó tất cả những thứ bạn có thể viết mã trong bộ điều khiển đều có thể chạy trong tệp mẫu (mặc dù không được khuyến nghị trừ khi hoàn toàn cần thiết)
Hiểu đối tượng cơ sở dữ liệu
Các truy vấn đang chạy bằng cách sử dụng
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX
như tên cho thấy là một hằng số chứa tiền tố cơ sở dữ liệu nếu tồn tại
$result
sẽ trả về một đối tượng cho SELECT
các truy vấn, chứa một vài thuộc tính
$result->row
chứa dữ liệu của hàng đầu tiên nếu một hoặc nhiều được trả về dưới dạng mảng kết hợp
$result->rows
chứa một mảng kết quả hàng, lý tưởng để lặp lại bằng cách sử dụng foreach
$result->num_rows
chứa số lượng kết quả trả về
Ngoài ra còn có một số phương thức bổ sung mà $this->db
đối tượng có
$this->db->escape()
sử dụng mysql_real_escape_string () trên giá trị được truyền
$this->db->countAffected
trả về số hàng bị ảnh hưởng bởi một UPDATE
truy vấn, v.v.
$this->db->getLastId()
trả về id tăng dần tự động cuối cùng bằng cách sử dụng mysql_insert_id ()
Hiểu các biến dành riêng
OpenCart đã xác định trước các biến để sử dụng ở vị trí của tiêu chuẩn $_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_FILES
, $_REQUEST
VÀ$_SERVER
$_SESSION
được chỉnh sửa bằng cách sử dụng $this->session->data
trong đó dữ liệu là một mảng kết hợp bắt chước$_SESSION
Tất cả những thứ khác đều có thể được truy cập bằng cách sử dụng $this->request
và đã được "làm sạch" để tuân thủ các dấu ngoặc kép được bật / tắt, vì vậy
$_GET
trở thành $this->request->get
$_POST
trở thành $this->request->post
$_COOKIE
trở thành $this->request->cookie
$_FILES
trở thành $this->request->files
$_REQUEST
trở thành $this->request->request
$_SERVER
trở thành $this->request->server
Tóm lược
Mặc dù phần trên không phải là hướng dẫn chắc chắn cho các nhà phát triển, nhưng hy vọng nó sẽ là điểm khởi đầu tốt cho những người mới bắt đầu