Prestashop 1.6.1.0 backoffice - Uncaught ReferenceError: jQuery is not defined
Prestashop 1.6.1.0 backoffice - Uncaught ReferenceError: jQuery is not defined
我对 prestashop 1.6.1.0
有疑问。在后台,当我打开开发人员控制台时,出现以下错误 Uncaught ReferenceError: jQuery is not defined
。我知道这是因为 admin.js
在 jQuery
.
之前加载
我花了一些时间来更改 Prestashop Backofffice
上的脚本层次结构,但我找不到文档底部末尾的脚本文件在哪里。
这是我的 javascript 层次结构的屏幕截图;
有谁知道我可以在哪里更改包含的 scripts
层次结构?
提前致谢。
### 编辑和更新###
在@Sergii P 的回答和评论之后,我开始在我的新主题模块中搜索解决方案。我的主题在我的 backoffice
中添加了一些新的 modules
。所以我在我的主题 controller
;
中找到了这个 override method
public function hookDisplayBackOfficeHeader() {
if (Tools::getValue('configure') == $this->name){
$this->context->controller->addJquery();
}
$this->context->controller->addCSS($this->_path.'assets/css/admin.css');
$this->context->controller->addJS($this->_path.'assets/js/admin.js');
}
我应该如何更改此方法?
这是后台的 header.tpl;
{if isset($css_files)}
{foreach from=$css_files key=css_uri item=media}
<link href="{$css_uri|escape:'html':'UTF-8'}" rel="stylesheet" type="text/css"/>
{/foreach}
{/if}
{if (isset($js_def) && count($js_def) || isset($js_files) && count($js_files))}
{include file=$smarty.const._PS_ALL_THEMES_DIR_|cat:"javascript.tpl"}
{/if}
{if isset($displayBackOfficeHeader)}
{$displayBackOfficeHeader}
{/if}
{if isset($brightness)}
<!--
// @todo: multishop color
<style type="text/css">
div#header_infos, div#header_infos a#header_shopname, div#header_infos a#header_logout, div#header_infos a#header_foaccess {ldelim}color:{$brightness}{rdelim}
</style>
-->
{/if}
默认情况下 jQuery 总是首先加载,
和后台脚本加载,您可以在 classes/controller/AdminController.php
方法 setMedia
中找到并且有:
$this->addJquery();
$this->addjQueryPlugin(array('scrollTo', 'alerts', 'chosen', 'autosize', 'fancybox' ));
$this->addjQueryPlugin('growl', null, false);
$this->addJqueryUI(array('ui.slider', 'ui.datepicker'));
Media::addJsDef(array('host_mode' => (defined('_PS_HOST_MODE_') && _PS_HOST_MODE_)));
$this->addJS(array(
_PS_JS_DIR_.'admin.js',
_PS_JS_DIR_.'tools.js',
_PS_JS_DIR_.'jquery/plugins/timepicker/jquery-ui-timepicker-addon.js'
));
首先是运行Controler::init()调用hookDisplayBackOfficeHeader(),之后是运行setMedia();在哪里添加 jq。
您需要调用addJquery();在 hookDisplayBackOfficeHeader() 中,
public function hookDisplayBackOfficeHeader()
{
$this->context->controller->addJquery(); //add jquery
$this->context->controller->addJs($this->_path.'views/js/js.js'); //add js
}
我对 prestashop 1.6.1.0
有疑问。在后台,当我打开开发人员控制台时,出现以下错误 Uncaught ReferenceError: jQuery is not defined
。我知道这是因为 admin.js
在 jQuery
.
我花了一些时间来更改 Prestashop Backofffice
上的脚本层次结构,但我找不到文档底部末尾的脚本文件在哪里。
这是我的 javascript 层次结构的屏幕截图;
有谁知道我可以在哪里更改包含的 scripts
层次结构?
提前致谢。
### 编辑和更新###
在@Sergii P 的回答和评论之后,我开始在我的新主题模块中搜索解决方案。我的主题在我的 backoffice
中添加了一些新的 modules
。所以我在我的主题 controller
;
override method
public function hookDisplayBackOfficeHeader() {
if (Tools::getValue('configure') == $this->name){
$this->context->controller->addJquery();
}
$this->context->controller->addCSS($this->_path.'assets/css/admin.css');
$this->context->controller->addJS($this->_path.'assets/js/admin.js');
}
我应该如何更改此方法?
这是后台的 header.tpl;
{if isset($css_files)}
{foreach from=$css_files key=css_uri item=media}
<link href="{$css_uri|escape:'html':'UTF-8'}" rel="stylesheet" type="text/css"/>
{/foreach}
{/if}
{if (isset($js_def) && count($js_def) || isset($js_files) && count($js_files))}
{include file=$smarty.const._PS_ALL_THEMES_DIR_|cat:"javascript.tpl"}
{/if}
{if isset($displayBackOfficeHeader)}
{$displayBackOfficeHeader}
{/if}
{if isset($brightness)}
<!--
// @todo: multishop color
<style type="text/css">
div#header_infos, div#header_infos a#header_shopname, div#header_infos a#header_logout, div#header_infos a#header_foaccess {ldelim}color:{$brightness}{rdelim}
</style>
-->
{/if}
默认情况下 jQuery 总是首先加载,
和后台脚本加载,您可以在 classes/controller/AdminController.php
方法 setMedia
中找到并且有:
$this->addJquery();
$this->addjQueryPlugin(array('scrollTo', 'alerts', 'chosen', 'autosize', 'fancybox' ));
$this->addjQueryPlugin('growl', null, false);
$this->addJqueryUI(array('ui.slider', 'ui.datepicker'));
Media::addJsDef(array('host_mode' => (defined('_PS_HOST_MODE_') && _PS_HOST_MODE_)));
$this->addJS(array(
_PS_JS_DIR_.'admin.js',
_PS_JS_DIR_.'tools.js',
_PS_JS_DIR_.'jquery/plugins/timepicker/jquery-ui-timepicker-addon.js'
));
首先是运行Controler::init()调用hookDisplayBackOfficeHeader(),之后是运行setMedia();在哪里添加 jq。
您需要调用addJquery();在 hookDisplayBackOfficeHeader() 中,
public function hookDisplayBackOfficeHeader()
{
$this->context->controller->addJquery(); //add jquery
$this->context->controller->addJs($this->_path.'views/js/js.js'); //add js
}