Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)
Tidak peduli apa pun bisnis yang Anda hadapi, selalu penting untuk memiliki alat yang membantu Anda menganalisis statistik keseluruhan kejadian sehari-hari. Tentu saja, itu juga membantu Anda membangun strategi lebih lanjut untuk bisnis Anda jika hal-hal tidak berada di jalur yang benar.
Hari ini, kita akan membahas alat pelaporan dalam konteks OpenCart. Anda akan menemukan banyak laporan yang berguna dalam inti itu sendiri. Ada empat kategori utama tepatnya—Sales, Products, Customers dan Marketing—dan masing-masing dari mereka memberikan lebih banyak opsi untuk melihat informasi dalam konteks yang berbeda.
Dalam contoh kita, kita akan membuat laporan yang menampilkan semua produk yang dilihat tetapi belum dibeli. Tentu saja, ini adalah kasus penggunaan yang sederhana, tetapi Anda dapat melanjutkan dan membuat yang lebih rumit sesuai kebutuhan Anda.
Saya berasumsi bahwa Anda menggunakan versi terbaru OpenCart dan akrab dengan proses pengembangan modul dasar di OpenCart, karena kita akan menekankan pembuatan laporan daripada langkah-langkah pengembangan modul dasar. Jika Anda ingin menjelajahi pengembangan modul dasar di OpenCart, ada artikel bagus tentang hal ini.
Pengaturan File Back-End
Mari mencantumkan file yang perlu diterapkan untuk laporan khusus kita:
-
admin/controller/report/product_custom.php
: Ini adalah file controller utama yang digunakan untuk memuat data model dan mengatur variabel. -
admin/model/report/product_custom.php
: Ini adalah file model yang digunakan untuk mengatur kueri SQL untuk mengambil data dari database. -
admin/view/template/report/product_custom.tpl
: Ini adalah file view yang berisi logika presentasi. -
admin/language/english/report/product_custom.php
: Ini adalah file bahasa.
Controller
Lanjutkan dan buat file admin/controller/report/product_custom.php
dengan konten berikut.
<?php class ControllerReportProductCustom extends Controller { public function index() { $this->load->language('report/product_custom'); $this->document->setTitle($this->language->get('heading_title')); if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } $url = ''; if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('report/product_custom', 'token=' . $this->session->data['token'] . $url, 'SSL') ); $this->load->model('report/product_custom'); $data['products'] = array(); $filter_data = array( 'start' => ($page - 1) * $this->config->get('config_limit_admin'), 'limit' => $this->config->get('config_limit_admin') ); $product_total = $this->model_report_product_custom->getTotalCustomProducts($filter_data); $results = $this->model_report_product_custom->getCustomProducts($filter_data); foreach ($results as $result) { $data['products'][] = array( 'name' => $result['name'], 'model' => $result['model'], 'viewed' => $result['viewed'], ); } $data['heading_title'] = $this->language->get('heading_title'); $data['text_list'] = $this->language->get('text_list'); $data['text_no_results'] = $this->language->get('text_no_results'); $data['text_confirm'] = $this->language->get('text_confirm'); $data['column_name'] = $this->language->get('column_name'); $data['column_model'] = $this->language->get('column_model'); $data['column_viewed'] = $this->language->get('column_viewed'); $data['entry_date_start'] = $this->language->get('entry_date_start'); $data['entry_date_end'] = $this->language->get('entry_date_end'); $data['token'] = $this->session->data['token']; $url = ''; $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $this->config->get('config_limit_admin'); $pagination->url = $this->url->link('report/product_custom', 'token=' . $this->session->data['token'] . $url . '&page={page}', 'SSL'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($product_total - $this->config->get('config_limit_admin'))) ? $product_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $product_total, ceil($product_total / $this->config->get('config_limit_admin'))); $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); $this->response->setOutput($this->load->view('report/product_custom.tpl', $data)); } }
Yang penting untuk dicatat di sini adalah bahwa kita menempatkannya di bawah direktori "report", yang merupakan tempat yang tepat untuk semua file yang terkait dengan laporan.
Selain itu, itu hal-hal controller yang biasa-biasa saja—kita memuat bahasa dan model yang sesuai dalam metode index, dan kemudian mengatur variabel. Pada akhirnya, kita telah menetapkan product_custom.tpl
sebagai file template utama kita yang bertanggung jawab untuk keluaran laporan utama.
Model
Pindah lebih lanjut, mari kita mengatur file model di admin/model/report/product_custom.php
.
<?php class ModelReportProductCustom extends Model { public function getCustomProducts($data = array()) { $sql = "SELECT pd.name, p.model, p.viewed FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "order_product op ON p.product_id = op.product_id WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.viewed > 0 AND ISNULL(op.product_id) ORDER BY p.viewed DESC"; if (isset($data['start']) || isset($data['limit'])) { if ($data['start'] < 0) { $data['start'] = 0; } if ($data['limit'] < 1) { $data['limit'] = 20; } $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; } $query = $this->db->query($sql); return $query->rows; } public function getTotalCustomProducts($data) { $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "order_product op ON p.product_id = op.product_id WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.viewed > 0 AND ISNULL(op.product_id)"; $query = $this->db->query($sql); return $query->row['total']; } }
Ada dua metode dalam file model kita—getCustomProducts
mengambil record yang sesuai dari database, sementara getTotalCustomProducts
mengembalikan jumlah record total yang digunakan oleh komponen pagination di controller.
View
Selanjutnya, file view harus berada di admin/view/template/report/product_custom.tpl
.
<?php echo $header; ?><?php echo $column_left; ?> <div id="content"> <div class="page-header"> <div class="container-fluid"> <h1><?php echo $heading_title; ?></h1> <ul class="breadcrumb"> <?php foreach ($breadcrumbs as $breadcrumb) { ?> <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> <?php } ?> </ul> </div> </div> <div class="container-fluid"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title"><i class="fa fa-bar-chart"></i> <?php echo $text_list; ?></h3> </div> <div class="panel-body"> <div class="table-responsive"> <table class="table table-bordered"> <thead> <tr> <td class="text-left"><?php echo $column_name; ?></td> <td class="text-left"><?php echo $column_model; ?></td> <td class="text-right"><?php echo $column_viewed; ?></td> </tr> </thead> <tbody> <?php if ($products) { ?> <?php foreach ($products as $product) { ?> <tr> <td class="text-left"><?php echo $product['name']; ?></td> <td class="text-left"><?php echo $product['model']; ?></td> <td class="text-right"><?php echo $product['viewed']; ?></td> </tr> <?php } ?> <?php } else { ?> <tr> <td class="text-center" colspan="4"><?php echo $text_no_results; ?></td> </tr> <?php } ?> </tbody> </table> </div> <div class="row"> <div class="col-sm-6 text-left"><?php echo $pagination; ?></div> <div class="col-sm-6 text-right"><?php echo $results; ?></div> </div> </div> </div> </div> </div> <?php echo $footer; ?>
Ini akan menampilkan daftar produk dengan cara tabular yang bagus, dan tentu saja itu responsif karena bootstrap ada di inti sekarang!
File Bahasa
Pada akhirnya, mari kita membuat file bahasa di admin/language/english/report/product_custom.php
.
<?php // Heading $_['heading_title'] = 'Products Custom Report (Viewed but not purchased)'; // Text $_['text_list'] = 'Products Custom List'; // Column $_['column_date_start'] = 'Date Start'; $_['column_date_end'] = 'Date End'; $_['column_name'] = 'Product Name'; $_['column_model'] = 'Model'; $_['column_viewed'] = 'Viewed'; // Entry $_['entry_date_start'] = 'Date Start'; $_['entry_date_end'] = 'Date End';
Jadi itu saja pengaturan file yang bersangkutan.
Memberikan Izin untuk Laporan Kustom
Meskipun kita sudah selesai dengan modul laporan kustom kita, Anda belum dapat mengaksesnya. Itu karena itu dianggap sebagai sumber daya baru dan kelompok pengguna administrator harus diizinkan untuk mengakses sumber daya ini. Oleh karena itu, mari lanjutkan dan berikan izin untuk sumber daya ini ke grup pengguna administrator.
Arahkan ke System > Users > Users Group dan edit grup pengguna Administrator. Di bawah kotak drop-down Access Permission, centang report/product_custom resource dan simpan grup tersebut.



Sekarang, Anda harus dapat mengakses sumber daya ini.
Cara Mengakses Laporan Kita di Back-End
Kita perlu mengubah admin/view/template/common/menu.tpl
untuk menyertakan tautan laporan kustom kita. Demi kesederhanaan, kita akan memodifikasinya secara langsung, tetapi Anda mungkin ingin mencapai yang sama menggunakan ekstensi OCMOD. Ini memungkinkan Anda untuk mengubah file inti menggunakan sistem pencarian/penggantian berbasis XML.
Sekarang, buka file admin/view/template/common/menu.tpl
dan cari baris berikut.
<li><a href="<?php echo $report_product_purchased; ?>"><?php echo $text_report_product_purchased; ?></a></li>
Setelah baris itu, tambahkan baris berikut.
<li><a href="/index.php?route=report/product_custom&token=<?php echo $_SESSION['token']; ?>">Custom Report</a></li>
Sekarang Anda harus dapat melihat tautan kita di bawah Reports > Products. Klik itu untuk melihat laporan kustom kita yang luar biasa!



Ini mencantumkan semua produk yang dilihat dan belum dibeli. Jadi, itu saja yang menyangkut pembuatan laporan kustom; saya berharap itu tidak terlalu banyak sekaligus. Tetapi, bagaimanapun, Anda telah mendapatkan idenya, dan Anda dapat memperpanjangnya dengan mudah sesuai kebutuhan Anda.
Kesimpulan
Hari ini, kita telah membahas cara membuat laporan kustom di OpenCart. Kita telah melalui proses lengkap untuk menyiapkan file yang diperlukan, dan di bagian akhir artikel, kita menunjukkan cara mengakses laporan dari back-end.
Jika Anda mencari alat OpenCart tambahan, utilitas, ekstensi, dan sebagainya yang dapat Anda manfaatkan dalam proyek Anda sendiri atau untuk pendidikan Anda sendiri, jangan lupa untuk melihat apa yang kami miliki di marketplace.
Saya harap Anda telah menikmati semuanya sejauh ini dan terus memantau lebih lanjut tentang OpenCart. Jika ada pertanyaan dan saran, Anda dapat menghubungi saya melalui Twitter atau menggunakan umpan komentar di bawah ini.