在我的文件模块中
class Mymodule extends Module
{
public function install()
{
...
$this->installModuleTab('AdminMymodule', array(1=>'My Module Admin Tab'), 13)
}
private function installModuleTab($tabClass, $tabName, $idTabParent)
{
$tab = new Tab();
$tab->name = $tabName;
$tab->class_name = $tabClass;
$tab->module = $this->name;
$tab->id_parent = $idTabParent;
$tab->active = 1;
if(!$tab->save())
return false;
return true;
}
}
它工作,管理标签:'我的模块管理标签'已创建。现在,在文件AdminMymodule中:
include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php');
class AdminMymodule extends AdminTab
{
public function __construct()
{
parent::__construct();
}
public function display()
{
echo $this->l('This is admin my module tab !');
}
}
当我点击链接“我的模块管理标签”时,结果为空白页面。有人可以帮帮我吗?
答案 0 :(得分:1)
prestashop管理员标签中的每个标签都是管理员控制器。 您需要将管理控制器文件放在模块中 像mymodule \ controllers \ admin \ AdminAboutUsController.php 在你需要放置的控制器内:
class AdminAboutUsController extends ModuleAdminController {
public $asso_type = 'shop';
public function __construct() {
$this->module = 'mymodule';
$this->lang = true;
$this->context = Context::getContext();
$this->bootstrap = true;
parent::__construct();
}
public function initContent()
{
}
}
模块创建中的类名是
'class_name' => 'AdminAboutUs',
希望这有助于您找到解决方案。
答案 1 :(得分:0)
是的,你可以在这样的模块中添加一个标签。
我们以模块homeslider
为例。
首先在controllers/admin/AdminHomeSliderController.php
中创建控制器
并把这段代码:
<?php
class AdminHomeSliderController extends ModuleAdminController
{
public function __construct() {
$token = Tools::getAdminTokenLite('AdminModules');
$currentIndex='index.php? controller=AdminModules&token='.$token.'&configure=homeslider&tab_module=front_office_features&module_name=homeslider';
parent::__construct();
Tools::redirectAdmin($currentIndex);
}
}
并在模块文件homeslider.php
中,
添加这两个功能:
private function createInnovativesLabsTabs() {
$langs = Language::getLanguages();
$id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$ndiaga_tab = new Tab();
$ndiaga_tab->class_name = 'AdminHomeSlider';
$ndiaga_tab->module = 'homeslider';
$ndiaga_tab->id_parent = 0;
foreach($langs as $l){
$ndiaga_tab->name[$l['id_lang']] = $this->l('HomeSlider');
}
$ndiaga_tab->save();
$tab_id = $ndiaga_tab->id;
@copy(dirname(__FILE__).'/AdminHomeSlider.gif',_PS_ROOT_DIR_.'/img/t/AdminHomeSlider.gif');
Configuration::updateValue('HOME_SLIDER_TAB_ID',$tab_id);
return true;
}
public function deleteInnovativesLabsTabs(){
$tab = new Tab(Configuration::get('HOME_SLIDER_TAB_ID'));
$tab->delete();
Configuration::deleteByName('HOME_SLIDER_TAB_ID');
return true;
}
您需要在安装和卸载过程中调用它们:
//install
$this->createInnovativesLabsTabs();
//uninstall
$this->deleteInnovativesLabsTabs();
答案 2 :(得分:-1)
您必须创建后台控制器。在您的模块文件夹中,这将是结构
controllers/admin/AdminModuleName.php
此文件类必须命名为
class AdminmodulenameController extends ModuleAdminController.
您可以选择在安装模块时添加它,或者您可以从管理菜单手动添加它。您可以在prestashop文档(Creating a PrestaShop module)
中找到扩展说明