Crea un rapporto personalizzato in OpenCart

Indipendentemente dal tipo di attività, è sempre importante disporre di strumenti che consentano di analizzare le statistiche complessive degli avvenimenti quotidiani. Naturalmente, ti aiuta anche a costruire ulteriori strategie per la tua azienda nel caso in cui le cose non siano sulla strada giusta.

Oggi discuteremo degli strumenti di reporting nel contesto di OpenCart. Troverai molti report utili nel core stesso. Ci sono quattro categorie principali per essere precisi - Vendite, Prodotti, Clienti e Marketing - e ognuna di esse fornisce ulteriori opzioni per visualizzare le informazioni in diversi contesti.

Nel nostro esempio, creeremo un rapporto che mostra tutti i prodotti che sono stati visualizzati ma non ancora acquistati. Naturalmente, si tratta di un caso di utilizzo semplice, ma è possibile procedere e crearne uno più complesso in base alle proprie esigenze.

Presumo che tu stia utilizzando l'ultima versione di OpenCart e che abbia familiarità con il processo di sviluppo dei moduli di base in OpenCart, dato che sottolineeremo la generazione dei report piuttosto che le fasi di sviluppo dei moduli di base. Se desideri esplorare lo sviluppo di moduli base in OpenCart, c'è un bell'articolo sull'argomento.

Impostazione file back-end

Elenciamo i file che devono essere implementati per il nostro rapporto personalizzato:

  • admin / regolatore / report / product_custom.php: È il file del controller principale che viene utilizzato per caricare i dati del modello e impostare le variabili.
  • admin / modello / report / product_custom.php: È un file di modello che viene utilizzato per impostare query SQL per recuperare i dati dal database.
  • admin / view / modello / report / product_custom.tpl: È un file di visualizzazione che contiene la logica di presentazione.
  • admin / lingua / inglese / report / product_custom.php: È un file di lingua.

Il controller

Vai avanti e crea un file admin / regolatore / report / product_custom.php con i seguenti contenuti.

load-> lingua ( 'report / product_custom'); $ This-> documento-> 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 ('testo' => $ this-> lingua-> 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- > dati ['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 ($ risultati come $ 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 = pagina ',' 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 ( 'c COMUNE / piè di pagina '); $ this-> response-> setOutput ($ this-> load-> view ('report / product_custom.tpl', $ data)); 

La cosa importante da notare qui è che l'abbiamo inserita nella directory "report", che è il posto giusto per tutti i file relativi ai report.

A parte questo, è piuttosto roba del controller, stiamo caricando la lingua e il modello appropriati nel metodo dell'indice e quindi impostando le variabili. Alla fine, l'abbiamo assegnato product_custom.tpl come il nostro file di modello principale che è responsabile per l'output del report principale.

Il modello

Andando oltre, impostiamo il file del modello su admin / modello / 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 ['limite'])) 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 (*) come totale FROM". DB_PREFIX. "Prodotto p SINISTRA". 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']; 

Ci sono due metodi nel nostro file di modello: il getCustomProducts recupera record appropriati dal database, mentre getTotalCustomProducts restituisce il conteggio totale dei record utilizzato dal componente di impaginazione nel controller.

La vista

Successivamente, il file di visualizzazione dovrebbe trovarsi a admin / view / modello / report / product_custom.tpl.

 

  • ">

Visualizzerà l'elenco dei prodotti in un modo tabulare e ovviamente è reattivo dato che il bootstrap è nel core ora!

Il file di lingua

Alla fine, creiamo un file di lingua su admin / lingua / inglese / report / product_custom.php.

Quindi è tutto per quanto riguarda l'installazione dei file.

Autorizzazione di concessione per il rapporto personalizzato

Anche se abbiamo finito con il nostro modulo di rapporto personalizzato, non potrai ancora accedervi. Questo perché è considerato una nuova risorsa e il gruppo di utenti amministratori dovrebbe avere il permesso di accedere a questa risorsa. Quindi, procediamo e concedere l'autorizzazione per questa risorsa al gruppo di utenti amministratori.

Navigare verso Sistema> Utenti> Gruppo utenti e modifica il Amministratore gruppo di utenti. Sotto il Permesso di accesso casella a discesa, selezionare report / product_custom risorsa e salvare il gruppo.

Ora dovresti essere in grado di accedere a questa risorsa.

Come accedere al nostro rapporto nel back-end

Dovremo modificare admin / view / template / common / menu.tpl per includere il nostro link rapporto personalizzato. Per semplicità, lo modificheremo direttamente, ma ti potrebbe piacere ottenere lo stesso usando l'estensione OCMOD. Permette di cambiare i file core usando un sistema di ricerca / sostituzione basato su XML.

Ora apri il admin / view / template / common / menu.tpl file e cerca la seguente riga.

  • ">
  • Dopo quella riga, aggiungi la seguente riga.

  • "> Rapporto personalizzato
  • Ora dovresti essere in grado di vedere il nostro link sotto Rapporti> Prodotti. Clicca su questo per vedere il nostro fantastico rapporto personalizzato!

    Elenca tutti i prodotti che sono visualizzati e non ancora acquistati. Quindi, è tutto ciò che riguarda la creazione del report personalizzato; Spero che non sia stato troppo in una volta. Ma, comunque, hai avuto l'idea e potresti estenderla facilmente secondo le tue esigenze.

    Conclusione

    Oggi abbiamo discusso su come creare un rapporto personalizzato in OpenCart. Abbiamo svolto l'intero processo di configurazione dei file richiesti e nella parte successiva dell'articolo abbiamo dimostrato come accedere al report dal back-end.

    Se stai cercando altri strumenti, utility, estensioni e così via che puoi sfruttare nei tuoi progetti o per la tua istruzione, non dimenticare di vedere ciò che abbiamo a disposizione sul mercato.

    Spero che ti sia piaciuto tutto fino ad ora e rimaniamo aggiornato su OpenCart. In caso di domande e suggerimenti, puoi contattarmi tramite Twitter o utilizzare il feed dei commenti qui sotto.