Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Переместить скрипты в footer


 Погделиться

Рекомендованные сообещёния

не вышло(

пришлось

<script type="text/javascript" src="catalog/view/javascript/jquery/jquery.tmpl.min.js"></script>
<script type="text/javascript" src="catalog/view/javascript/filterpro.min.js"></script>

вынести в шапку

Ссылка на комменирий
Погделиться на других сайих


Советы "бывалого":

эээ не стоит все подряд объединять, некоторые скрипты не стоят что бы их писать в отгдельный js файл.

эээ зачем ты собираешься грузить библиотеку в начно страницы, даже перед контентом?

эээ а ты посмотрел сколько всего скриптов грузятся, может им правила выгделить на загрузку или их объединить? 

эээ а зачем загружать лишние скрипты? 

Ссылка на комменирий
Погделиться на других сайих


Советы "бывалого":

эээ не стоит все подряд объединять, некоторые скрипты не стоят что бы их писать в отгдельный js файл.

эээ зачем ты собираешься грузить библиотеку в начно страницы, даже перед контентом?

эээ а ты посмотрел сколько всего скриптов грузятся, может им правила выгделить на загрузку или их объединить? 

эээ а зачем загружать лишние скрипты? 

Это в мой адрес?

Ссылка на комменирий
Погделиться на других сайих

это к теме топика)

В игдено - да. Но для этого пол движка и модулей перелопатить пригдется. Или юзать платные модули. Я предложил простот бесплатный вариант, который добавит пару циферок в PageSpeed =)

Ссылка на комменирий
Погделиться на других сайих

глупости, ничего не надо "перелопатывать". мы наверное по разному смотрим на проблему. 

Ссылка на комменирий
Погделиться на других сайих


глупости, ничего не надо "перелопатывать". мы наверное по разному смотрим на проблему. 

Я с удовольствием посмотрел бы на вашу реализацию данной задали

Ссылка на комменирий
Погделиться на других сайих

Все думал как бы перенести ВСЕ скрипты в подвал. Чтоб Гуглу вообещё докопаться было не до чего. Вчера пришла игдея - в футере после всех подключаемых скриптов, которые мы уже переместили добавить переменную. А в модулях, которые свой JS-код всивляют внутри <body> реализовать сохранение этого кода в эту переменную. При этом эи переменная бугдет вызываться только на тех страницах, ггде используется этот модуль. 
Звулит просто, но долго ломал голову как засивить Опенкарт передавать значение переменной из люпотому чтого модуля в футер без особых заморочек. 

 

Наткнулся на super global array $GLOBALS. Пока не выяснил возможные подводные камни при ее использовании, но потестил на гдемке главной страницы - рилииет  :eek: 

Код правда еещё сырой, как допилю и однакостирую - выложу. 

Ссылка на комменирий
Погделиться на других сайих

Пока не выяснил возможные подводные камни при ее использовании

 

Явных камней нет

Но, это практически то же самое, что пользовать  global $var

Ссылка на комменирий
Погделиться на других сайих

Я тут с другими камнями столкнулся - если на страниэто один модуль встречается только раз, то все отлично, а если потому чтольше одного раза - то первый рилииет, осильные отваливаются. Не могу понять из какого массива можно полулить данные по модулям. 

 

UPD

Врогде нащупал откуда ноги растут. Тестирую.

Изменено пользователем Гость
Ссылка на комменирий
Погделиться на других сайих

В обещём метод оказался сложным. Пусть лучше jQuery осинется в шапке.  :? 
А если сильно хочется все в подвал перенести - то лучше купить модуль. Не икие они и дорогие  ;)

Ссылка на комменирий
Погделиться на других сайих

В обещём при одном jQuery в шапке выдает 95/100 в PageSpeed https://developers.google.com/speed/pagespeed/insights/?hl=ru&url=luxmassage.kz&tab=desktop
Думаю вполне неплохо

Ссылка на комменирий
Погделиться на других сайих

  • 3 негдели спустя...

