Jump to content

Appeler un module dans le Back Office via un onglet


vins

Recommended Posts

Bonjour,
J'avais vu passer il y a qq temps une discussion à propos de l'accés à une classe module dans le backOffice via un onglet mais je ne la retrouve pas ...
QQ pourrait-il rapidement nous faire un topo à ce sujet ? La question que je me pose concerne surtout l'affichage du module dans le BO...
Merci.

Link to comment
Share on other sites

oui exactement. Je sais que celà avait été demandé par qq mais impossible de me souvenir qui...
je ne pense pas que la structure de classe module appelée soit la même...
bon si qq a une idée...
merci.

Link to comment
Share on other sites

  • 1 month later...

Petit UP, car je pense cette réponse intéresse pas mal de monde ;) !

J'ai regardé sur la 1.2 il y a un champ "Module" dans l'ajout d'un nouvel onglet ! ne serai-ce pas le nom du module en lui même ?

Mais alors quel classe choisir qui est obligatoire ?

Le système est-il réellement prévu pour cette usage ?

Link to comment
Share on other sites

Moi aussi, j'ai essayé d'en créer mais sans succès.

C'est dommage que personne, semble-t-il, ne sache nous expliquer clairement comment ça fonctionne.

Un back office, paramétrable de cette façon, ce serait une réelle plus value de Prestashop face à ses concurrents...

Link to comment
Share on other sites

Pour la création d'onglet avec des fonctions spécifiques qui relève de l'AdminTab c'est pas compliqué.

En revanche rendre accessible la configuration d'un module depuis un onglet, c'est effectivement pas simple d'emblée !

Je vais essayer de faire un corrélation de code entre l'AdminTab et les classes des modules !
mais je garantie rien !

Link to comment
Share on other sites

Aaaah Liandri, nous serions nombreux à te témoigner d'une gratitude infinie ;-)


Je garantie rien ! Mais c'est sur que si un membre de la team Presta pouvait nous donner quelques pistes, nos souhaits seraient déjà derrière nous !
Maintenant, ils peuvent pas passer en revu tous les posts :( je les comprends !
Link to comment
Share on other sites

J'ai un peu regardé hier soir vite fait ! et :/ j'ai pas eu de flash magique sur la mise en oeuvre !

en revanche il doit y avoir une astuce à faire avec une surcharge du constructeur de la classe du module par le constructeur de la classe AdminTab !

J'en sais trop rien en fait, et je ne veux pas m'avancer plus :(

Link to comment
Share on other sites

Bon ! Déjà merci beaucoup Julien pour ta contribution, elle est très détaillée !

Mais en fait, je pense pas qu'elle réponde à la question du topic de départ, car en fait c'est déjà le fonctionnement actuelle qui est d'écrit ! A la différence qu'il y a une automatisation de l'ajout de l'onglet très utile !
En fait ta proposition décrit tout simplement comment créer des AdminTab perso depuis une classe php supplémentaire qui est de toute façon la même que celle présente dans le répertoire /admin??/tab/

La demande est : Comment à partir du code d'un module (celui qui est développé pour la phase de configuration du module) peut-on lui ajouter un accès direct depuis les onglets de l'admin et non devoir faire modules > chercher son module qui peut être en bas de la longue liste > configurer.

Attention, je tiens à dire que ton tuto est tout de même une mine d'or pour ceux qui cherche des infos pour bien partir dans la conception perso.

A+

Link to comment
Share on other sites

Je dirai que bêtement, il suffit de copier/coller la méthode getContent() du module et de le mettre dans la méthode display(); d'un tab ???

Ou simplement :

<?php
// inclure le module
class AdminTutorial extends AdminTab
{
 public function display()
 {
   $module = new Tutorial;
   return $module->getContent();
 }
}
?>

Link to comment
Share on other sites

J'ai quelques p'tit soucis sur la mise en place de tout ça :/

si je peux faire une petite correction :

@copy(_PS_MODULE_DIR_.$this->name.'/logo.gif', _PS_IMG_DIR_.'t/'.$tabName.'.gif');


doit être remplacé par :

@copy(_PS_MODULE_DIR_.$this->name.'/logo.gif', _PS_IMG_DIR_.'t/'.$tabClass.'.gif');


car sinon il va copier l'image depuis 'array' :P du $tabName !

Sinon j'arrive pas à récupérer le getContent de ma classe module ! :(

j'ai mis ça :

include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php');
include_once(PS_ADMIN_DIR.'/../modules/monmodule/monmodule.php');

class AdminMonModule extends AdminTab
{
   public function display()
   {
       echo $this->l('Coucou');
       $module = new monmodule;
       return $module->getContent();
   }
}



Il m'affiche bien coucou dans le contenu de mon tab, mais il passe pas sur le getContent() :(

PS : Mon AdminMonModule.php est dans /modules/momodule/

Link to comment
Share on other sites

C'est good ! Je pense que l'auteur du topic peut le passer en résolu

Ca marche parfaitement.

Merci à julien qui nous a aussi donné une astuce d'installation et de désinstallation auto de l'onglet, plutot que de le mettre en manuel. Cette technique je vais maintenant l'appliquer pour tous mes futurs modules.

Bravo l'artiste, et je bookmark ton blog :P A+

Link to comment
Share on other sites

Super boulot !

Mais pour moi, béocienne en programmation, j'ai pas encore tout compris.

Je voudrais mettre le module "Lettre d'information" dans un onglet au lieu qu'il soit perdu dans la liste des modules actifs et inactif.

Keskejedoifér ???

J'ai essayé de copier/coller le code de Julien pour l'installation d'un onglet mais ça ne marche quand je fais un install avec ces lignes de code en plus ...

Quand je crée un onglet en reprenant la class "Blocknewsletter" et le module "Blocknewsletter", il affiche "onglet inexistant ...

Heeeellllppp

Link to comment
Share on other sites

Voici le module en pièce jointe ;)
Il te créera un nouveau sous onglet dans module : Newsletter ;)

