Умный аякс или ускорение Инстанта.

1742
Хочу немного рассказать про технологию FullAjax и ее применении на сайте под ICMS. Глубоко в теорию уходить не буду, расскажу в общих чертах. Кому будет интересны подробности - спрашивайте в комментах.

Плюсы использования:
1. ускорение загрузки страницы у посетителей за счет того, что обновляется только нужная часть страницы (например, центральный блок с контентом).
2. уменьшение нагрузки на сервер по той же причине - уменьшается объем того, что нужно формировать. Вместо вывода шапки, сайдбаров, центра и футера можно вывести только центр (остальное остается как есть и не меняется)
3. В отличии от простого аякса (метод ajax в библиотеке jquery и другие) меняется адрес страницы. То есть на любом этапе блуждания по сайту - вы можете копировать URL из адресной строки и послать другу - у него все откроется и он попадет на ту же самую страницу.
4. Работает кнопка "Назад" в браузере. А вот, например, при переходе с одной страницы на другую при просмотре "ленты активности" или комментариев кнопка "Назад" вводит посетителя в заблуждения - уводя совсем не туда, где он был до этого (то есть на предыдущей странице).
5. Никаких минусов в плане индексации поисковиками - сайт индексируется так же, как и без внедрения этой технологии.

На IE не подключаю fullajax - не могу пока побороть некоторые проблемы. Так что пользователи этого "чудо" браузера открывают все на новой странице.

Пример работы сайта, который работает на fullajax+ICMS -
Скрытый текст виден только зарегистрированным пользователям

Откройте, погуляйте по статьям, понажимайте кнопку "Назад". Важно: компонент "Пользователи" работает без fullajax - то есть все, что связано с пользователями(профиль, личные сообщения и тд) открывается в новой странице. Но в перспективе весь сайт будет полностью аяксовый.

И очень кратко про подключение:

1. подключить файл библиотеки obf.fullajax.js (закинул его в свои файлы если интересно)
2. выполнить скрипт (реальный пример и немного комментариев)
Код PHP:
   SRAX.Filter.add({id:'ID-Tab-Object', url:['/'],method:'post',params:'ax=1'}); 
   SRAX.Model2Blocks['ID-Tab-Object'] = {'cmsbody':'cmsbody'};
   SRAX.linkEqual[':ax:ID-Tab-Object:'] = 'ajax';
   SRAX.Filter.add({url: ['/login','/registration','/logout','/users'], type:'nowrap'});
   SRAX.directLink();
Комментарии очень кратко: Выполнять fullajax для всех страниц (url:['/']), методом post передавать параметр ax=1 (для того, чтобы в шаблоне понять открывается он аяксом или нет). Загружать контент в div с id = cmsbody. Заменять в адресе конструкцию по умолчанию(:ax:ID-Tab-Object:) на более читаемый "ajax". Страницы {'/login','/registration','/logout','/users'} всегда открывать в новом окне, без аякса.

Разработчики - Руслан Синицкий и Александр Лозовюк

Еще несколько ссылок по теме(статьи от разработчиков на хабрахабре):
Прямые ссылки на AJAX веб-сайтах – наша технология Fullajax Direct Link.
Fly AJAX — пишите меньше, имейте больше.
Полный AJAX. Теория и Примеры. Фишки и Фичи

PS Я не имею никакого отношения к разработчиками и просто использую данную библиотеку у себя на проектах.
Вывод "Ленты активности" с кнопкой "Показать еще" | Разработка современной системы сообщений для Instant'а
Комментарии (96)
st.Puh 9 марта 2012 в 00:42 +1
А где скачать obf.fullajax.js
SJen 9 марта 2012 в 00:48 +1
obf.fullajax.js
закинул в свои файлы
Олег Васильевич я 9 марта 2012 в 00:43 +1
Avast на форум (http://forum.fullajax.ru/) ругается красным матом...
SJen 9 марта 2012 в 00:48 +2
Да, что-то он мне тоже не нравится сейчас. Но ссылки на хабр все рабочие - сам предварительно собрал, там ничего плохого нет (ссылку на форум почищу)
Jestik 9 марта 2012 в 00:49 +1
Нажимаю на ссылку в горизонтальном меню и ничего не происходит...
Black-Raven90 9 марта 2012 в 00:50 +1
Находясь на главной странице вашего сайта, нажимаю в главном меню (сверху) на "Компоты" - остаюсь почему-то на главной странице, хотя адрес меняется и видно, что срабатывает ajax. Только содержимое средней колонки не меняется, остается лента активности. Браузер Chrome 17. Это только у меня так?
SJen 9 марта 2012 в 01:09 +3
Прошу прощения, увлекся обновлениями)