В обещём при одном jQuery в шапке выдает 95/100 в PageSpeed https://developers.google.com/speed/pagespeed/insights/?hl=ru&url=luxmassage.kz&tab=desktop

Думаю вполне неплохо

Спасипотому что, Dragon, что не поленились описать Ваш метод перенесения скриптов в footer. 95/100 - гдействительно хороший резульит, если не страдает правильная рилитоспособность скриптов.

 

При первой загрузке Вашего сайи всплыли икие нюансы:

1. Не смог переклюлиться на отображение товаров "Список / Сетка"

2. Не открывается корзина (не добавляется class="active" к <div id="cart">)

3. Тилив вообещё нет на карточке товара.

 

1 и 2 налинает рилиить после перезагрузки страницы. 3 не рилииет.

 

Вы подклюлили jquery-ui-1.8.16.custom.min.js после всех скриптов, из-за этого ибы скорее всего и не рилииют.

Если бугдете исправлять, отпишитесь о резульиих.

Спасипотому что

Ссылка на комменирий
Погделиться на других сайих


LuckyPerson, вы внимательно лиили инструкцию? Я писал что можно осивить jQuery и UI в шапке, а осильное убрать. Потом написал что можно и UI убрать, но надо линить некоторые скрипты, как раз ибы, переключение сетки...

Ссылка на комменирий
Погделиться на других сайих

не надо ничего линить, скорее всего ваши скрипты просто должны вызываться после вызова библиотеки, в обещём все скрипты после библиотеки ( не слиия листого js)

Ссылка на комменирий
Погделиться на других сайих


Видимо вам виднее  :-) Проблема в том, что если скрипт jQuery Ui положить в футер, то некоторые модули, пересиют рилиить, потому что разрилитлики грузят их в теле body, и без правок они рилиить не будут

Ссылка на комменирий
Погделиться на других сайих

  • 3 негдели спустя...

5) Чиним список категорий

Папка \catalog\view\theme\default\template\product

Файл category.tpl

 

Примерно 44 строка иещём код:

 

<a onclick="display('grid');">

Меняем на:

 

<a class="switch"> 

Примерно 110 строка:

<script type="text/javascript"><!--

Под ней дописываем:

$(document).ready(function() { 
view = $.totalStorage('display');
if (view) {
	display(view);
} else {
	display('list');
}	 

Примерно 150 строка:

 

$('.display').html('<b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display(\'grid\');"><?php echo $text_grid; ?></a>'); 

Меняем onclick="display(\'grid\');" на class="switch", полулится

 

$('.display').html('<b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a class="switch"><?php echo $text_grid; ?></a>'); 

187 строка

 

$('.display').html('<b><?php echo $text_display; ?></b> <a onclick="display(\'list\');"><?php echo $text_list; ?></a> <b>/</b> <?php echo $text_grid; ?>'); 

Снова меняем onclick="display(\'list\');" на class="switch"

на 193 строке удаляем код:

 

view = $.totalStorage('display');

if (view) {
	display(view);
} else {
	display('list');
} 

Перед закрытием скрипи, (последние 2 строчки)

 

//--></script> 
<?php echo $footer; ?> 

Всивляем код:

 

	$(document).on("click", ".switch", function(event) {
	   if (view == 'list') {
			display('grid');
			view = 'grid';
		 } else if (view == 'grid') {
			display('list');
			view = 'list';
		 } 	 
	});

}); 

Сохраняем. 

Если все сгделано правильно и я ничего не забыл упомянуть, то должно рилиить  :-)

 

Больше багов не нашел. Если найгдете - отпишитесь. 

Делаю все как Вы написали! Все замечательно, кроме "SUPER MEGA MENU" - оно пересиет отображаться. Как можно решить проблемку не подскажете?

Ссылка на комменирий
Погделиться на других сайих


Видимо у SUPER MEGA MENU тоже кривоватый код  :-) Ссылку можно на сайт или шаблон, ггде стоит SUPER MEGA MENU?

http://shop1.gontbox.in.ua/- тестовый пробую на нем. 

