Drupal ajax страницы без перезагрузки

Это всего лишь мокап, который я накидал за 20 минут "на коленке" и он требует доработки, но уже сейчас этот js-скрипт позволит простым сайтам работать без перезагрузки страниц.

Для примера, можно сёрфить по нодам в блоге или переходить из редактирования ноды в режим просмотра ноды. В большей степени, продолжают корректно работать ajax-ссылки,...

Обновление представления (views) через ajax

Заставить работать какую-либо вьюху с ajax не сложно. Достаточно зайти в настройки и установить параметр Use Ajax: Yes.
ajax-view

К сожалению, модуль Views не предоставляет JS API для программного обновления этой вьюхи. Поэтому, пишем свою функцию (комментарии в коде):

function refreshView(view_id, display_id) {
 var instances = Drupal.views.instances,...

Как передать настройки в JS

В друпале существует достаточно простой способ передачи каких-либо настроек из сервер-сайда на фронт-енд, другими словами из PHP в JavaScript.

<?php
$settings = array(
 'module_name' => array(
 'my_setting' => variable_get('module_name_my_setting', ''),
 )
);
drupal_add_js($settings, 'setting');
...

Как переопределить поведение ajax-ссылки

Многим известно, что в Drupal'е есть собственный ajax-фреймворк, который использует в качестве ответов, так называемые, команды. Сами запросы могут быть инициированы разными способами:

  1. Присвоив класс use-ajax на любой тэг (на стороне сервера или на стороне клиента, но перед инициализацией Drupal js части). В базовом использовании этого...

Ajax фильтрация и сортировка таблиц

При работе форм через ajax callback функция вызывается по пути system/ajax. Если в форме есть таблица с сортировкой, то все ссылки в хидере таблицы и пагинаторе будут начинаться с system/ajax. Чтобы избежать этого можно сделать так:

<?php
// Если есть сортировка - запоминаем ее.
$get = drupal_get_query_parameters();
if (isset($get[...