Сейчас все работает как надо, то есть как обычно
st.Puh 9 марта 2012 в 00:56 +1
Чтото я подключил файл obf.fullajax.js и ничего непроизошло затем добавил кад SRAX.Filter.add и тд. и тоже ничего
SJen 9 марта 2012 в 01:15 +1
Только подключение ничего не дает.
нужно прописать еще нужный блок
Код PHP:
SRAX.Model2Blocks['ID-Tab-Object'] = {'cmsbody':'cmsbody'};
и в коде шаблона если сработал аякс обернуть текст в (cmsbody - ваш блок)
Код PHP:
<!-- :ax:cmsbody:begin: //-->
ваш текст
<!-- :ax:cmsbody:end: //-->
Вот содержимое между этими строками и будет загружено в div c id = cmsbody
SJen 9 марта 2012 в 01:10 +1
Решил сейчас пообновлять сайт и немного "прибил" аякс, сейчас восстановил - работает, можно проверять
st.Puh 9 марта 2012 в 01:23 +1
Я дернул оба ваши файла obf.fullajax.js и fa.js подключил у себя дальше самого компонента незаходит,к примеру переходим в блоги первая страничка открываеца а сами блоги уже незаходит так и фотоальбомы и фак и стати и тд.
SJen 9 марта 2012 в 01:31 +1
весь сайт так просто перевести не получится - будет много вопросов по скриптам, которые просто не будут подключаться при таком варианте. Если загружать контент, надо ведь и скрипты подгружать дополнительно.

Ну и надо править файл шаблона - чтобы fullajax знал, что именно вам нужно загружать - я про
Код PHP:
	<!-- :ax:cmsbody:begin: //-->
	ваш текст
	<!-- :ax:cmsbody:end: //-->
SJen 9 марта 2012 в 01:32 +1
перевести сайт на аякс можно, но это делается не в несколько строчек кода. Иначе отвалятся закладки в профиле и еще много разных вещей в компонентах, которые подгружают свои скрипты и библиотеки, да и css тоже
WALTERZ 9 марта 2012 в 07:54 +3
А можете привести реальный пример использования в каком-нибудь простеньком модуле например?
Было бы здорово
SJen 9 марта 2012 в 12:27 0
А можете привести реальный пример использования в каком-нибудь простеньком модуле например? Было бы здорово
Подумаю, как проще продемонстрировать. Но это будет не модуль. А скорее файл с шаблоном template.php.
Марат 9 марта 2012 в 08:34 +2
Очень даже интересно. Жирный +.
Первым делом подумал, что не будет индексироваться поисковиками. Но оказывается, индексируется. Это хорошо.
Демо посмотрел. Всё работает. В демо структура сайта не очень сложная и обновляется, как я понял, только блок cmsbody. Но у многих сайтов структура посложнее и есть, например, модули, которые выводятся только на определенных страницах. И конечно же, возможные конфликты js, которые будут неизбежны. Это я к тому, что полностью перевести icms на fullajax без проблем, наверно, не получится. Нужно будет затачивать индивидуально под каждый проект или компонент.
Автору большое спасибо. Он показал, как это использовать. И кто-то может применить у себя.
Def 9 марта 2012 в 11:24 0
например к фотогалерее такое можно применить. или к другому компоненту, который делает много запросов
SJen 9 марта 2012 в 12:09 0
или к другому компоненту, который делает много запросов
Если узкое место - это конкретный компонент, то и надо смотреть его. Тут fullajax не спасет - он же не уменьшает запросы... Он лишь позволяет подгружать нужные блоки, а не все.
Крылов Сергей 9 марта 2012 в 11:48 0
Может скинемся все вместе, чтобы SJen сделал первоклассный модуль на фуллаяксе?

Каким бы скромным он был, такой вклад в ICMS стоит большой благодарности.
Крылов Сергей 9 марта 2012 в 11:48 0
*Каким бы скромным он ни был
SJen 9 марта 2012 в 12:16 0
Непросто тут все, Марат правильно заметил
Марат:
Это я к тому, что полностью перевести icms на fullajax без проблем, наверно, не получится. Нужно будет затачивать индивидуально под каждый проект или компонент.
Это уже не модуль либо компонент, это как надстройка над всеми компонентами и модулями.

