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

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

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

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

Программное добавление изображения к ноде

Снипет для аттача изображения к ноде.

<?php
// Загружаем изображение в публичную папку.
$file_path = file_save_data(file_get_contents('/my_local_path/img1.jpg'), 'public://remote_name.jpg');

// Дальше нам нужно создать entity wrapper. Делаем это для существующей ноды с nid=3.
$wrapper = entity_metadata_wrapper('node',...

Как программно авторизовать пользователя

В Drupal'е очень легко авторизовать пользователя. Для этого нужно знать всего лишь User ID.

<?php
$uid = 1;
$account['uid'] = $uid;
user_login_submit(array(), $account);

После авторизации таким способом, пользователь будет перенаправлен на страницу пользователя. Иногда этого делать на надо, тогда можно авторизовать более...

Как отправить email с помощью drupal_mail

Для того, чтобы программно отправить сообщение из Drupal, нужно использовать 2 функции, одна из которых - hook_mail().
Итак, простое тестовое сообщение.

<?php
function example_callback() {
 $to = 'mail@example.com';
 $key = 'example_email';
 $params = array(
 'body' => t('Test message')
 );
 drupal_mail(...

Как создать дисплей

По умолчанию, в Drupal'е есть несколько дисплеев для нод: teaser, full, default, rss,...
Создать дополнительный тип отображения нод очень просто:

<?php
/**
 * Implements hook_entity_info_alter().
 */
function EXAMPLE_entity_info_alter(&$entity_info) {
 $entity_info['node']['view modes']['some_new_display'] = array(...