EDITION:
Je vais bientôt créer une méthode setAcl($v, $e, $w, $d) afin que l'on puisse gérer les ACL (ou droits) dans les modules dès leur conception.
De cette façon, si on utilise pas le setAcel(...), on se retrouve avec tous les droits (se qui est le cas lorsque l'on doit faire un ">> Configurer" et si on l'utilise (le cas pour un module devenu onglet) avec les 4 méthodes setReadAcl(true / false), setDeleteAcl(true / false), setViewAcl(true / false), setEditAcl(true / false);

Voilà les amis, c'est tout pour aujourd'hui, je vais à la piscine !

newsletter_2_1.tar

Link to comment
Share on other sites

Magnifique Julien !
Je n'en demandais pas tant ...
Mille mercis !!!!!

Si l'on veut appliquer cela à d'autres modules existants, est-ce que si on adapte ton fichier AdminNewsletter.php et la ligne d'install du modulexxx.php, cela pourrait fonctionner ???

Link to comment
Share on other sites

Oui julien a répondu à ce qu'on attendait tous !

Je pense même qu'il vient d'offrir une porte ouverte supplémentaire à tous développeurs qui souhaitent finaliser leur module.
Donc juste un grand respect pour julien, et pour ma part, moi aussi ça sera un grand merci !

A vos claviers maintenant :)

Link to comment
Share on other sites

  • 4 weeks later...
  • 2 months later...

Un petit Up du sujet, pour la Team (j'ai aussi laissé un msg à Julien sur son blog)

Où en est-on de la traduction et du logo de fil d'ariane pour les admintab situé en module ?
Je suis sur une 1.2.5 et il me faut appliquer les conseils de Julien pour la traduction de l'AdminTab situé en module et de copier l'icone dans le répertoire img/t

Cela n'avait-il pas été résolu ?
Faut-il ouvrir un report dans le bug tracker ?

Merci
Olivier

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...