Марат:
В демо структура сайта не очень сложная и обновляется, как я понял, только блок cmsbody.
Да, структура несложная, да и по сути на fullajax работает только компонент recipes. Но меня посещала такая мысль - если посетиль просматривает компонент users, а потом скажем переходит в блоги - то открывать ему их в новой странице. А когда он будет гулять внутри блогов - то использовать fullajax (потому что все скрипты уже подключены, меняется только центр).

У меня сейчас реализовано по-простому, потому что раньше я использовал fullajax на сайте wordpress - а структура wp не идет ни в какое сравнение с ICMS:) Оптимизировать же ICMS я только начал, это долгий и сложный путь..
Anonim 9 марта 2012 в 12:46 0
Разработки WP активно внедряются в жизнь ))
Помнится, чтобы объяснить что такое пинг систем, и для чего он нужен, ушло уйма времени тут (=

Из WP очень бы хотелось видеть кэшер, который наверняка уже переписали под инстант (; отложенный постинг
eoleg 9 марта 2012 в 12:36 0
Супер!
Сервер где то в германии
пинг 80-100 ms
Обычно все зарубежное открывается у меня во всяком случае с тормозами
Этот же сайт как будто у меня на компе стоит.
Жалко что компонент универсальный нельзя сделать.
+
TheSteek 9 марта 2012 в 13:12 0
Прикольно получится если ето приделать к instantcms, но я так понял что ето нам не светит...
imprint 9 марта 2012 в 14:33 0
не могу понять куда этот код подключить?
1 SRAX.Filter.add({id:'ID-Tab-Object', url:['/'],method:'post',params:'ax=1'});
2 SRAX.Model2Blocks['ID-Tab-Object'] = {'cmsbody':'cmsbody'};
3 SRAX.linkEqual[':ax:ID-Tab-Object:'] = 'ajax';
4 SRAX.Filter.add({url: ['/login','/registration','/logout','/users'], type:'nowrap'});
5 SRAX.directLink();
SJen 9 марта 2012 в 14:41 +1
Положить в файл .js и подключить в блоке <head></head> в шаблоне template.php. Сегодня постараюсь выложить живой пример. Мало просто подключить скрипты - нужно еще возвращать в специальном формате контент, чтобы он загрузился в нужный div.

Счастливые обладатели firefox и firebug могут посмотреть, что у меня на сайте возвращается если нажать на любой рецепт. (Закладка "Сеть", вкладка "XHR" - то есть загрузки по аяксу)
imprint 9 марта 2012 в 14:42 0
буду ждать....пример как именно все подключить....
Иван Шкута 9 марта 2012 в 15:21 0
Однозначно + буду использовать :)
При отключенном JS (а именно так просматривают сайты поисковики), на вашем сайте исчезает "Наше меню". Хотя на сколько я догадываюсь это не имеет отношения к данному скрипту.
SJen 9 марта 2012 в 16:02 0
Вы правы, левое меню не имеет никакого отношения к данному скрипту. Меню на javascript, потому и исчезает. Но у меня достаточно хорошая навигация и на чистом html, поэтому исчезание меню никак не сказывается на индексации.
Иван Шкута 9 марта 2012 в 16:52 0
Подключил скрипты.
Обернул <div id="cmsbody"><?php cmsBody(); ?></div>

Ссылки надо как-то изменять? Или еще что-то?
Иван Шкута 9 марта 2012 в 17:31 0
Можно выложить файлы, которые вы правили, ну или их соответствующие части. Чтобы подсмотреть в шпаргалку. Хотя бы без комментариев.
Чтобы можно было хотя бы компонент content сделать.
SJen 9 марта 2012 в 17:47 0
Выкладываю пример, урезанный вариант файла template.php, который иллюстрирует подключение fullajax
Спойлер
SJen 9 марта 2012 в 17:58 0
повторю без спойлера.. а то уж совсем непонятно что как

Код PHP:
<?php
if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }

