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 Cartkelas, yang ada di /system/library/cart.phpdan 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/cccparameter 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/bbbyang seharusnya dilihat sebagai dua bagian, namun beberapa berisi tiga bagian. aaa/bbb/cccBagian pertama aaaumumnya terkait dengan folder dalam folder umum seperti folder pengontrol atau template. Bagian kedua biasanya berhubungan dengan nama file, tanpa relevan .phpatau .tplekstensi. Bagian ketiga dijelaskan di bagian "Memahami pengontrol" di bawah
Memahami bahasa
Bahasa disimpan dalam /catalog/language/folder di your-languagesubfolder. Di your-language.phpdalamnya , 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 routeuntuk 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 getuntuk 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.phpAnda harus menemukan sesuatu yang mirip dengan
$_['heading_title'] = 'Search';
Nilai dalam file bahasa global english/english.phpsecara otomatis dimuat dan tersedia untuk digunakan tanpa $this->language->loadmetode
Memahami pengontrol
Pengontrol dimuat berdasarkan routedan cukup mudah dipahami. Pengontrol berada di /catalog/controller/folder. Melanjutkan dari contoh terakhir, Kontroler untuk halaman Pencarian ada di /product/search.phpdalam folder ini. Perhatikan lagi bahwa rute yang diikuti oleh .phpdigunakan.
Membuka file controller, Anda akan melihat nama kelas Pascal Case yang memperluas Controllerkelas, bernama ControllerProductSearch. Ini lagi-lagi khusus untuk rute, dengan Controllerdiikuti 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 publicdapat diakses untuk dijalankan melalui rute - privatetidak. Secara default, dengan rute dua bagian standar (di aaa/bbbatas), index()metode default dipanggil. Jika bagian ketiga dari sebuah rute (di cccatas) digunakan, metode ini akan dijalankan. Misalnya, account/return/insertakan memuat /catalog/controller/account/return.phpfile dan kelas, dan mencoba memanggil insertmetode 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 xxxbernama yyy.php. Kemudian tersedia untuk digunakan melalui objek
$this->model_xxx_yyy
dan seperti halnya pengontrol, Anda hanya dapat memanggil publicmetodenya. Misalnya, untuk mengubah ukuran gambar, Anda akan menggunakan tool/imagemodel dan memanggil resizemetodenya 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->datavariabel, 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_varkuncinya menjadi $example_vardan 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 defaultfolder tersebut
Sisi admin menggunakan /admin/view/template/(melewatkan /theme/theme-name/dari jalur karena tidak memungkinkan tema yang berbeda)
File template berada di templatefolder 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.tplmeskipun 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.tpldan 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
$resultakan mengembalikan objek untuk SELECTkueri, 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->dbobjek
$this->db->escape()menggunakan mysql_real_escape_string () pada nilai yang diteruskan
$this->db->countAffectedmengembalikan jumlah baris yang dipengaruhi oleh UPDATEkueri 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, $_REQUESTDAN$_SERVER
$_SESSIONdiedit menggunakan di $this->session->datamana data adalah array asosiatif yang meniru$_SESSION
Semua yang lain dapat diakses menggunakan $this->requestdan 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