Автор Тема: Скрипт JS FancyBox из чанка  (Прочитано 9465 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dyadka74

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
  • Версия modx: 1.0.8
Скрипт JS FancyBox из чанка
« : 28 Февраль 2013, 19:15:04 »
Есть код вызова скрипта FancyBox, если прописать все это в HEAD, то работает прекрасно, но стоит только перенести это в отдельный чанк, так все перестает работать. В какую сторону копать?
<script type="text/javascript" src="/assets/js/fancybox/jquery.mousewheel-3.0.6.pack.js"></script>
<script type="text/javascript" src="/assets/js/fancybox/jquery.fancybox.js"></script>
<script>
  $(document).ready(function(){
      $("#popup").fancybox({
      });
  });
</script>
<link rel="stylesheet" type="text/css" href="/assets/js/fancybox/jquery.fancybox.css" media="screen" />
« Последнее редактирование: 28 Февраль 2013, 19:16:41 от Dyadka74 »

Оффлайн una

  • Разработчик
  • *****
  • Сообщений: 582
    • Просмотр профиля
  • Версия modx: evo, revo
Re: Скрипт JS FancyBox из чанка
« Ответ #1 : 28 Февраль 2013, 20:49:17 »
Все галереи, с которыми я имела дела (порядка 10 разных), все требуют прописи именно в head. А для чего непременно нужно вынести в чанк?

Оффлайн Dyadka74

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
  • Версия modx: 1.0.8
Re: Скрипт JS FancyBox из чанка
« Ответ #2 : 28 Февраль 2013, 21:08:08 »
Ну вообще проще редактировать скрипт в чанке, чем в общей шапке (((. Там и так много скриптов, конкретно такой проблемы такой в поиске не нашел. Нашел только что скрипт вроде как должен работать из чанка. И еще, тут на днях поставил сборку от Dmi3yy, там та же галерея вынесена в чанк, но и там не могу её запустить.

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Скрипт JS FancyBox из чанка
« Ответ #3 : 28 Февраль 2013, 22:31:12 »
Первый раз слышу, чтобы скрипты прописывались ТОЛЬКО в заголовке. Это только с G+ было, а в FancyBox, ColorBox и других я прописывал и прописываю в КОНЦЕ страницы - быстрее отображается страница.


Ошибка мне кажется в том, что перед assets вы ставите / и из-за этого получается кака. Уберите и проверьте.


Теперь по поводу чанков. Есть очень хорошее исследования Agel_Nash, где он сравнивает на Рево использование чанков и внесение кода в шаблон. Результаты довольно интересные. Вот вам ссылка - читайте.


О том, как готовят чанки в MODX Revolution




Я лично проверил это на Ево.  Я позволю себе процитировать кусок письма ему из лички:
Цитировать (выделенное)
Вот я и решил чутка увеличить производительность. Буду приводить тебе примеры с цифрами. Делал замеры на локалке — так заметнее разница. На продакшене, кстати, скорость лучше, но не на много.[/size]1 итерация. Заменил пару чанков на куски кода — они хоть и используются во всех 4 шаблонах, но статические.Цифры 0,0675/67/0,283/0,3508/base (время Мускуля, запросы, работа php, генерация страницы, откуда)2 итерация. Заменил еще 4 чанка на кода, убрал вложенные чанки (типа чанк-сайдбар-чанки-виджетов) — 0,0645/67/0,2718/0,3363/база3 итераци начал удалять служебные теги типа [(site_name)] — удалил в заголовке и футере. А тут уже интереснее 0,0468/63/0,2541/0,3009/базаВыводы:1. походу в ево чанки гребутся в память все одним вызовом и уже потом распарсиваются. Потому что не смотря на уменьшение времени генерации страницы, количество запросов в базу не падает. А вот время работы скрипта уменьшается.2. все ошибочные вызовы чанков дают существенный прирост времени. Хотя и не сильно критично, но они отъедают около 0,05-0,1 секунды на 3-5 вызовов с ошибкой. Так что стоит смотреть внимательно на ошибочные вызовы и «впрок их не делать».3. а вот с использованием всяких тегов модэкса стоит очень осторожно относиться — вот они дают запросы в базу и существенно увеличивают время генерации страницы. Так что понятно кодировка — пиши utf-8, а не универсальный тег. Тоже самое и с названием сайта. Ну и я видел когда в конфигурацию выводится дополнительные поля — из той же оперы. Лучше не использовать без нужды.4. ну и для себя вывел — чанки использовать можно и нужно для улучшения чтения кода. Не так уж в Ево они критичны. Но думать нужно и вызывать один в другом и все в третьем — так лучше не делать, а делать по необходимости. Допустим выносить большие кода скриптов, бить на модули, которые потом будут меняться. Ну а уж делать сайдбары с блоками — тут лучше делать через сниппет с ветвлением.Единственное, я пока не понял — стоит ли выносить некоторые вспомогательные чанки в файлы — типа шаблонов для дитто, вайфайндера или для самописных сниппетов. И как это отразится на производительности.
[/color]



Так что выводы делайте сами.

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Скрипт JS FancyBox из чанка
« Ответ #4 : 28 Февраль 2013, 22:32:20 »
Блин, текст стал абсолютно не читабельным. Попробую как код вставить
Вот я и решил чутка увеличить производительность. Буду приводить тебе примеры с цифрами. Делал замеры на локалке — так заметнее разница. На продакшене, кстати, скорость лучше, но не на много.

1 итерация. Заменил пару чанков на куски кода — они хоть и используются во всех 4 шаблонах, но статические.
Цифры 0,0675/67/0,283/0,3508/base (время Мускуля, запросы, работа php, генерация страницы, откуда)

2 итерация. Заменил еще 4 чанка на кода, убрал вложенные чанки (типа чанк-сайдбар-чанки-виджетов) — 0,0645/67/0,2718/0,3363/база

3 итераци начал удалять служебные теги типа [(site_name)] — удалил в заголовке и футере. А тут уже интереснее 0,0468/63/0,2541/0,3009/база

Выводы:
1. походу в ево чанки гребутся в память все одним вызовом и уже потом распарсиваются. Потому что не смотря на уменьшение времени генерации страницы, количество запросов в базу не падает. А вот время работы скрипта уменьшается.

2. все ошибочные вызовы чанков дают существенный прирост времени. Хотя и не сильно кретично, но они отъедают около 0,05-0,1 секунды на 3-5 вызовов с ошибкой. Так что стоит смотреть внимательно на ошибочные вызовы и «впрок их не делать».

3. а вот с использованием всяких тегов модэкса стоит очень осторожно относиться — вот они дают запросы в базу и существенно увеличивают время генерации странцы. Так что понятно кодировка — пиши utf-8, а не универсальный тег. Тоже самое и с названием сайта. Ну и я видел когда в конфигурацию выводится дополнительные поля — из той же оперы. Лучше не использовать без нужды.

4. ну и для себя вывел — чанки использовать можно и нужно для улучшения чтения кода. Не так уж в Ево они критичны. Но думать нужно и вызывать один в другом и все в третьем — так лучше не делать, а делать по необходимости. Допустим выносить большие кода скриптов, бить на модули, которые потом будут меняться. Ну а уж делать сайдбары с блоками — тут лучше делать через сниппет с ветвлением.

Единственное, я пока не понял — стоит ли выносить некоторые всспомогательные чанки в файлы — типа шаблонов для дитто, вайфайндера или для самописных сниппетов. И как это отразится на производительности.

Оффлайн Dyadka74

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
  • Версия modx: 1.0.8
Re: Скрипт JS FancyBox из чанка
« Ответ #5 : 01 Март 2013, 08:04:17 »
Знак "/" перед assets роли не играет. Проверил.

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Скрипт JS FancyBox из чанка
« Ответ #6 : 01 Март 2013, 15:14:21 »
http://pamyatniki58.ru/
Вот на этом сайте я подключал галерею FancyBox. Кстати первый раз, обычно пользуюсь ColorBox. Сайт еще не наполнен, работа только началась.

Вот чанк head
 
<meta charset="UTF-8">
<title>[*title*]</title>
<link rel="stylesheet" href="thema/css/all.css">
<meta name="keywords" content="[*keyw*]"> 
<meta name="description" content="[*desc*]">
[*noIndex*]
<base href="[(site_url)]"/>
<link rel="stylesheet" type="text/css" href="/assets/js/fancybox/jquery.fancybox.css" media="screen" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico"/>

А вот чанк  footer
<div class="footer">
  <div class="footer-holder">
    <div class="counter">
      <!-- Сюда вставляй код из LiveInternet счетчика-->
      <img src="thema/images/counter.gif" alt="image description" width="162" height="22" /></div>
    <div class="alignright">
      <a href="http://barkov.biz/" class="alignright"><img src="thema/images/img-02.png" alt="image description" width="71" height="28" /></a>
      <span class="copy">Поддержка. <a href="http://barkov.biz/">Разработка сайтов</a> studio Barkov.biz</span>
    </div>
  </div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script type="text/javascript" src="/assets/js/fancybox/jquery.mousewheel-3.0.6.pack.js"></script>
<script type="text/javascript" src="/assets/js/fancybox/jquery.fancybox.js"></script>
<script>
  $(function(){
      $("a[rel=group]").fancybox({'padding':'3px','transitionIn' : 'none','transitionOut': 'none'});
  });
</script>
<!--  Mem : [^m^], MySQL: [^qt^], [^q^] request(s), PHP: [^p^], total: [^t^], document from [^s^]. -->

Как видите, все прекрасно работает если вставить в самый конец страницы.

У вас я не вижу вызова jquery.js, который должен быть обязательно перед вызовом FancyBox. А вообще, попробуйте в Chrome в консоли посмотреть ошибки - там пишет ошибки если пути не правильные и что-то не находит.

Оффлайн Dolce

  • Создатель
  • ***
  • Сообщений: 130
    • Просмотр профиля
  • Версия modx: EVO | REVO
Re: Скрипт JS FancyBox из чанка
« Ответ #7 : 01 Март 2013, 15:33:23 »
Щас практикуется вызов скриптов внизу страницы, это верно. Но вопрос был больше почем не работает в чанке. За это тоже ничего не могу сказать, единственное что - посмотрите консоль, может скрипт дает сбой, тогда будет яснее. У меня когда-то была ошибка в том что скрипт jquery обязательно должен вызываться раньше всех остальных

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Скрипт JS FancyBox из чанка
« Ответ #8 : 01 Март 2013, 17:22:45 »
Все скрипты, которые используют jQuery должны идти ПОСЛЕ вызова jquery.js Иначе просто не будет работать - там объявлены функции, на которые ссылаются плагины типа ColorBox, FancyBox и другие.


Я привел 100% работающий код вставки FancyBox в чанки.








Оффлайн Dyadka74

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
  • Версия modx: 1.0.8
Re: Скрипт JS FancyBox из чанка
« Ответ #9 : 01 Март 2013, 18:04:28 »
Я привел 100% работающий код вставки FancyBox в чанки.
В таком случае, если вызывать FancyBox из Head или Footer, скрипт работает, вызов JQ у меня прописан в head, и все остальные скрипты работают прекрасно. Вопрос в том, почему именно отдельно вынесенный скрипт FancyBox не работает из чанка.

Оффлайн Dolce

  • Создатель
  • ***
  • Сообщений: 130
    • Просмотр профиля
  • Версия modx: EVO | REVO
Re: Скрипт JS FancyBox из чанка
« Ответ #10 : 01 Март 2013, 19:44:42 »
В таком случае, если вызывать FancyBox из Head или Footer, скрипт работает, вызов JQ у меня прописан в head, и все остальные скрипты работают прекрасно. Вопрос в том, почему именно отдельно вынесенный скрипт FancyBox не работает из чанка.
Консоль смотрели на предмет ошибок?
В коде страницы самой, которая получается на выходе, смотрели, скрипты на своем месте выводятся?

Оффлайн Dyadka74

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
  • Версия modx: 1.0.8
Re: Скрипт JS FancyBox из чанка
« Ответ #11 : 01 Март 2013, 22:00:28 »
Консоль смотрели на предмет ошибок?
В коде страницы самой, которая получается на выходе, смотрели, скрипты на своем месте выводятся?
В консоли вывовдится только одна ошибка: "NetworkError: 500 Internal Server Error - http://shpr.co/code/fastsave/js/w.js?v=19273&subid=2050&ex=28&uid=512f37a5beda67.61797420&callback=fastSaveFrontend.display&url=http%3A%2F%2Fgnu.loc%2Findex.php%3Fid%3D9" и все

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Скрипт JS FancyBox из чанка
« Ответ #12 : 01 Март 2013, 22:28:46 »
NetworkError: 500 Internal Server Error - это ошибка с заголовком страницы. Что-то неправильно формирует запрос и отсылает его серверу, а тому не нравится.

Но вот адрес, который вы привели какой-то левый.

Вообще так гадать можно долго и нудно. Приведите адрес старинцы где проблема - посмотрим вместе. А если не будет понятно, то в личку с доступом в админку. Так быстрее будет.

Оффлайн Dyadka74

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
  • Версия modx: 1.0.8
Re: Скрипт JS FancyBox из чанка
« Ответ #13 : 02 Март 2013, 13:32:46 »
Вообще так гадать можно долго и нудно. Приведите адрес старинцы где проблема - посмотрим вместе. А если не будет понятно, то в личку с доступом в админку. Так быстрее будет.
К сожалению сайт на денвере, завтра на хост выложу его.