2015-11-06 2 views
1

У меня проблема с prestashop 1.6.1.0. В backoffice, когда я открываю консоль разработчика, он дает мне следующую ошибку: Uncaught ReferenceError: jQuery is not defined. Я знаю, что это происходит, потому что admin.js загрузка до jQuery.Prestashop 1.6.1.0 backoffice - Uncaught ReferenceError: jQuery не определен

Я потратил некоторое время на изменение иерархии сценариев на Prestashop Backofffice, но я не смог найти, где находятся файлы сценариев, расположенные в конце нижней части документа.

Вот скриншот моего javascript hierarachy;

enter image description here

Кто-нибудь знает, где я могу изменить включенную scriptsиерархию?

Thx заранее.

### EDIT & UPDATE ###

После ответа и комментарии @Sergii P «s, я начинаю искать в модулях моей новой темой для решения. Моя тема добавила несколько новых 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'); 
    } 

Как мне изменить этот метод?

И вот header.tpl для backoffice;

{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

по умолчанию JQuery всегда загружается первым, и BackOffice сценарии загрузки можно найти в 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' 
     )); 
+0

На самом деле у меня есть новая тема, и она добавляет ее собственный admin.js в начало документов. – HddnTHA

+0

Тема backoffice вы имеете в виду? затем проверьте 'header.tpl' в этой теме, и если admin.js hardcoded там просто поместите его, например. перед тегом ''. Я имею в виду, что я не вижу никаких способов поставить admin.js над jQuery - или изменить/переопределить основные файлы или путь hardcode в tpl (я исключил экзотические варианты, такие как создание html-узла из js), если у вас все еще есть проблемы, я вижу связанную часть html + header.tpl темы backoffice –

+0

i'vde обновил мой вопрос с помощью скриншота иерархии js. – HddnTHA

0

Первый работают Controler :: Init() и есть вызов hookDisplayBackOfficeHeader(), после запуска setMedia(); где добавляется jq.

Вам необходимо вызвать addJquery(); in hookDisplayBackOfficeHeader(),

public function hookDisplayBackOfficeHeader() 
{ 
    $this->context->controller->addJquery(); //add jquery 
    $this->context->controller->addJs($this->_path.'views/js/js.js'); //add js 
} 
Смежные вопросы