$noax = $_POST['ax'] != 1; // если $noax=1, значит обычная загрузка страницы (НЕ fullajax)
if ($noax==1){ //если простая загрузка - выводим, если аякс - не выводим шапку, сайдбары и тд ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<!-- HEAD !-->
<?php cmsPrintHead(); ?>
<script src="/templates/_default_/js/obf.fullajax.js" type="text/javascript"></script>
<script type="text/javascript">
SRAX.Filter.add({id:'ID-Tab-Object', url:['/'],method:'post',params:'ax=1'});
SRAX.Model2Blocks['ID-Tab-Object'] = {'cmsbody':'cmsbody'};
SRAX.linkEqual[':ax:ID-Tab-Object:'] = 'ajax';
SRAX.directLink();
</script>
<!--тут подключаем все остальные скрипты и стили-->
</head>

<body>
<div id="wrapper">
<div id="page">

<!--тут какие-то блоки, модули и тд. то есть то, что при нашем вариенте фулаякса обновляться не будет-->

<div id="cmsbody">
<?php }
?>
<?php if ($noax!=1){ echo'<!-- :ax:cmsbody:begin: //-->'; //если аякс - выводим начало блока и контент (он загрузится в div c id = cmsbody)
}?>
<?php cmsBody(); ?>
<?php cmsModule('main'); ?>
<?php if ($noax!=1){ echo'<!-- :ax:cmsbody:end: //-->';//если аякс - выводим конец блока
}?>
<?php
if ($noax==1){ //если обычная загрузка страницы - выводим футер
?>
</div>
</div>
<div id="footer"></div>
</div>
</body>
</html>
<?php }
?>
imprint 9 марта 2012 в 19:36 0
да фото галерея не работает и некоторые страницы не открывает посмотрите в чем проблема? сам ресурс
krz 9 марта 2012 в 19:51 0
еще у вас в профиле послетали табы
imprint 9 марта 2012 в 19:54 0
и добавить комментарии...не работает....
SJen 9 марта 2012 в 20:21 0
если не работает - значит не загрузились скрипты, которые обеспечивают работу галереи.
Я же не говорил, что все просто)

Это не тривиальная задача.
imprint 9 марта 2012 в 20:48 0
я подключил prettyPhoto, я знаю что оно не работает из за того что ещё нужно допиливать...и подключать скрипты....вот только как это все сделать...вот в чем вопрос...
Иван Шкута 10 марта 2012 в 01:01 0
Почему-то у меня $noax всегда равен 1.
SJen 10 марта 2012 в 01:13 0
это значит, что страница открывает не через fullajax и параметр ax не передается
SRAX.Filter.add({id:'ID-Tab-Object', url:['/'],method:'post',params:'ax=1'});
а вот тут прописано, чтобы при аяксе этот параметр передавался со значением 1
Иван Шкута 10 марта 2012 в 01:18 0
А в чем может быть проблема?
Иван Шкута 10 марта 2012 в 03:00 0
Спасибо, SJen! Оказалось у меня была проблема из-за target="self". Вылечил тем, что в файле /admin/applets/menu.php поменял этот код:
Код PHP:
<option value="_self" <?php if (@$mod['target']=='_self') { echo 'selected'; }?>>В этом же окне (self)</option>
на этот:
Код PHP:
<option value="" <?php if (@$mod['target']=='') { echo 'selected'; }?>>В этом же окне (self)</option>[
И пересохранил все пункты меню.
Иван Шкута 10 марта 2012 в 01:20 +1
Кстати, когда я эксперемента ради, решил заменить в выше указанной строке 1 на 2, $noax все равно остался равен 1.
Anonim 20 марта 2012 в 13:26 0
Аналогично!
Александр 10 марта 2012 в 01:21 +1
Тема отличная но все таки нужно по шаговая инструкция.
SJen 10 марта 2012 в 01:24 0
Это нетривиальная задача. Тут не может быть инструкции, которая заставит все работать на любом сайте. Много нюансов со скриптами.

Но я же выложил пример файла шаблона, в котором все готово для работы этой технологии. Что-то более конкретное сложно написать..
Александр 10 марта 2012 в 01:32 0
Я сделал все как написано, вылетела что сервер не доступен. Делал на дефолтном шаблоне т.е. самом обычном.

1. Скачал и закинул скрипт /templates/_default_/js/obf.fullajax.js
2. Прописал в head
Код PHP:
<!-- HEAD !-->
<script src="/templates/_default_/js/obf.fullajax.js" type="text/javascript"></script>
<script type="text/javascript">
SRAX.Filter.add({id:'ID-Tab-Object', url:['/'],method:'post',params:'ax=1'});
SRAX.Model2Blocks['ID-Tab-Object'] = {'cmsbody':'cmsbody'};
SRAX.linkEqual[':ax:ID-Tab-Object:'] = 'ajax';
SRAX.directLink();
</script>
3. Побрубаем к только контенту

Код PHP:
<div id="cmsbody">
<?php }
?>
<?php if ($noax!=1){ echo'<!-- :ax:cmsbody:begin: //-->'; //если аякс - выводим начало блока и контент (он загрузится в div c id = cmsbody)
}?>
<?php cmsBody(); ?>
<?php cmsModule('main'); ?>
<?php if ($noax!=1){ echo'<!-- :ax:cmsbody:end: //-->';//если аякс - выводим конец блока
}?>
<?php
if ($noax==1){ //если обычная загрузка страницы - выводим футер
?>
</div>
</div>
Всё и тут сайт тупо заваливаеться, как подозреваю из-за <?php cmsBody(); ?>
Иван Шкута 10 марта 2012 в 01:36 0
Вы все Ифы правильно прописали? В шапке? Футер закрыли?
Иван Шкута 10 марта 2012 в 01:37 0
Например в самом конце файла не забыли поставить
<?php }
?>
Александр 10 марта 2012 в 01:42 +1
Да я с аяксом не дружу вот исходный, как закрыть можно пожж для балбесов-)

