Construire un rapport personnalisé dans OpenCart

Quel que soit le secteur d'activité avec lequel vous faites affaire, il est toujours important de disposer d'outils vous permettant d'analyser les statistiques globales des événements quotidiens. Bien entendu, cela vous aide également à élaborer d'autres stratégies pour votre entreprise, au cas où les choses ne se dérouleraient pas comme prévu..

Aujourd'hui, nous discuterons des outils de reporting dans le contexte d'OpenCart. Vous trouverez de nombreux rapports utiles dans le noyau même. Il existe quatre catégories principales: Ventes, Produits, Clients et Marketing. Chacune d'entre elles offre en outre davantage d'options pour afficher les informations dans différents contextes..

Dans notre exemple, nous allons créer un rapport qui affiche tous les produits visualisés mais non encore achetés. Bien sûr, c’est un cas d’utilisation simple, mais vous pouvez en créer un plus complexe selon vos besoins..

Je suppose que vous utilisez la dernière version d'OpenCart et que vous connaissez le processus de développement de modules de base dans OpenCart, car nous allons mettre l'accent sur la génération de rapports plutôt que sur les étapes de développement de modules de base. Si vous souhaitez explorer le développement de modules de base dans OpenCart, il y a un bel article sur le sujet..

Configuration du fichier back-end

Énumérons les fichiers à implémenter pour notre rapport personnalisé:

  • admin / controller / report / product_custom.php: C'est le fichier du contrôleur principal qui est utilisé pour charger les données du modèle et configurer les variables.
  • admin / model / report / product_custom.php: C'est un fichier de modèle utilisé pour configurer les requêtes SQL afin d'extraire les données de la base de données.
  • admin / view / template / report / product_custom.tpl: C'est un fichier de vue contenant la logique de présentation.
  • admin / language / english / report / product_custom.php: C'est un fichier de langue.

Le controlle

Allez-y et créez un fichier admin / controller / report / product_custom.php avec le contenu suivant.

load-> language ('report / product_custom'); $ this-> document-> setTitle ($ this-> language-> get ('titre_titre')); 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 [] ']' name '=> $ result [' name '],' model '=> $ result [' modèle '],' visualisé '=> $ resultat [' visualisé '],);  $ data ['heading_title'] = $ this-> language-> get ('titre_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 ['nom_colonne'] = $ this-> language-> get ('nom_colonne'); $ 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 = nouvelle pagination (); $ pagination-> total = $ total_produit; $ 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 ['colonne_left'] = $ this-> load-> controller ('common / column_left'); $ data ['footer'] = $ this-> load -> contrôleur ('c commun / pied de page '); $ this-> response-> setOutput ($ this-> load-> view ('report / product_custom.tpl', $ data)); 

La chose importante à noter ici est que nous l'avons placé dans le répertoire "report", qui est le bon emplacement pour tous les fichiers liés au rapport..

En dehors de cela, c'est un contrôleur assez habituel: nous chargeons le langage et le modèle appropriés dans la méthode d'indexation, puis définissons les variables. À la fin, nous avons attribué product_custom.tpl en tant que notre fichier de modèle principal qui est responsable de la sortie du rapport principal.

Le modèle

Pour aller plus loin, configurons le fichier modèle à 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'] < 1)  $data['limit'] = 20;  $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];  $query = $this->db-> requête ($ sql); retourne $ requête-> lignes;  fonction publique getTotalCustomProducts ($ data) $ sql = "Nombre SELECT (*) en tant que total FROM". DB_PREFIX. "produit p LEFT JOIN". DB_PREFIX. "description_produit pd sur ON (p.product_id = pd.product_id) LEFT JOIN". DB_PREFIX. "commande_produit op sur 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']; 

Il y a deux méthodes dans notre fichier modèle: le getCustomProducts récupère les enregistrements appropriés dans la base de données, getTotalCustomProducts renvoie le nombre total d'enregistrements utilisé par le composant de pagination dans le contrôleur.

La vue

Ensuite, le fichier de vue devrait être situé à admin / view / template / report / product_custom.tpl.

 

  • ">

Il affichera la liste des produits sous forme de tableau, et bien sûr, il est réactif car le bootstrap est maintenant au cœur!

Le fichier de langue

A la fin, créons un fichier de langue sur admin / language / english / report / product_custom.php.

Voilà donc en ce qui concerne la configuration du fichier.

Accorder une autorisation pour le rapport personnalisé

Bien que nous ayons fini avec notre module de rapport personnalisé, vous ne pourrez pas y accéder pour le moment. En effet, cela est considéré comme une nouvelle ressource et le groupe d'utilisateurs administrateurs doit être autorisé à accéder à cette ressource. Par conséquent, allons de l'avant et accordons l'autorisation pour cette ressource au groupe d'utilisateurs administrateurs..

Aller vers Système> Utilisateurs> Groupe d'utilisateurs et éditer le Administrateur groupe d'utilisateurs. Sous le Droit d'accès liste déroulante, cochez la case report / product_custom ressource et enregistrer le groupe.

Maintenant, vous devriez pouvoir accéder à cette ressource.

Comment accéder à notre rapport dans le back-end

Nous devrons modifier admin / view / template / common / menu.tpl d'inclure notre lien de rapport personnalisé. Par souci de simplicité, nous le modifierons directement, mais vous voudrez peut-être faire de même en utilisant l'extension OCMOD. Il vous permet de modifier les fichiers principaux à l’aide d’un système de recherche / remplacement basé sur XML..

Maintenant, ouvrez le admin / view / template / common / menu.tpl déposer et chercher la ligne suivante.

  • ">
  • Après cette ligne, ajoutez la ligne suivante.

  • "> Rapport personnalisé
  • Vous devriez maintenant pouvoir voir notre lien sous Rapports> Produits. Cliquez dessus pour voir notre super rapport personnalisé!

    Il répertorie tous les produits consultés et non encore achetés. Donc, c'est tout ce qui concerne la création de rapport personnalisé; J'espère que ce n'était pas trop à la fois. Quoi qu'il en soit, vous avez l'idée et vous pouvez l'étendre facilement selon vos besoins..

    Conclusion

    Aujourd'hui, nous avons expliqué comment créer un rapport personnalisé dans OpenCart. Nous avons parcouru tout le processus de configuration des fichiers requis et, dans la dernière partie de l'article, nous avons montré comment accéder au rapport à partir du back-end..

    Si vous recherchez des outils, utilitaires, extensions, etc. OpenCart supplémentaires que vous pouvez exploiter dans vos propres projets ou pour votre propre éducation, n'oubliez pas de voir ce que nous avons sur le marché..

    J'espère que vous avez tout apprécié jusqu'à présent et restez à l'affût pour en savoir plus sur OpenCart. En cas de questions ou de suggestions, vous pouvez me joindre via Twitter ou utiliser le flux de commentaires ci-dessous..