我正在为PrestaShop 1.5开发模块 Abc 这是我的目录
23/10/2012 18:23 1.307 index.php
07/12/2012 18:27 <DIR> tpl
-> tpl dir:
07/12/2012 18:27 <DIR> .
07/12/2012 18:27 <DIR> ..
07/12/2012 18:39 543 form.tpl
07/12/2012 18:36 4.507 abc.php
这是我使用的代码:
class Abc extends Module
{
public function getContent()
{
return $this->display(dirname(__FILE__), 'tpl/form.tpl');
}
...
}
然而,当我使用smarty {debug}
打印所有变量时
根据The official documentation,我不会像{i}}那样得到变量{img_dir}
或{shop_name}
。
我很困惑放置模板的位置,主题所在的位置等等。我只需要后台(后端)页面。我做错了什么?
谢谢
答案 0 :(得分:2)
Smarty变量具有全局范围。这意味着它们可以在一个文件中分配,并且您可以在脚本的所有生命周期中的任何位置使用它们。这样,当您在前端触发挂钩或使用自己的tpl时,无论您使用哪个控制器,最有可能(尽管可能存在覆盖控制器的异常),方法FrontController::init()
将被激活。在此方法中,大多数全局智能变量都已分配(http://doc.prestashop.com/display/PS15/Creating+a+PrestaShop+module#CreatingaPrestaShopmodule-UsingSmarty):
$assign_array = array(
'img_ps_dir' => _PS_IMG_,
'img_cat_dir' => _THEME_CAT_DIR_,
'img_lang_dir' => _THEME_LANG_DIR_,
'img_prod_dir' => _THEME_PROD_DIR_,
'img_manu_dir' => _THEME_MANU_DIR_,
'img_sup_dir' => _THEME_SUP_DIR_,
'img_ship_dir' => _THEME_SHIP_DIR_,
'img_store_dir' => _THEME_STORE_DIR_,
'img_col_dir' => _THEME_COL_DIR_,
'img_dir' => _THEME_IMG_DIR_,
'css_dir' => _THEME_CSS_DIR_,
'js_dir' => _THEME_JS_DIR_,
'pic_dir' => _THEME_PROD_PIC_DIR_
);
在管理面板中使用挂钩,FrontController::init()
不会被占用,而且您需要分配所有这些变量才能在文件中使用它们。
但是在管理面板中的任何位置,您都可以使用在方法Module::display()
中分配的module_dir和module_template_dir。
答案 1 :(得分:0)
如果您想将扩展配置表单/ html放在Prestashop的Modules选项卡中,那么更好/必要的是没有聪明,而且通常通过某些方法完成,例如displayForm with javascript,html等,以及公共方法getContent()你调用这个函数并返回显示那里所需的html。 Here is a old manual for simple extension for 1.4但你可以从中得到一个想法。
从1.5开始,也可以使用默认字段设置表单,就像在private function initForm()
中的编辑模块中一样能够在管理面板内部制作更难的内容(使用模板)我认为您需要create your own tab内部现有的create your own
在我所知的所有默认模块中,tpl css js文件(mymodule.tpl)用于显示前端的内容并应放入(这适用于1.5版本,在1.4中这些文件放在模块根文件夹中并且它仍然适用于许多核心模块)
/模块/ my_module /视图/模板/ {前|| ||钩管理员} /my_module.tpl
/模块/ my_module /视图/模板/ {前|| ||钩管理员} /my_module.css
/模块/ my_module /视图/模板/ {前|| ||钩管理员} /my_module.js
主题的前端功能(但假设对于管理员来说也是如此)应该像prestashop guide Overriding a module's behavior中那样覆盖