ajax

УрокКак поменять направление списка комментариев и вынести форму комментариев наверх

По мало понятным мне причинам в седьмом Друпале нет возможности поменять направленость списка комментарив. Безусловно, для блогов вполне удобен "коробочный" вариант - старые комментарии вверху, новые внизу, а форма комментариев вообще в конце страницы. Однако могу привести пример сайта с сериалами: на одной странице есть плеер со всеми сериями сериала, а под ним располагаются комментарии. А теперь представьте, что серии постоянно добавляются в плеер, и в комментариях идёт живое обсуждение. И далеко не каждый пользователь захочет каждый раз пролистывать сотню-другую комментариев, чтобы почитать последние и/или написать своё мнение. И таких примеров можно привести много. Поэтому исключение возможности поменять направление комментариев, на мой взгляд, грубая ошибка. Однако что сделано - то сделано, и сейчас я расскажу как восстановить справедливость.

БлогЛогин, регистрация и восстановление пароля с помощью AJAX

Есть такой модуль замечательный - называется он Ajax Register. Раньше он работал довольно странно (к тому же для 6го Друпала), и никогда моих потребностей в ajax логине не удовлетворял. Потом я проскочил в ко-разработчики модуля и сделал релиз для Drupal 7. Однако этот релиз был больше заточен под тот проект, для которого я этот модуль писал на самом деле. Поэтому подходил он явно не всем, хотя всё же лучше, чем ничего.

Сегодня я наконец собрался с мыслями и выпустил в свет адекватный релиз Ajax Register 7.x-4.x. Вот его фичи:

БлогВсё об AJAX в Drupal 7. Drupal Camp Minsk 2012.

14 апреля 2012 года в моём родном городе Минске прошёл очередной Drupal Camp. На нём я рассказывал об AJAX в семьмой версии Drupal. Видео прилагается:

А ниже предоставлен подробный план, по которому я рассказывал.

УрокМногошаговые (мультистеп) формы на AJAX в Drupal 7

Итак, дорогие друзья, на повестке дня у нас шикарные мультистеп формы, от которых лично я в восторге. Сразу даю ссылку на мой пример, чтобы и вы воодушевились. Не написано ни строки js, однако всё шустро работает, ещё и с сохранением состояния формы. Великий и могучий Друпал. Теперь от слов переходим к делу.

Шаг первый. Создаём страницу с формой.

function multistep_example_menu() { 
 
  $items = array(); 
 
  $items['multistep_example'] = array(
    'title' => 'Multi-step ajax form example',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('multistep_example_form'),
    'access callback' => TRUE,
  );
 
  return $items;
}

УрокЗаставляем любую форму выполняться через AJAX в Drupal 7

Абсолютно любую форму в Друпале можно заставить работать с помощью аякса. Для этого достаточно написать совсем маленький модуль, который это реализует. Назовём модуль, например, ajax_forms. Итак, поехали потихонечку.

Создаём страницу для ajax запроса

С помощью hook_menu() создаём страницу, которая будет принимать ajax запрос из формы:

УрокПерезагрузка форм на AJAX в Drupal 7

В Drupal 7 работа с AJAX в формах (и не только) сделана на порядок мощнее, чем в 6й версии ядра. Добавились многочисленные AJAX команды, расширились возможности его интеграции с разными элементами сайта. Но сегодня я решил написать пример интеграции форм с ajax через Forms API, тем более что совсем недавно я с этим столкнулся лично.

В моём примере данные загружаются динамично, поэтому возможность перезагружать формы по частям в Drupal 7 оказалась как нельзя кстати.

УрокРабота с AJAX в Drupal

AJAX - Asynchronous Javascript and XML. Использование AJAX позволяет делать запросы к серверной части сайта и получать от него ответ без перезагрузки страницы. Преимущество использования AJAX в том, что загружается только необходимая часть - соответственно, загрузка происходит быстрее (не надо подгружать остальные элементы сайта).

Я хочу рассмотреть следующий пример: на сайте в блоке есть список заголовков нод. При нажатии на заголовок в контентную область загружается содержимое ноды без перезагрузки страницы.

УрокJava-скрипт, который обрезает фотографии и сохраняет их на сервере при помощи Ajax

Не так давно получил примерно такое техзадание: вывести фотографию, которую пользователь может обрезать графическими средствами, после чего сохранить картинку на сервере. На самом деле тз было немного сложнее, но к сути вопроса это не относится ;)

Скрипт, который позволяет графически выделить фотографию я нашёл довольно быстро - imgareaselect (пример можно посмотреть там же). Но остался вопрос как после выделения скрипта сохранить фотографию на сервере - иначе после перезагрузки страницы выбранная пользователем область пропадёт.

Для этого я написал небольшой модуль, который можно скачать тут. Он включает в себя файл с упакованным скриптом imgareaselect, и моим модулем, который я назвал image_cropper.