Кодинг

Для того чтобы какую-то большую операцию выполнить в несколько приёмов, нужно использовать специальное Batch API Друпала. Хорошая статья по его использованию есть здесь:
http://drupalace.ru/lesson/obrabotka-bolshogo-kolichestva-dannyh-s-pomos...

Но там есть пара нюансов, которые я хотел бы прояснить:
$context['finished'] надо заполнять при каждом шаге, это значение от 0 до 1, как раз его значение будет отображаться в прогрессбаре. В примере в той статье этого нет, хотя...

Часто встаёт задача при выполнении какого-то javascript'a показать пользователю крятущийся кружочек о том, что скрипт выполняется. В друпале для этого в любом месте страницы достаточно добавить следующий код:

<div class="ajax-progress"><div class="throbber">&nbsp;</...

Если вы написали свой платёжный шлюз для Drupal Commerce, и вам нужно чтобы после выбора нашего способа платежа пользователь автоматически перенаправлялся на сайт платёжной системы (это классическая схема обычно), то в хуке _commerce_payment_method_info нам нужно добавить всего одну строчку 'offsite_autoredirect' => TRUE,! Пример:

...

Часто стандартных наборов правил для Rules не хватает и возникает необходимость выполнить свой php-код. Включать на сайте модуль php нельзя! Ибо это черевато соблазнами добавить какой-то код в базу данных, а это не drupal-way и черевато проблемами и ошибками. Итак, для того чтобы выполнить какое-то своё действие при срабатывании события по Rules, надо реализовать ряд хуков:

/**
 * Implement hook_rules_action_info()
 
 * Declare any meta data about actions for Rules
 */
 
function...

Если вам нужно выставить значения по умолчанию для некоторых раскрытых фильтров во вьюс программно, то вам не поможет хук _form_alter, потому что раскрытые фильтры не оттуда берут default_value.
Оказывается, нужно использовать хук _views_pre_build(&$view), в котором изменять handler нужного фильтра, примерно так:

function zz_np_views_pre_build(&$view) {...

Постоянно в работе сталкиваюсь с проблемой необходимости вывода своей формы, которую создал в своем модуле, во всплывающем окне.
На текущий момент есть несколько модулей для отображения форм во всплывающем окне, такие как popups, modal_form, colorbox, lightbox2, но они все заточены под конкретные стандартные формы друпала (такие как форма логина или регистрации), или же под модуль webform (чем я, собственно, и обходился в прошлых проектах).
На самом деле нам не нужны никакие лишние модули.
Весь нужный функционал есть в модуле ctools, который и так всегда стоит на всех...

Краткое содержание статьи http://engineeredweb.com/blog/successfully-commenting-code/

Есть разные мнения о коментировании: одни говорят что коментировать нельзя ни в коем случае, другие - что надо коментить что попало.

Я считаю, что надо коментировать в 3х случаях:

  1. Почему это сделано именно так?
    Когда вы пишете код, у вас в голове есть некий контекст, для которого вы пишете решение. Запишите его в качестве коментария. Коментарии о том, почему этот код реализован так, помогут вам или...

Если по каким-то причинам вы импортировали сырые значения текстов нод в поле body прямо в базе данных, и теперь вам нужно, чтобы все теги отображались не текстом, а работали как обычные теги - надо запустить VBO с таким кодом:

$entity->body['und'][0]['format...

Для того чтобы программно создать своё CCK-поле при установке своего модуля, вам нужно использовать хук install/uninstall в файле .install.
Порядок такой: сначала создаётся поле, а только потом его экземпляр. Удаляется в обратной последовательности.
Если использовать хуки enable/disable, то экземпляры поля будут создаваться при каждом включении модуля.
Вот здесь хорошо расписаны типы всех полей и типы виджетов http://ado.io/blog/drupal-7/working-programmatically-with-fields-in-drup......

Оказывается, в Drupal 7 уже нельзя, как раньше, просто написать
return array('node' => $node); и он бы сохранил все изменения, сделанные нами через php-код; в Drupal 7 так делать нельзя, еще не доработали эту фишку (http://drupal.org...

http://upgrade.boombatower.com/tools/sql/inline

Конечно, его стоит использовать только для проверки себя пока учишься drupal-7 синтаксису или в тупиковых случаях - если привыкнуть юзать постоянно, это будет потерей времени.

Нужно использовать 'file path' и 'file' для подключения страниц модуля user в хуке hook_menu:

$items['account'] = array(
    'title' => t('Account details'),...

В Drupal 7 wysywig привязан к формату ввода, и теперь в form api добавлен новый элемент 'text_format' - текстовое поле с форматом ввода:

  $form['comment'] = array(
    '#type' => 'text_format',...

Совсем не обязательно ставить новые модуля, такие как MIME mail или HTMLmail - достаточно просто изменить header письма. Внимание - если будете использовать хук _mail - изменения header не поможет! Только так, как я написал ниже:

    $params['account'] = $usr;
    $data =...
  if (module_exists('token')) {
    $form['token_help'] = array(
      '#title' => t...

Страницы