DataLife Engine > FAQ > AJAX навигация: что это такое?
AJAX навигация: что это такое?19-03-2012, 01:04. Разместил: n0wheremany |
![]() Итак основная информация находится в Википедии. AJAX, Ajax (от англ. Asynchronous javascript and XML — «асинхронный javascript и XML») — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате, при обновлении данных, веб-страница не перезагружается полностью, и веб-приложения становятся более быстрыми и удобными. Т. е. Элементы страницы DOM (объектная модель документ) уже сформированы, и при AJAX мы лишь изменяем содержимое страницы. С непониманием данного факта, в основном, и возникают проблемы при настройке модуля. Объясню что же происходит при обновлении страницы. Java Script Скрипт получает данные от PHP о содержании запрашиваемой страницы с учетом данных в mainajax.tpl, и заменяет на странице внутри {content} (элемент с id равным dle-content). Основная проблема - с недонастройкой шаблонов, у которых используется aviable. Пример недонастроенного кода: [aviable=main] Результат - контент не меняется, из-за чего? Из-за того что нет элемента dle-content, т. к. он прописан внутри {content}. Как исправить? Нужно его прописать таким образом (причем не только в main.tpl, но и в mainajax.tpl) main.tpl [aviable=main] mainajax.tpl [aviable=main] Теперь к более сложному - все что выходит за пределы контента - это к примеру speedbar, блок информации или слайдеры различные. Т. к. эти блоки выходят за пределы контента - они не обрабатываются. Поэтому для них нужно делать все ручками, например этот сайт Итак main.tpl - Необходимо обернуть тэги в элементы DOM <div id="mainspeedbar">[not-aviable=main]{speedbar}[/not-aviable]</div> и в mainajax.tpl делаем так <script type="text/javascript"> В итоге получаем: На главной нет speedbar, но на остальных он есть Появился новых тэг {jspeedbar} - этот тэг работает только в такой конструкции: $(...).html('{jspeedbar}'); - также можно сделать и для других блоков - {jlogin}, {jsort}, {jtopnews}, {jcalendar} и тп. Однако также можно использовать и обычные тэги {login}, {sort}, {topnews}, {calendar} и тп. Немного сложнее со слайдерами, в основном структура такая: [aviable=main] Итак первую строчку необходимо вставить в main.tpl, т. к. нужно загрузить функции слайдера. А вот вторую строку необходимо описать в main.tpl и в mainajax.tpl, т. к. мы переинициализуем работу слайдера. К примеру так: В main.tpl <script type="text/javascript" src=".../slider.js"></script> В mainajax.tpl
Т. о. мы инициализируем слайдер когда находимся на главной, и убираем его, когда находимся на других страницах. Теперь хотелось бы затронуть один якобы баг модуля: при заходе на url, по которому возникает ошибка, к примеру "К сожалению, данная страница для Вас не доступна, возможно был изменен ее адрес или она была удалена. Пожалуйста, воспользуйтесь поиском.", при переходе на другие страницы по AJAX сообщение остаётся. Как исправляем? пишем такое: в main.tpl <div id="maininfo">{info}</div> в mainajax.tpl
Теперь нововведение - AJAX навигация форм: Т. к. не для всех форм на сайте возможно реализовать AJAX навигацию - их необходимо указывать самумо вручную, делается это в main.tpl так: <script type="text/javascript"> Но можно сделать проще: <script type="text/javascript"> И протестировать все формы - какие не походят исключить так <script type="text/javascript"> Так вроде все аспекты изложил. Пишите если есть вопросы или неточности, постараюсь поправить. Т. к. ещё не протестирована работа с рекламой, её пока тут не выкладываю. Фитчи: Как изменить содержимое окна прогресса? в main.tpl вставляем такое <script type="text/javascript"> Вернуться назад |