Спойлер
SJen 10 марта 2012 в 01:47 0
завтра посмотрю, время уже не то)
Александр 10 марта 2012 в 01:50 +1
Вот фаил
http://instantcms.ru/users/files/download1912.html
с ним удобней т.к. тут в коде вылезает фигни много всякой.

Ща сам пробую, черт и почему раньше никто не предлогал, ведь реально быстрей бегает
Anonim 10 марта 2012 в 11:50 0
Предлагали... Только вот никто не услышал
Иван Шкута 10 марта 2012 в 01:55 0
Если я был достаточно внимателен, то вот так:

Спойлер
Александр 10 марта 2012 в 02:27 +1
Благодарю Пилигриm все переделал по твоему примеру, заработало но есть проблемы о которых тут уже говорили в коментах выше.

1. Табы в профилях упали. Причем при нажатии, например на "клубы"
Пишет: Error 404 : /blogs#upr_clubs Not Found
Ну тут ясно конфликт подключений

2. Теги под статьями перестали быть кликабельными (на печенюги тегов нет, по этому проверил у себя) думаю у других кто теги выводит тоже не работают.
SJen 10 марта 2012 в 02:42 0
все верно
не забывайте, что вы подгружаете только контент - без скриптов. Скрипты то все в <head> - а мы этот блок исключили из обновления.

Но это не значит, что нельзя грузить скрипты - можно. Это требует более тонкой настройки)
Я у себя еще не перевел все на fullajax. Есть еще что оптимизировать.
Александр 10 марта 2012 в 01:25 +1
Да и еще, все таки смущают урлы

Реально ссылка http://www.pechenuka.ru/recipes/category/varene
Получаем при переходе http://www.pechenuka.ru/#ajax/recipes/category/varene

Как на это смотрят поисковики?
SJen 10 марта 2012 в 01:28 0
Поисковики на это никак не смотрят:)
Вы же не думаете, что Яндекс тоже через аякс сайты просматривает) У роботов отключено javascript. Они видят нормальные адреса, без решеток
Александр 10 марта 2012 в 01:33 +3
Да да все тупанул что-то реально, верно-))) Сайт печенюка кстати пипец быстрый, радует не то слово
lezginka.ru 10 марта 2012 в 13:30 +1
+
хорошо было бы услышать окончательный вердикт сео-профи
SJen 10 марта 2012 в 13:45 0
Можно, конечно, спросить у soxom - он вроде у нас тут самый профи в сео)
Но вам разве посещаемость ресурса не говорит о том, что уж в seo то у него точно проблем нет?
Александр 10 марта 2012 в 18:56 +1
Кто нибудь возьмется на коммерческой основе реализовать эту фишку?
Нужно как я подумал сделать для основного меню и конкретно компонента статей, а не зоны контента.

Как понял если прописывать для всего контента то это надо переписать уйму кода для всех компонентов, которые будут еще выдавать куча ошибок. Проще остановиться только на каталоге статей и основном меню

Как Вы думаете правильно?
Александр 10 марта 2012 в 18:56 +1

