Jump to content

Développement spécifique : Afficher des courbes en Front Office (avec Artichow par exemple)


Recommended Posts

Bonjour,

Le site que je mets actuellement en place avec Prestashop vends une prestation d'analyse de certaines données qui seront transmises par le client sous forme de csv par exemple.

Je souhaiterais utiliser ces données pour les afficher sous forme de courbes dans le front office de Prestashop, dans la rubrique "Mon compte".

Il s'agirait donc d'un rendu à l'aide de script tels que Artichow ou Google Chart. Il se trouve que ce type de rendu graphique est déjà utilisé dans le back office pour les statistiques administrateur.

Voici ma question :

Comment utiliser ces scripts (Artichow ou Google Chart) afin de les appeler depuis le front office pour y afficher des courbes ?


Merci de votre aide,
Link to comment
Share on other sites

Bonsoir ,
Pour l'un et l'autre des moteurs de rendu , tu trouveras des tas de tutoriels spécifiques, ainsi que des outils pour te simplifier la vie , comme ICI par exemple ...

Reste à intégrer cela dans le contexte prestashop, ce qui est une autre affaire. Il y a plusieurs approches : module, controller etc...

Il manque pas mal d'éléments pour une réponse adaptée : la version de prestashop , quel contexte doit afficher le rendu, pleine page ? bloc ? ...

Link to comment
Share on other sites

Merci de ta réponse.
En fait, je sais bien qu'il existe tout un tas de tutoriels associé à ces moteur de rendu graphique. Mais ils sont déjà implémentés dans le BO de Prestashop, ma question portait donc sur comment faire en sorte pour que l'on puisse les utiliser depuis le FO.

Il s'agit de la dernière version de PS : 1.4
Et je souhaiterais, tout comme ces graph sont en pleine page dans le BO, les afficher également en pleine page dans le FO. Comme les statistique sont déjà sous forme de module, je pense que le plus simple serait de partir sur un module également. Mais comment afficher un module dédier au BO, dans la partie FO ?

Link to comment
Share on other sites

Les modules de stats et de rendu dérivent de la classe ModuleGrid .

Tu peux prendre à titre d'exemple et décortiquer le module statsbestcategories (mais c'est arbitraire comme choix , en fait tu peux prendre n'importe lequel... )

Il existe principalement 3 phases :

- la première consiste à renseigner les champs hérités de la classe ModuleGrid , ex :

$this->_defaultSortColumn = 'totalPriceSold';
       $this->_emptyMessage = $this->l('Empty recordset returned');
       $this->_pagingMessage = $this->l('Displaying').' {0} - {1} '.$this->l('of').' {2}';

       $this->_columns = array(
           array(
               'id' => 'name',
               'header' => $this->l('Name'),
               'dataIndex' => 'name',
               'align' => 'left',
               'width' => 370
           ),
           array(
               'id' => 'totalQuantitySold',
               'header' => $this->l('Total Quantity Sold'),
               'dataIndex' => 'totalQuantitySold',
               'width' => 20,
               'align' => 'right' 
.....



phase suivante , il faut assembler tout ceci dans un tableau à transmettre au moteur :

        $engineParams = array(
           'id' => 'id_category',
           'title' => $this->displayName,
           'columns' => $this->_columns,
           'defaultSortColumn' => $this->_defaultSortColumn,
           'emptyMessage' => $this->_emptyMessage,
           'pagingMessage' => $this->_pagingMessage
       );



dernière phase, le rendu :

$render=ModuleGrid::engine($engineParams);



En front office tu peux donc outrepasser la phase 1 et simplement remplir le tableau à passer au moteur.

Ensuite pour afficher tout ça en pleine page , ton dossier de module doit contenir une page php comportant au minimum :

<?php
require_once(dirname(__FILE__).'/../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../init.php');



si tu veux afficher le header du site , tu ajoutes :

include(dirname(__FILE__).'/../../header.php');


etc...

Tu trouveras des exemple dans le dossier /controllers

si tu veux en plein mileu de page charger un modele tpl de ta page , tu peux appeler :

echo Module::display(dirname(__FILE__).'/mymodule', 'mymodulefull.tpl');



Ce qui sous entends bien sûr que tu as assigné le résultat de rendu dans une variable smarty et ajouté {render} dans ton tpl.

Ja dernière chose à vérifier est de charger dans le <head> les api javascript correspondantes au moteur de rendu choisi dans ta configuration...

Ca t'aide ?

Link to comment
Share on other sites

Whaow ! Super détaillé comme réponse, merci beaucoup !

Je vais donc m'atteler à regarder ça en détail. Je te tiens informé sur ce point dès que j'ai du nouveau.

Grand merci d'avoir pris le temps de préciser tout ça !

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...