2016-03-01 1 views
0

Je travaille sur un développement de module personnalisé prestashop, mon idée est de créer un module d'export personnalisé, je suis capable d'installer le module et d'ajouter le menu sous le menu catalogue. le seul problème est lors de l'installation des fichiers tpl ne copiant pas dans le dossier du modèle d'administration? Devrions-nous copier ces vues avec la méthode de copie dans la section d'installation du module?Module admin Prestashop tpl question

dans mon contrôleur, je suis en train de charger le fichier tpl de

public function initContent() { 
     parent::initContent(); 
     $smarty = $this->context->smarty; 
     $smarty->assign('test', 'test1'); 
     $this->setTemplate('wwmexport/wwmexport.tpl'); 


    } 

Ce fichier chemin est existe pas après l'installation du module $this->setTemplate('wwmexport/wwmexport.tpl'); lorsque je crée manuellement tout fonctionne bien.

J'ai besoin de savoir s'il existe une option pour charger le tpl de mon chemin de module quelque chose comme ci-dessous.

return $this->display(_PS_MODULE_DIR_ . 'wwmexport/views/templates/admin/wwmexport.tpl'); 

mais qui ne fonctionne pas :(

Ma structure du module est la suivante.

wwmexport 
    controllers 
    admin 
    Adminwwmcontroller.php 
    views 
    templates 
     admin 
      wwmexport.tpl 

    wwmexport.php 
fichier contrôleur

ont

class AdminWwmExportController extends AdminController { 

    protected $module; 

    public function __construct() { 

     parent::__construct(); 

    } 

    public function display() { 

     parent::display(); 

    } 


    public function initContent() { 

     if (Tools::getValue('method') != "") { 
      $method = Tools::getValue('method'); 
      $this->$method(); 
     } 

     parent::initContent(); 
     /*$smarty = $this->context->smarty; 
     $smarty->assign(array('test', 'test1'));*/ 
     //$this->setTemplate('wwmexport.tpl'); 
     global $smarty; 
     $smarty->display(_PS_MODULE_DIR_ . 'wwmexport/views/templates/admin/wwmexport.tpl'); 

    } 
} 

mon dossier Module wwmexport.php comme suit.

class WwmExport extends Module { 

    public function __construct() { 
     $this->name = 'wwmexport'; 
     $this->tab = 'export'; 
     $this->version = '1.0.0'; 
     $this->author = 'Jobin Jose'; 
     $this->need_instance = 0; 
     $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); 
     $this->bootstrap = true; 

     parent::__construct(); 

     $this->displayName = $this->l('Export'); 
     $this->description = $this->l('Custom Export Features for Products'); 
     $this->confirmUninstall = $this->l('Are you sure you would like to uninstall?'); 
    } 

    public function install($delete_params = true) { 

     if (!parent::install() 
      /*|| !copy(_PS_MODULE_DIR_ . 'wwmexport/views/templates/admin/wwmexport.tpl', _PS_ADMIN_DIR_ . '/themes/default/template/wwmexport.tpl')*/ 
      || !$this->installModuleTab('AdminWwmExport', array(1 => 'Product Export'), 9) 
     ) { 
      return false; 
     } 

     return true; 
    } 

    public function uninstall() { 
     if (!parent::uninstall() 
      || !$this->uninstallModuleTab('AdminWwmExport')) { 
      return false; 
     } 

     return true; 
    } 

    private function installModuleTab($tabClass, $tabName, $idTabParent) { 
     $tab = new Tab(); 

     $tab->name = $tabName; 

     $tab->class_name = $tabClass; 

     $tab->module = $this->name; 

     $tab->id_parent = $idTabParent; 

     if (!$tab->save()) { 
      return false; 
     } 

     return true; 

    } 

    private function uninstallModuleTab($tabClass) { 
     $idTab = Tab::getIdFromClassName($tabClass); 

     if ($idTab != 0) { 

      $tab = new Tab($idTab); 

      $tab->delete(); 

      return true; 

     } 

     return false; 

    } 

} 

Résolu

réécrire le initContent() comme suit.

public function initContent() {  

     parent::initContent(); 
     $smarty = $this->context->smarty; 
     $content = $smarty->fetch(_PS_MODULE_DIR_ . 'wwmexport/views/templates/admin/wwmexport.tpl'); 
     $this->context->smarty->assign(array('content' => $this->content . $content)); 

    } 

Répondre

1

il travaille pour moi

$this->display(__FILE__ , 'views/templates/admin/wwmexport.tpl'); 
+0

merci pour votre anwser, mais il ne fonctionne pas pour moi. quand je vous mets un échantillon de code, il montre la zone de contenu vide, aussi les menus d'administration de côté gauche montre deux fois? une idée ? –

+0

Où est votre code? dans le fichier principal du module ou dans AdminController? vous pouvez poster la structure de votre module? – Matteo

+0

Je viens de le remarquer montrant dans la source de la page avant la balise html quand j'utilise le code ci-dessous 'global $ smarty; $ Smarty-> display (_PS_MODULE_DIR_. 'Wwmexport/views/templates/admin/wwmexport.tpl'); ' –