Як створити користувальницький репорт в OpenCart

300

Від автора: неважливо, який у вас бізнес, завжди важливо мати під рукою інструменти з аналізу статистики події за день. З допомогою таких інструментів можна коригувати стратегію розвитку бізнесу, якщо щось пішло не так. Сьогодні ми поговоримо про репортах в OpenCart.

У фреймворку багато корисних стандартних репортов, розділених на основні категорії – Продажу, Товари, Покупці і Маркетинг у кожній категорії є безліч опцій з перегляду інформації в різній формі.

У нашому прикладі ми створимо репорт, в якому будуть відображатися всі переглянуті, але не куплені товари. Приклад простий, але на його основі ви можете створити щось більш складне під свої потреби.

Я припускаю, що ви працюєте в останній версії OpenCart і знайомі з процесом модульної розробки, так як основний акцент ми зробимо саме на генерацію репортов.

Налаштування back-end файлів

Для роботи нам будуть потрібні файли:

Як створити користувальницький репорт в OpenCart

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

admin/controller/report/product_custom.php: Файл основного контролера, що використовується для завантаження даних моделі та створення змінних.

admin/model/report/product_custom.php: Файл моделі, який використовується для створення SQL запитів до бази даних і витягування даних.

admin/view/template/report/product_custom.tpl: Файл уявлення, в ньому зберігається вся логіка подання.

admin/language/english/report/product_custom.php: Файл мови.

Контролер

Створіть файл admin/controller/report/product_custom.php і скопіюйте в нього наступний код:

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));
}
}

Тут важливо зазначити, що ми розмістили файл в папці «report», де повинні зберігатися всі файли, пов’язані зі звітністю.

А в іншому це звичайний контролер – в методі index завантажується потрібну мову і модель, а потім задаються змінні. В кінці ми робимо файл product_custom.tpl нашим основним файлом шаблону, через який буде виводити репорт.

Модель

Давайте створимо файл моделі admin/model/report/product_custom.php.

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’] 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’];
}
}

В нашій моделі зберігається два методу – getCustomProducts витягає відповідні записи з бази даних, а getTotalCustomProducts повертає загальну кількість записів, що потім використовується в компоненті посторінкової навігації.

Подання

Файл представлення повинен лежати у admin/view/template/report/product_custom.tpl.

Як створити користувальницький репорт в OpenCart

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

Товари будуть показуватися у формі красивою таблиці. Розмітка повністю адаптивна, так як в ядрі у нас bootstrap!

Файл мови

Останнє, створимо файл мови admin/language/english/report/product_custom.php.

За файлів ми закінчили.

Відкриваємо дозвіл на публікацію користувальницьких репортов

Хоча ми і закінчили з модулем репорта, ми поки що не можемо отримати до нього доступ. Ресурс вважається новим, і спершу необхідно дозволити доступ до нього групи адміністраторів. Так що давайте відкриємо доступ адміністраторам.

Зайдіть в System > Users > Users Group і перейдіть на сторінку редагування групи Administrator. Під випадаючим боксом Access Permission поставте галочку report/product_custom і збережіть зміни в групі.

Як створити користувальницький репорт в OpenCart

Тепер ви можете отримати доступ до ресурсу.

Як отримати доступ до ресурсу з боку back-end’а

Нам потрібно змінити файл admin/view/template/common/menu.tpl і додати в нього посилання на наш користувацький репорт. Для простоти ми відредагуємо його безпосередньо, але ви можете зробити це через розширення OCMOD. Плагін дозволяє змінювати файли ядра за допомогою XML системи пошуку і заміни.

Відкрийте файл admin/view/template/common/menu.tpl і перейдіть до наступного рядка.

  • Після неї вставте цей рядок.

  • Custom Report
  • Тепер ви побачите, що в панелі Reports > Products з’явилася наша посилання. Натисніть на неї, і вам відкриється наш репорт!

    Як створити користувальницький репорт в OpenCart

    У ньому показуються всі переглянуті, але ще некупленные товари. Створення користувальницького репорта це все; сподіваюся, інформації було не занадто багато для однієї статті. Як би те ні було, тепер ви знаєте, як створювати свої репорти і легко зможете розширити наш репорт під свої потреби.

    Висновок

    Сьогодні ми дізналися, як створювати користувальницькі репорти в OpenCart. Ми пройшли по всьому процесу, від створення файлів і до того, як отримати доступ з боку back-end’а.

    Як створити користувальницький репорт в OpenCart

    Інтернет-магазин на OpenCart!

    Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

    Приступити до створення