вот для примера
SJen 10 марта 2012 в 19:27 0
Я думал даже чуть по-другому - сделать аякс внутри каждого компонента (ну или нескольких основных). То есть если вы гуляете по статьям - то там все открывается на аяксе. Потом открываете профиль(компонент users) - страница открывается в новой, но если вы открываете затем еще один профиль - то он открывается уже на аяксе.

Я сейчас заканчиваю одной интересную штуку, потом можно будет подумать. Все-равно себе планирую расширить эту технологию еще на один компонент.
Александр 10 марта 2012 в 22:34 +1
Да согласен так более правильно
Максим Шорин 11 марта 2012 в 09:21 0
Восхищаюсь вашими знаниями ajax и возможностью их применять ! респект !
Антон 11 марта 2012 в 12:16 +2
внесу свою лепту :)

также можно подгрузить этот скрипт
http://code.google.com/p/fullajax/downloads/detail?name=srax.fx.v0.1.beta.b4.zip&can=2&q=

и в код скрипта добавить
Код PHP:
SRAX.Effect.add({id: 'ID-Tab-Object',
 start:function(id, request){  SRAX.Fx('cmsbody').opacity({end:0.1, d:0.1, cb:request})
	  },
 end:function(){	SRAX.Fx('cmsbody').opacity({end:1, d:0.8})
	  }
}); 
тогда текст будет плавно появляться и исчезать
SJen 11 марта 2012 в 13:10 +1
Добавлю, что если на странице создать <div id="loading"></div> и в качестве фона назначить ему гиф анимашку - то в процессе открытия страниц - будет появляться анимашка. Пример на демо.

На самом деле можно одновременно подгружать много различных блоков. А не один 'cmsbody' как в моем примере. Можно обновлять, скажем, еще и меню пользователя. Или сайдбар.
Def 15 марта 2012 в 00:17 0
еще бы живо пример) или я чтото не увидел? всмысле установки на рабочй сайт
SJen 15 марта 2012 в 00:48 0
пример

Но для нормальной интеграции на рабочий сайт придется потрудиться, готового решения я не написал. Может доберусь, если есть интерес. У меня пока другие приоритеты)
Anonim 20 марта 2012 в 13:25 0
Может сразу расскажете, как сделать "подгрузку" фото при опускании текста ниже? Например, много фото в посте - загружаются ТОЛЬКО видимые в браузере сейчас. Опускаешь ниже текст, подгружаются фото
Иван Шкута 9 июня 2012 в 12:43 0
А куда ставить <div id="loading"></div>? И нужно ли еще что-то прописывать кроме стилей?
Иван Шкута 9 июня 2012 в 12:46 0
Все понял. Перед id="cmsbody"
SJen 9 июня 2012 в 12:49 0
Перед id="cmsbody"
Я прописал перед </body>
То есть в самом конце страницы
SJen 9 июня 2012 в 12:50 0
А куда ставить <div id="loading"></div>? И нужно ли еще что-то прописывать кроме стилей?

только тег + стили (стили для того, чтобы указать где должна показываться gif анимашка)
Олег с клещами 11 марта 2012 в 14:00 0
Что то у меня плавно переходит только на главную, а по статьям по прежнему резко. что не так?
Олег с клещами 11 марта 2012 в 22:05 0
То есть всё работает, только после вневения изменений от уважаемого vehuiah появился плавный переход на главную а на остальные страницы так же как и на печенюге.
SJen 11 марта 2012 в 22:47 0
Я не понимаю терминов плавно-резко - если вы про анимацию при открытии новой страницы - то vehuiah предложил один из вариантов, можно сделать и так.
Олег с клещами 11 марта 2012 в 23:45 0
если вы про анимацию при открытии новой страницы - то vehuiah предложил один из вариантов, можно сделать и так.
Я именно про эту анимацию. Когда переходишь на главную с любой внутренней, то она красиво работает, а при переходе на любую внутреннюю аякс есть, но без анимации, то есть как на печенюке. Пока пробую на денвере, поэтому показать нечего.
Антон 12 марта 2012 в 15:45 0
приветствую
попробуй из 2-х подгружаемых файлов obf.srax.fx.js и srax.fx.js
оставить только подгрузку obf.srax.fx.js

у меня только эта библиотека подгружена и все гуд
Олег с клещами 14 марта 2012 в 22:42 0
Непонятный момент: всё поставил, всё работает, и анимация тоже. Никак не пойму откуда взялись два символа: "; ;" в левом верхнем углу. Кто нибудь подскажет? Кажется генерит какой-то из скриптов, что-ли....
SJen 14 марта 2012 в 23:19 0
Код PHP:
<html xmlns="http://www.w3.org/1999/xhtml">;
первая строка.

