我试图将Fotolia Api与Prestashop 1.6.0.9整合。
我已经使用自定义选项卡制作模块,但我不知道如何从该选项卡的模块文件夹中设置视图。很抱歉,但"开发人员的文档" SUCKS。 我无法找到任何可行的解决方案。
public function install() {
if (!parent::install()
|| !$this->registerHook('backOfficeHeader')
|| !$this->registerHook('header')
) return false;
$tab = new Tab();
$tab->class_name = 'AdminFotoliaSelector';
$tab->id_parent = 0;
$tab->module = $this->name;
$tab->name[(int)(Configuration::get('PS_LANG_DEFAULT'))] = 'Fotolia Selector';
$tab->add();
return true;
}
制作合适的控制器我遇到了很大问题,现在我无法加载任何东西/我不知道怎么做。
<?php
if (!defined('_PS_VERSION_'))
exit;
class AdminFotoliaSelectorController extends ModuleAdminController {
public $name;
public function __construct() {
$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 initContent() {
parent::initContent();
$this->renderForm();
}
public function renderForm() {
$path = _MODULE_DIR_."fotoliaselector";
$more = $this->module->display($path, 'views/templates/admin/fotoliaselector.tpl');
return $more.parent::renderForm();
}
当我尝试死($ more)时,它给了我.tpl的内容,无论如何,当我点击后台的标签时,它仍然是空的。 我有调试选项,编译,缓存关闭。
所以,请让我高兴,我如何在那里展示任何东西?
答案 0 :(得分:0)
我认为问题在于您根本不显示标签的内容。
我不知道module->display
方法的作用,但我认为您应该在initContent()
方法行中进行更改:
$this->renderForm();
到
echo $this->renderForm();
如果它没有帮助你应该看看这个documentation并尝试在没有外部类的情况下进行 - 只尝试使用Smarty显示简单内容而不使用Tab
类或{{1} }
答案 1 :(得分:0)
嗯,我知道这听起来很奇怪,但你需要拿一些类似的模块,并阅读他的代码,并会看到每个模块中的一些方法名称相同。
然后复制,安装和播放一些更改等。
你错过了标准方法 getContent()表单,你需要为smarty传递一些数据:
public function getContent()
{
global $smarty, $cookie;
......
//some code
......
$this->_html .= '<script type="text/javascript" src="'.__PS_BASE_URI__.'js/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>';
$this->_html .= '<h1>My module title or stuff</h1>';
$this->_html .= $this->getMyCoolFormOrConfig();
$smarty->assign('errors', $this->errors);
$smarty->assign('message', $this->message);
$this->_html .= $this->display(__FILE__, 'name_of_tpl_file.tpl');
return $this->_html;
}
在BackOffice代码中添加标签,如下所示:
$id_tab=Tab::getIdFromClassName('AdminPayment');
$newtab=new Tab();
$newtab->id_parent=$id_tab;
$newtab->module=$this->name;
$newtab->class_name='MyClassName'; //will be same like MyClassName.php in folder of you module where you need to create you class and extend the AdminTab and from there with function you need to echo you name module
$newtab->position=Tab::getNbTabs($id_tab)+1;
$newtab->name[$cookie->id_lang]=$this->l("Name of you stuff");
$newtab->name[Configuration::get('PS_LANG_DEFAULT')]=$this->l("Name of you stuff");
$newtab->add();
在那里研究这个文件 /controllers/admin/AdminModulesController.php 并且您会看到每个模块中使用的方法
看一下更大的功能来生成模块结构(注册重新加入)https://validator.prestashop.com/generator