Prestashop 1.6创建管理模块

时间:2015-06-18 18:31:50

标签: module admin prestashop

您好我尝试创建一个管理模块prestashop 1.6但我发现了一些问题。

我会在主菜单中创建(在模块安装后)一个新选项卡,点击它之后我会显示一个模板(.tpl),管理员用户可以在Db上做一些事情。

我已创建一个文件夹并将其插入模块文件夹中,在此文件夹中有以下文件:

  • 控制器>管理员> AdminGcbulkController.php
  • gcbulk.tpl
  • gcbulk.php

gcbulk.php:

<?php
    if (!defined('_PS_VERSION_'))
        exit;

require(dirname(__FILE__) . '/gcbulk_header.class.php');

class gcbulk extends Module {

private $page_name = '';

public function __construct() {
    $this->name = 'gcbulk'; // il nome del modulo (lo stesso del file principale)
    $this->tab = 'others'; // sezione in cui va inserito
    $this->version = 0.1;
    $this->author = 'Autore';
    $this->need_instance = 0;
    /*
     * need_instance specifica se un istanza del modulo deve essere caricata
     * quando viene visualizzata la lista dei moduli
       (di norma può essere lasciato a 0)   
     */

    parent::__construct();

    $this->displayName = $this->l('Bulk');
    $this->description = $this->l('Modulo Bulk');

    $this->context->controller->addCSS(($this->_path).'gcbulk.css', 'all');
    //$this->context->controller->addJS(($this->_path).'js/gc_bulk_script.js');

}

public function install() {

    // Install Tabs
    $parent_tab = new Tab();
    // Need a foreach for the language
    $parent_tab->name[$this->context->language->id] = $this->l('Bulk tab');
    $parent_tab->class_name = 'AdminGcbulk';
    $parent_tab->id_parent = 0; // Home tab
    $parent_tab->module = $this->name;
    $parent_tab->add();

    if (!parent::install()
        || !$this->registerHook('admingc')
    );
}

public function uninstall() {
    // Uninstall Tabs
    $tab = new Tab((int)Tab::getIdFromClassName('AdminGcbulk'));
    $tab->delete();

    // Uninstall Module
    if (!parent::uninstall())
        return false;
    return true;
}

public function hookadmingc(){

    $this->smarty->assign(array(
        'ciao' => 'hola'
    ));

    return $this->display(__FILE__, 'gcbulk.tpl');
}
}
?>

控制器&gt;管理员&gt; AdminGcbulkController.php

<?php

class AdminGcbulkController extends ModuleAdminController
{

}

gcbulk.tpl包含简单的html。

tab的创建工作正常,但我不知道如何在clik之后显示.tpl。 Actualy在管理内容右侧返回一个空白页面(左边是menù)

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

控制器应该实现renderList,如下所示:

public function renderList() {
        $return = $this->context->smarty->fetch(_PS_MODULE_DIR_ . '/gcbulk/gcbulk.tpl');             
    return $return;
}  

我建议你将你的tpl移到这个文件夹中:/gcbulk/views/templates/admin/gcbulk.tpl

答案 1 :(得分:0)

class AdminGcbulkController extends ModuleAdminController {

    public function __construct() {
        $this->bootstrap = true;
        $this->lang = (!isset($this->context->cookie) || !is_object($this->context->cookie)) ? intval(Configuration::get('PS_LANG_DEFAULT')) : intval($this->context->cookie->id_lang);

        parent::__construct();
    }

    public function display() {

        parent::display();
    }

    public function renderList() {
            $return = $this->context->smarty->fetch(PS_MODULE_DIR . '\adminyourmodule.tpl');             
        return $return;
    }  
}