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

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

Программное изменение запроса к базе данных во 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.'
';

}

Вывод списка нод определенного термина таксономии

    $result = db_query("SELECT {node}.title, {node}.nid FROM {node} INNER JOIN {term_node} ON {node}.nid = {term_node}.nid WHERE {term_node}.tid = %d ORDER by {node}.title ASC LIMIT %d, %d", 148, 0, 50);

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

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

    }

    foreach ($nodes as $list) {

        print $list.'

Views 2: Отображение количества элементов под их выводом

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

Views 3: сортировка результатов по длине заголовка

Если вы хотите вывести результаты во вьюсе, отсортировав их по длине заголовка, то имплементация хука hook_query_TAG_alter() поможет в этом:

Drupal: Человечные заголовки у форм создания материалов

По умолчанию формы создания материалов озаглавлены по шаблону "Создание материала [nodetype]". Код ниже, позволяет назначить каждому типу свой человекопонятный заголовок:

RSS-материал