TemplateMonster #43373: Как устранить сбои JavaScript на витрине и ускорить загрузку витрины слиянием клиентских файлов JavaScript и CSS?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

04.12.2014 14:24

Описание сбоя:
  • Оформительская тема: TemplateMonster #43373
  • Место сбоя: открытие большинства витринных страниц магазина (например, страницы списка товаров).
  • Диагностическое сообщение:
    в консоли браузера:
    • Firefox:
      • «TypeError: jQuery(...).easyTooltip is not a function»
      • «TypeError: jQuery(...).jcarousel is not a function»
    • Chrome: «Uncaught TypeError: undefined is not a function»
    • Internet Explorer:
      • «SCRIPT438: Object doesn't support property or method 'easyTooltip'»
      • «SCRIPT438: Object doesn't support property or method 'jcarousel'»
  • Причина сбоя: дефект оформительской темы TemplateMonster #43373.
  • Аналогичные сбои других оформительских тем: 4090, 4132, 4458.

Способ устранения сбоя:
  • Правки для файла app/design/frontend/default/theme454/template/page/html/head.phtml:
    • Удалите код:
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/jquery-1.7.min.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/jquery.jscrollpane.min.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/jquery.modal.1.4.1.min.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/jquery.mousewheel.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/mwheelIntent.js') ?>"></script>
      
      
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/scripts.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/jquery.prettyPhoto.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/jquery.color.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/jqtransform.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/easyTooltip.js') ?>"></script>
      <script type="text/javascript" src="<?php echo $this->getSkinUrl('js/jquery.jcarousel.min.js') ?>"></script>
    • Найдите код
      <?php echo $this->getCssJsHtml() ?>
      Вырежьте его и перенесите вверх, разместив этот код перед расположенным выше кодом кодом
      <script type="text/javascript">
      $(function(){
      var titles = $$('.welcome-msg');
      titles.each(function(n){ 
          var line = n.innerHTML.split(' ');
          line[0] = '<span>' + line[0] + '</span>'; 
          var result_string = '';
          line.each(function(m){
              result_string += m + ' ';
          }) 
          n.innerHTML = unescape(result_string); 
      })
      
      }); 
      
      </script>

  • Добавьте в файле app/design/frontend/default/theme454/layout/page.xml внутри тега <block type="page/html_head" name="head" as="head"> за всеми другими правилами внутри этого тега, в самом конце (примерно строка 63) следующий код:
    <action method='addItem'><type>skin_js</type><name>js/jquery.jscrollpane.min.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/jquery.modal.1.4.1.min.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/jquery.mousewheel.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/mwheelIntent.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/scripts.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/jquery.prettyPhoto.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/jquery.color.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/jqtransform.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/easyTooltip.js</name></action>
    <action method='addItem'><type>skin_js</type><name>js/jquery.jcarousel.min.js</name></action>

  • Необязательно для устранения сбоя, но ускоряет отображение страниц магазина посетителям.
    Включите стандартное для Российской сборки Magento объединение файлов CSS и JavaScript, указав «да» значением следующих опций:
    • «Система» → «Настройки» → «НАСТРОЙКИ ПОВЫШЕННОЙ СЛОЖНОСТИ» → «Для разработчика» → «Настройки JavaScript» → «Объединить файлы JavaScript»
    • «Система» → «Настройки» → «НАСТРОЙКИ ПОВЫШЕННОЙ СЛОЖНОСТИ» → «Для разработчика» → «Настройки CSS» → «Объединить файлы CSS»


Поделиться темой: