Drupal 7 полностью на Ajax

Главные вкладки

Аватар пользователя masaniy masaniy 26 июня 2012 в 9:00

Возможно ли всю навигацию по страницам и работу с формами в drupal 7 реализовать с использованием Ajax? Т.е. любое действие на сайте осуществляется через ajax-запросы, без перезагрузки страницы. Если возможно, то с помощью чего и какие готовые модули для этого существуют на сегодняшний день?

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 26 июня 2012 в 9:37

Это возможно, но хлопоты превысят возможный профит многократно :). В Д7 есть в Form Api #ajax. Попап - через Ctools. Можно заюзать корный Overlay, но он дубов и потребует патч

Аватар пользователя masaniy masaniy 26 июня 2012 в 10:09

"Chyvakoff" wrote:
Только ответьте на вопрос-зачем?

Требование заказчика
"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Лучше не связывайтесь :)

Пытаюсь объяснить заказчику, что это потребует достаточно много времени и трудов.

Как только передо мною поставили такую задачу сразу подумал, что часть функционала проще решить с помощью простого кодинга на PHP без использования Drupal API. Однако все равно останутся проблемы. Например, такая проблема, как навигация по страницам, т.е. обновление части страницы, которая содержит не только сам контент, но и дополнительные навигационные блоки, с помощью которых так же нужно обновлять эту же или область страницы.

Изначально хотелось найти какой-то готовый универсальный механизм для перехода между страницами. И я наткнулся на такую вещь как http://www.denry.ru/drupal-ajax-nodeloader/ . Но думаю, что это решение в моем проекте не совсем подойдет, поскольку обновлять нужно не просто ноду, а часть страницы, если конечно не использовать ноды, например типа page, как контейнеры для блоков,представлений, других нод и простого PHP кода

Аватар пользователя alex_shut alex_shut 26 июня 2012 в 11:14

"masaniy" wrote:
Требование заказчика

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

Аватар пользователя brutal brutal 26 июня 2012 в 11:27

Навешайте ему лапши пару окошек с формами и выдайте результат .

Он видать у вас слишком умен , где-то начитался об экономии ресурсов сервера .

Аватар пользователя Chyvakoff Chyvakoff 26 июня 2012 в 11:34

"alex_shut" wrote:
да, не перевелись еще мудаки на земле русской.
аякс вроде как на стороне клиента исполняетсо?

Не перевелись..
Запрос всё-равно на сервер идет,так что 50/50 образно говоря..
"brutal" wrote:
где-то начитался об экономии ресурсов сервера .

сто пудово.. или другой такойже "начальник" посоветовал.

Понимаю ещё если какая то внутренняя система. А у вас наверняка сайт. Продвигать как потом будете? Ранние версии движка ModX так работали-всё на аяксе.Из-за этого им никто не пользовался,пока они не сделали по-нормальному.

Аватар пользователя masaniy masaniy 26 июня 2012 в 12:16

"alex_shut" wrote:
да, не перевелись еще мудаки на земле русской.

Ну не русской, а казахстанской...
"Chyvakoff" wrote:
Продвигать как потом будете?

Заказчик заявил, что их сайт не нуждается в SEO, а продвижение будет происходить с помощью баннеров и контекстной рекламы.
Что касаемо конкретных примеров, то заказчик захотел такие же навороты как тут

Аватар пользователя brutal brutal 26 июня 2012 в 12:34

;DD

авторизация и поиск

где еще ajax ?

Налепили кучу эффектов .

В форме поиска enter не работает только кнопка со стрелкой .

Аватар пользователя Orion76 Orion76 26 июня 2012 в 13:02

Ну а че..
"переделать" во всех ссылках параметры на якоря..
Сделать для всех страниц,кроме главной, специальный page.tpl.php
На станичке ява-скриптом преобразовывать ссылку с якорем в нормальную, и аяксом "подтягивать" коннтент..

Как-то так вкраце..-)

Аватар пользователя masaniy masaniy 26 июня 2012 в 15:42

"orion76" wrote:
Ну а че..
"переделать" во всех ссылках параметры на якоря..
Сделать для всех страниц,кроме главной, специальный page.tpl.php
На станичке ява-скриптом преобразовывать ссылку с якорем в нормальную, и аяксом "подтягивать" коннтент..
Как-то так вкраце..-)

А по подробнее?

"sitdikov" wrote:
На флеш бы тогда сразу делали )))

По мнению заказчика: флеш - кака, iOS - красава

Аватар пользователя sitdikov sitdikov 26 июня 2012 в 16:21

"masaniy" wrote:
А по подробнее?

на документ.онреди:

jQuery.each(jQuery('a'), function()
{var href = jQuery(this).attr('href');
jQuery(this).attr('href', '#'+href);
});

А там уже надо дальше вешать обработчик на jQuery('a').live|bind('click', function(){...});
и для СЕО будет работать и AJAX получите.

Аватар пользователя Chyvakoff Chyvakoff 26 июня 2012 в 16:32

"masaniy" wrote:
Заказчик заявил, что их сайт не нуждается в SEO, а продвижение будет происходить с помощью баннеров и контекстной рекламы.

У вас заказчик миллионер? 99% что он вскоре будет очень недоволен что у него народу мало,и вообще-затраты на рекламу не окупятся.
Сайт то как,продавать что то будет?

"sitdikov" wrote:
На флеш бы тогда сразу делали )))

Ну да))
"masaniy" wrote:
По мнению заказчика: флеш - кака, iOS - красава

Так и знал)) а при чём тут iOS?

Только не говорите начальнику что html4 - кака,а html5 - красава)

Аватар пользователя Orion76 Orion76 26 июня 2012 в 16:45

"sitdikov" wrote:
на документ.онреди:

тогда возможно еще добавить параметр, что-то типа js=on
и cделать вариант page.tpl.php для обычной загрузки страницы... например если выключен яваскрипт..

Аватар пользователя sitdikov sitdikov 26 июня 2012 в 16:54

"orion76" wrote:
тогда возможно еще добавить параметр, что-то типа js=on
и cделать вариант page.tpl.php для обычной загрузки страницы... например если выключен яваскрипт..

Зачем?
Если джаваскрипт выключен - то не сработает блок ready и ссылки останутся в том виде, в котором были изначальны.

p.s. вроде друпал сам добавляет к тегу html класс js при включенном js.

Аватар пользователя Orion76 Orion76 26 июня 2012 в 17:07

"sitdikov" wrote:
ссылки останутся в том виде, в котором были изначальны.

чтоб контент аяксом по обычным ссылкам подгружать, надо page.tpl.php слегка модернизировать... как минимум чтоб он "отдавал" только контент.. без шапки и футера(они же статичны)..
Вот и надо чтоб при подгрузке аяксом "работал" один шаблон, а при обычной загрузке - другой..

Аватар пользователя sitdikov sitdikov 26 июня 2012 в 17:12

"orion76" wrote:
чтоб контент аяксом по обычным ссылкам подгружать, надо page.tpl.php слегка модернизировать... как минимум чтоб он "отдавал" только контент.. без шапки и футера(они же статичны)..
Вот и надо чтоб при подгрузке аяксом "работал" один шаблон, а при обычной загрузке - другой..

Понял про что вы. Ну тут смотря как подойти. Мне проще было бы добавить параметр при ajax запросе, который указывал - что отдать нужно только контент и вставить его в блок такой-то.

Но даже так геморно.

Аватар пользователя masaniy masaniy 26 июня 2012 в 18:54

Решил проблему с навигацией с помощью короткого ответа:

"orion76" wrote:
Ну а че..
"переделать" во всех ссылках параметры на якоря..
Сделать для всех страниц,кроме главной, специальный page.tpl.php
На станичке ява-скриптом преобразовывать ссылку с якорем в нормальную, и аяксом "подтягивать" коннтент..

Спасибо! Копаю дальше, ведь остальной функционал тоже нужно реализовать на AJAX.

Смотрю это http://sf2010.drupal.org/conference/sessions/ajax-and-javascript-drupal7...

Если что отпишусь здесь, как преодолевали трудности