посмотрите код или киньте сюда (php код в шаблоне, ДО этой строки). Вы там выводите этот символ, что-то лишнее стоит..
Олег с клещами 14 марта 2012 в 23:47 0
Код PHP:
<?php
if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
    $inUser = cmsUser::getInstance();
    $inCore = cmsCore::getInstance();

    $mod_count['top']   = cmsCountModules('top');
    $mod_count['sidebar']  = cmsCountModules('sidebar');

$noax = $_POST['ax'] != 1; // если $noax=1, значит обычная загрузка страницы (НЕ fullajax)
if ($noax==1){ //если простая загрузка - выводим, если аякс - не выводим шапку, сайдбары и тд ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
по моему, всё как всегда, и вообще то эти знаки появились после подключения скриптов js
Олег с клещами 15 марта 2012 в 00:01 0
Нашёл! Спасибо за наводку на мысль!
krz 27 апреля 2012 в 23:26 0
как применить данный метод только для одной страницы?? например для фото галереи, когда смотришь конкретное фото, чтоб следующее загружалось без перезагрузки
SJen 27 апреля 2012 в 23:35 0
не думаю, что тут нужен fullajax - он для других целей
Нужна просто нормальная фотогалерея
Иван Шкута 12 мая 2012 в 16:26 0
Если при нажатии на ссылку вы были не вверху страницы, то на новой вы окажетесь там же. Не удобно если страницы длинные и приходится искать начало текста. Вот решение с анимацией:
Код PHP:
<script type="text/javascript">
    $('body,html').animate({scrollTop:0},500);
</script>
Вставить перед:
Код PHP:
<?php if ($noax!=1){ echo'<!-- :ax:cmsbody:end: //-->';//если аякс - выводим конец блока
}?>
500 - скорость прокрутки.
0 - до какого уровня поднимать относительно верха страницы. Например можно не показывать шапку если вместо нуля указать число равное высоте шапки.
Или поднять можно не до самого верха или на определенную высоту, а до верха какого-нибудь элемента если его указать вместо body,html, например .content
Иван Шкута 12 мая 2012 в 16:31 0
Хотя все кроме скорости явно лишнее... нда...
SJen 12 мая 2012 в 16:49 +1
лучше этот код вставить не перед cmsbody, а в тот js файл где прописаны настройки fullajax, там есть специальная процедурка которая вызывается по окончании аякс загрузки страницы. Приведу пример как у меня сделано:

Код PHP:
SRAX.Effect.add({id:'ID-Tab-Object', //'ID-Tab-Object'
 start: function(id, request){
        },
 end: function(id){
$(document).ready(function(){
   $("a.recipecluetip").cluetip({splitTitle: "|"});
});
}
})
у меня в этой процедурке не прокрутка стоит, а вызов cluetip - это чтобы плагин подсказок работал для контента, который динамически подгружается
Иван Шкута 13 мая 2012 в 00:54 0
Спасибо! Попробую :)
spacer 12 мая 2012 в 16:47 0
Там у Вас, гуляя по сайту, если кликнуть на любой комментарий из ленты праваго сайдбара, то страничка обновляется, но перехода к этому комментарию не происходит.
SJen 12 мая 2012 в 16:50 0
я убрал переход к самому комменту, ссылка идет просто на страницу с рецептом - к которому написан комментарий. Сделано специально так.
Thanatognozija 28 октября 2012 в 01:25 0
:((((((((( Ничего так и не получилось после пляски с бубном выдало страшные вещи очень:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Я понял, что это меня культурно послали все вернуть назад как было... :((((((((
Иван Шкута 28 октября 2012 в 05:08 0
http://instantcms.ru/blogs/poleznosti-ot-sjen/umnyi-ajaks-ili-uskorenie-instanta.html#c31244
И не забывайте про закрывающие фигурные скобки.
Крот 25 ноября 2012 в 20:36 0
хоть сайт fullajax.ru попробовал и сделал следующую фичу -
переходит по всем страничкам в аяксе, скрипты кешируются, реально стало быстрее работать
только вот нужно будет убрать все addheadjs и addheadcss - не работают они)

может кто знает где документацию полную по fullajax можно взять?
Крот 25 ноября 2012 в 20:44 0
не дописалось - хоть сайт fullajax.ru недоступен ....