Panduan memulai cepat pengembang OpenCart 1.5.X untuk pemula
Panduan ini ditulis untuk pengembang yang sudah terbiasa dengan PHP, OOP dan arsitektur MVC
Berikut ini, Anda akan melihat contoh untuk sisi katalog gerobak. Sisi admin identik fungsinya dengan pengecualian tampilan yang dicatat di bagian yang relevan
Memahami Perpustakaan
Semua fungsionalitas perpustakaan dapat diakses melalui Controller, Model dan View menggunakan $this->library_name
. Semua ini dapat ditemukan di /system/library/
folder. Misalnya, untuk mengakses produk keranjang belanja saat ini, Anda harus menggunakan Cart
kelas, yang ada di /system/library/cart.php
dan dapat diakses menggunakan$this->cart->getProducts()
Barang yang biasa digunakan
customer.php
- Fungsi terkait pelanggan
user.php
- Fungsi terkait pengguna Admin
cart.php
- Fungsi terkait gerobak
config.php
- Semua pengaturan dimuat dari ini
url.php
- Fungsi pembuatan URL
Memahami parameter rute
Kerangka kerja OpenCart bergantung pada route=aaa/bbb/ccc
parameter string kueri untuk mengetahui apa yang harus dimuat, dan merupakan fitur pendukung untuk menemukan file yang perlu Anda edit untuk setiap halaman. Sebagian besar rute sebenarnya hanya menggunakan aaa/bbb
yang seharusnya dilihat sebagai dua bagian, namun beberapa berisi tiga bagian. aaa/bbb/ccc
Bagian pertama aaa
umumnya terkait dengan folder dalam folder umum seperti folder pengontrol atau template. Bagian kedua biasanya berhubungan dengan nama file, tanpa relevan .php
atau .tpl
ekstensi. Bagian ketiga dijelaskan di bagian "Memahami pengontrol" di bawah
Memahami bahasa
Bahasa disimpan dalam /catalog/language/
folder di your-language
subfolder. Di your-language.php
dalamnya , nilai teks umum yang digunakan di berbagai halaman disimpan dalam file di dalam folder, jadi untuk bahasa Inggris di sisi katalog, Anda akan menemukan nilainya di catalog/language/english/english.php
. Untuk teks halaman tertentu, Anda memerlukan route
untuk halaman (Ini biasanya terjadi, tetapi tidak selalu karena Anda dapat menentukan file bahasa apa pun yang Anda suka). Misalnya, halaman pencarian memiliki rute product/search
, dan oleh karena itu teks khusus bahasa untuk halaman itu dapat ditemukan di catalog/language/english/product/search.php
(Perhatikan nama file dan subfolder cocok dengan rute yang diikuti .php
.
Untuk memuat bahasa di pengontrol, Anda menggunakan
$this->language->load('product/search');
Kemudian Anda dapat menggunakan fungsi pustaka bahasa get
untuk mengambil teks bahasa tertentu, seperti
$some_variable = $this->language->get('heading_title');
Variabel bahasa ditugaskan di file bahasa menggunakan variabel khusus $_
yang merupakan larik kunci dan nilai teks. Di dalam Anda, /catalog/language/english/product/search.php
Anda harus menemukan sesuatu yang mirip dengan
$_['heading_title'] = 'Search';
Nilai dalam file bahasa global english/english.php
secara otomatis dimuat dan tersedia untuk digunakan tanpa $this->language->load
metode
Memahami pengontrol
Pengontrol dimuat berdasarkan route
dan cukup mudah dipahami. Pengontrol berada di /catalog/controller/
folder. Melanjutkan dari contoh terakhir, Kontroler untuk halaman Pencarian ada di /product/search.php
dalam folder ini. Perhatikan lagi bahwa rute yang diikuti oleh .php
digunakan.
Membuka file controller, Anda akan melihat nama kelas Pascal Case yang memperluas Controller
kelas, bernama ControllerProductSearch
. Ini lagi-lagi khusus untuk rute, dengan Controller
diikuti oleh nama subfolder dan nama file tanpa ekstensi yang dikapitalisasi. Kapitalisasi sebenarnya tidak diperlukan, tetapi disarankan agar mudah dibaca. Perlu dicatat bahwa nama kelas tidak mengambil nilai apa pun dari subfolder dan nama file selain huruf dan angka. Garis bawah dihapus.
Di dalam kelas ada metodenya. Metode di kelas yang dideklarasikan public
dapat diakses untuk dijalankan melalui rute - private
tidak. Secara default, dengan rute dua bagian standar (di aaa/bbb
atas), index()
metode default dipanggil. Jika bagian ketiga dari sebuah rute (di ccc
atas) digunakan, metode ini akan dijalankan. Misalnya, account/return/insert
akan memuat /catalog/controller/account/return.php
file dan kelas, dan mencoba memanggil insert
metode tersebut
Memahami Model
Model di OpenCart ditemukan di /catalog/model/
folder dan dikelompokkan berdasarkan fungsi, bukan rute, dan oleh karena itu Anda perlu memuatnya di pengontrol Anda melalui
$this->load->model('xxx/yyy');
Ini akan memuat file di subfolder xxx
bernama yyy.php
. Kemudian tersedia untuk digunakan melalui objek
$this->model_xxx_yyy
dan seperti halnya pengontrol, Anda hanya dapat memanggil public
metodenya. Misalnya, untuk mengubah ukuran gambar, Anda akan menggunakan tool/image
model dan memanggil resize
metodenya sebagai berikut
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Memahami penetapan variabel dalam tampilan dari pengontrol
Untuk meneruskan nilai ke tampilan dari pengontrol, Anda hanya perlu menetapkan data Anda ke $this->data
variabel, yang pada dasarnya adalah larik pasangan kunci => nilai. Sebagai contoh
$this->data['example_var'] = 123;
Mengakses ini dalam tampilan sedikit harus mudah dipahami jika Anda terbiasa dengan metode extract () yang mengonversi setiap kunci menjadi variabel. Jadi example_var
kuncinya menjadi $example_var
dan bisa diakses seperti itu dalam tampilan.
Memahami tema
Tema hanya tersedia di sisi katalog, dan pada dasarnya merupakan folder template, stylesheet, dan gambar tema. Folder tema ditempatkan di /catalog/view/theme/
folder diikuti dengan nama tema. Nama folder tidak penting kecuali untuk default
folder tersebut
Sisi admin menggunakan /admin/view/template/
(melewatkan /theme/theme-name/
dari jalur karena tidak memungkinkan tema yang berbeda)
File template berada di template
folder di dalam folder tema. Jika ada template yang tidak tersedia untuk tema yang saat ini dipilih, template folder default akan digunakan sebagai pengganti. Ini berarti tema dapat dibuat dengan sangat sedikit file dan masih berfungsi sepenuhnya. Ini juga mengurangi duplikasi kode dan masalah saat peningkatan dilakukan
Memahami tampilan (template)
Seperti bahasa dan model, file tampilan umumnya terkait dengan rute, meskipun tidak harus sama sekali. Template di sisi katalog biasanya ditemukan /catalog/view/theme/your-theme/template/
kecuali tidak ada, dalam hal ini template tema default akan digunakan. Untuk contoh halaman pencarian kami di atas, file tersebut adalah product/search.tpl
. Untuk rute dengan tiga bagian, umumnya dalam aaa/bbb_ccc.tpl
meskipun tidak ada aturan yang ditetapkan. Di admin, sebagian besar halaman mengikuti ini, dengan pengecualian bahwa halaman yang mencantumkan item, seperti halaman daftar produk, ada di catalog/product_list.tpl
dan formulir pengeditan produk ada catalog/product_form.tpl
. Sekali lagi, ini tidak ditetapkan, tetapi standar untuk keranjang default.
File template sebenarnya hanyalah file php lain, tetapi dengan ekstensi .tpl dan sebenarnya dijalankan di file controller, oleh karena itu semua hal yang dapat Anda kodekan dalam controller dapat dijalankan dalam file template (meskipun tidak disarankan kecuali benar-benar perlu)
Memahami objek database
Kueri dijalankan menggunakan
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX
seperti namanya adalah konstanta yang berisi prefiks database jika ada
$result
akan mengembalikan objek untuk SELECT
kueri, yang berisi beberapa properti
$result->row
berisi data baris pertama jika satu atau lebih dikembalikan sebagai array asosiatif
$result->rows
berisi larik hasil baris, ideal untuk perulangan menggunakan foreach
$result->num_rows
berisi jumlah hasil yang dikembalikan
Ada juga beberapa metode tambahan yang dimiliki $this->db
objek
$this->db->escape()
menggunakan mysql_real_escape_string () pada nilai yang diteruskan
$this->db->countAffected
mengembalikan jumlah baris yang dipengaruhi oleh UPDATE
kueri dan seterusnya
$this->db->getLastId()
mengembalikan id kenaikan otomatis terakhir menggunakan mysql_insert_id ()
Memahami variabel yang dipesan
OpenCart telah disediakan variabel untuk digunakan di tempat standar $_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_FILES
, $_REQUEST
DAN$_SERVER
$_SESSION
diedit menggunakan di $this->session->data
mana data adalah array asosiatif yang meniru$_SESSION
Semua yang lain dapat diakses menggunakan $this->request
dan telah "dibersihkan" untuk mematuhi tanda kutip ajaib yang diaktifkan / dinonaktifkan, jadi
$_GET
menjadi $this->request->get
$_POST
menjadi $this->request->post
$_COOKIE
menjadi $this->request->cookie
$_FILES
menjadi $this->request->files
$_REQUEST
menjadi $this->request->request
$_SERVER
menjadi $this->request->server
Ringkasan
Meskipun hal di atas bukanlah panduan antipeluru untuk pengembang, semoga ini akan berfungsi sebagai titik awal yang baik bagi mereka yang memulai