Полезные советы

Рекомендации и советы, которые облегчают работу и понимание Drupal

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

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

Drupal: Миграция терминов с сохранением идентификаторов

Небольшой костыль, который позволяет импортировать термины с сохранением оригинального идентификатора:

Drupal: Отключить кэш страниц для определённых ip адресов

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

Соответственно, чтобы отключить кэш страниц для определённых ip адресов, нужно в settings.php добавить:

Обработка большого количества данных с помощью Batch API

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

Программное изменение запроса к базе данных во Views

Возникают ситуации, когда необходимо сделать во Views фильтр с помощью программного вмешательства. Например, совсем недавно я реализовывал такую задачу:

Drupal: Пример миграции материалов из Drupal 5 в Drupal 7 с помощью модуля Migrate

Пример класса для Migrate, для переноса материалов типа product с дополнительным CCK полем field_price:

Drupal: Как удалить все материалы определённого типа

Пример удаления всех материалов с типом article:

$nids = db_select('node', 'n')
->fields('n', array('nid'))
->condition('n.type', 'article')
->execute()
->fetchCol();
node_delete_multiple($nids);

Код можно выполнить с помощью Devel, по адресу devel/php

Комментарии

Drupal: Изменяем дефолтное значение поля Term reference на значение из последнего созданного материала

При наполнение какого-нибудь каталога, основанного на таксономии, в форме создания материала удобно изменять дефолтное значение поля таксономии на значение из предыдущего созданного материала. Например создав материал с термином "Горячие блюда" и открыв форму добавления нового материала, в поле будет выбрано не значение указанное в настройках поля, а термин "Горячие блюда":

Drupal: Показать результат выполнения AJAX запроса в jQuery UI Dialog

Пример формы, в которой после нажатия кнопки, юзер увидит jQuery UI Dialog с приветственным сообщением:

Вывод списка нод, которые начинаются на определенную букву

$result = db_query_range("SELECT title, nid FROM {node} WHERE title LIKE 'A%%' LIMIT %d, %d", 0, 50);

while {$node = db_fetch_object($result)) {

    $nodes[] = l($node->title, 'node/'.$node->nid);

}

foreach ($node as $nodes) {

   print $nodes.'
';

}

RSS-материал