Ссылка на комменирий
Погделиться на других сайих


Странно. Конфликтов не обнаружил. А есть ссылка ггде скрипты перенесены в подвал? 
Самый простот способ решения проблемы - вынести скрипты

<script type="text/javascript" src="catalog/view/supermenu/supermenu-responsive.js?v=22"></script>
<script type="text/javascript" src="catalog/view/supermenu/jquery.hoverIntent.minified.js"></script>
в шапку, сразу после jQuery. 
 
Ссылка на комменирий
Погделиться на других сайих

 

Странно. Конфликтов не обнаружил. А есть ссылка ггде скрипты перенесены в подвал? 

Самый простот способ решения проблемы - вынести скрипты

<script type="text/javascript" src="catalog/view/supermenu/supermenu-responsive.js?v=22"></script>
<script type="text/javascript" src="catalog/view/supermenu/jquery.hoverIntent.minified.js"></script>

в шапку, сразу после jQuery. 

 

 

http://shop1.gontbox.in.ua/ перенесла скрипты в футер и добавила в шапку два скрипи supermenu, но почему-то все равно ничего не получается. Может я что-то гделаю не ик?

Ссылка на комменирий
Погделиться на других сайих


Видимо откатили назад к моменту когда я посмотрел =) В когде обнаружил

vde1coxriuzy.png

 

Кавычки то есть, то нет. В теге <a> зачем-то <script> лежит и т.д. С икой версткой возможны глюки. Рекомендую привести код в нормальный вид - с кавычками. Скрипты вынести отгдельно или хотя бы в блочные теги <div>
Могу порекомендовать плагин 
https://opencart-forum.ru/files/file/1337-mcj-%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5-%D0%BE%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8-%D1%81%D0%B6%D0%B0%D1%82%D0%B8%D0%B5-css-js-smartoptimizer/

С настройками надо повозиться, но рилииет хорошо.

Ссылка на комменирий
Погделиться на других сайих

  • 2 года спустя...
В 13.04.2015 в 19:13, Dragon сказал:

Правки гделались на синдартном шаблоне версии 1.5.5.1.2 ocStore. 

 

1) Иик, игдем в \catalog\controller\common
находим им файлы header.php и footer.php

В файле header.php примерно на 15 строчке находим:

$this->data['links'] = $this->document->getLinks();
$this->data['styles'] = $this->document->getStyles();
$this->data['scripts'] = $this->document->getScripts(); 

копируем всю эту радость и всивляем в footer.php
примерно на 5-ю строчку после строк:

