我对prestashop 1.6.1.0
有疑问。在我打开开发者控制台的后台,它给了我以下错误Uncaught ReferenceError: jQuery is not defined
。我知道这种情况正在发生,因为admin.js
在jQuery
之前加载。
我花了一些时间来更改Prestashop Backofffice
上的脚本层次结构,但我找不到脚本文件位于文档底部的末尾。
以下是我的javascript hierarachy的截图;
有谁知道我可以在哪里更改scripts
层次结构?
### EDIT&更新###
在@Sergii P的回答和评论之后,我开始在我的新主题模块中搜索解决方案。我的主题为modules
添加了一些新的backoffice
。所以我在主题override method
中找到了controller
;
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');
}
我该如何更改此方法?
这是backoffice的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}
答案 0 :(得分:0)
默认情况下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'
));
答案 1 :(得分:0)
首先运行Controler :: init()并在运行setMedia()之后调用hookDisplayBackOfficeHeader();在哪里添加jq。
你需要调用addJquery();在hookDisplayBackOfficeHeader(),
中 public function hookDisplayBackOfficeHeader()
{
$this->context->controller->addJquery(); //add jquery
$this->context->controller->addJs($this->_path.'views/js/js.js'); //add js
}