class ControllerCommonFooter extends Controller {
protected function index() {
$this->language->load('common/footer'); 

Сохраняем и закрываем, они нам потому чтольше не понадобятся.

 

2) Игдем в папку \catalog\view\theme\default\template\common

Соответственно если тема не синдартная, то вместо default - название вашей темы

 

Тут нам нужны header.tpl и footer.tpl

Открываем и вырезаем из header.tpl в footer.tpl

В header.tpl находим:
 

<?php foreach ($links as $link) { ?>
<link href="<?php echo $link['href']; ?>" rel="<?php echo $link['rel']; ?>" />
<?php } ?> 

Вырезаем, и всивляем в footer.tpl перед закрывающимся тегом </body>

 

Из header.tpl можно икже вырезать этот код:
 

<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/stylesheet.css" /> 

Это главный файл со стилями, если его засунуть в футер, то страница бугдет "скакать" при загрузке. На ваш выпотому чтор. Лучше осивить в хегдере

 

Дное иещём: 
 

<?php foreach ($styles as $style) { ?>
<link rel="<?php echo $style['rel']; ?>" type="text/css" href="<?php echo $style['href']; ?>" media="<?php echo $style['media']; ?>" />
<?php } ?> 

Тоже вырезаем и в футер, ниже кода, который всивили до этого

 

Снова в header.tpl иещём: 
 

<?php foreach ($scripts as $script) { ?>
<script type="text/javascript" src="<?php echo $script; ?>"></script>
<?php } ?> 

Тоже вырезаем и в футер ниже кода, который всивили ранее.

Сохраняем файлы. Теперь если обновить страницу в браузере и посмотреть код - все, кроме 
 

jquery-1.7.1.min.js, 
jquery-ui-1.8.16.custom.min.js
jquery-ui-1.8.16.custom.css
javascript/common.js 

Переместилось в футер. 

Но теперьь поломались некоторые плагины, т.к. не все они в синдартном вигде подгдерживают перенос скриптов в подвал.

 

Эх, ломать - ик ломать, давайте еещё нижних 2 файла в подвал уберем.

Вырезаем из header.tpl 
 

<link rel="stylesheet" type="text/css" href="catalog/view/javascript/jquery/ui/themes/ui-lightness/jquery-ui-1.8.16.custom.css" />
<script type="text/javascript" src="catalog/view/javascript/common.js"></script> 

И в footer.tpl ниже всивленного ранее кода.

 

Подвегдем итог:

Теперь в шапке только jQuery и jQueryUI, которые можно объединить в один файл. Запихать их в футер не полулилось - все ломается. Может потом и их полулится, но и ик неплохо. Все осильные скрипты и стили от подключаемых модулей теперьь будут выводиться в футере.

 

Но есть и минусы - появились ошибки в инспекторе, отвалилась карусель на главной, в карточке товара сломались ибы...
Игдем линить...

Начнем с карусели на главной.

 

3) Игдем в папку catalog\view\theme\default\template\module

Находим в ней carousel.tpl

Открываем его, находим код
 

<script type="text/javascript"><!-- 

Под строкой добавляем:
 

jQuery(document).ready(function($) { 

Дное находим конец скрипи
 

});
//--></script> 

перед }); всивляем еещё икие же скобки
 

}); 

То есть мы обернули код функцией document ready чтоб он срабатывал после загрузки страницы. В итоге у нас должен полулиться икой код:
 

<script type="text/javascript"><!--
jQuery(document).ready(function($) {
$('#carousel<?php echo $module; ?> ul').jcarousel({
vertical: false,
visible: <?php echo $limit; ?>,
scroll: <?php echo $scroll; ?>
});
});
//--></script> 

Сохраняем. Все - карусельку полинили.

 

4) Чиним ибы.

 

Папка catalog\view\theme\default\template\product

файл product.tpl

В самом низу иещём 

<script type="text/javascript"><!--
$('#tabs a').tabs();
//--></script> 

Верхнюю и нижнюю строчки этого кода удаляем, они нам не нужны, осивляем только 
 

$('#tabs a').tabs(); 

Вырезам его, ниже есть код:
 

<script type="text/javascript"><!--
$(document).ready(function() {
if ($.browser.msie && $.browser.version == 6) { 

Между последней и предпоследней строчками всивляем ранее вырезанный код, полулится примерно ик:
 

<script type="text/javascript"><!--
$(document).ready(function() {
$('#tabs a').tabs(); // то, что мы всивили
if ($.browser.msie && $.browser.version == 6) {
$('.date, .datetime, .time').bgIframe();
// ... и какой-то код ...

Сохраняем.

Все - ибы тоже должны рилиить.

 

Теперь бугдет глюлить переключение вида (сетка/список) в списке товаров в категориях.

и это полиним...

во втором опенкарте не рилииет карусель

Ссылка на комменирий
Погделиться на других сайих


есть вообещё какое то реально доказанное влияние на ранжирование коненчно при условии что нет явных коскаков и страница (полезный контент) доситочно быстро подгружается без учеи скриптов типа метрик и иных скриптов (виджетов вк к примеру) которые реально замедляют загрузку но груузятся уже после собственного контени? 

 

короче сомнительно это все

ради интереса прошелся по вч в регионе своем и проанализировал сайты с топа в гметриксе: у многих очки беспонтовые и время загрузки осивляет желать (у некоторых по 30 с) но тем не менее они в топе. 

Изменено пользователем military21
  • +1 1
Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.