Перейти к основному содержанию

drupal 7

Ошибка при прерывании ajax-запроса

Отправлено said от пт, 10/07/2016 - 16:07

Чтобы предотвратить появление алерта с сообщением об ошибки использовать:

(function ($) {
  Drupal.behaviors.disableAlerts = {
    attach: function(context, settings) {
      window.alert = function(text) {
        if(typeof console != "undefined") {
          console.error('Error: ' + text);
        }
        return true;
      };
    }
  };
}(jQuery));

 

Теги

Textfield + выбор файла на сервере

Отправлено said от пт, 08/26/2016 - 15:22

Частенько нужно в форму настроек вставить файл. Можно этот файл загрузить, как указано в этом примере. А можно вставлять ссылку на файл, который уже загружен на сервер.

Теги

Загрузка managed_file в форму настроек system_settings_form

Отправлено said от вт, 08/23/2016 - 17:54

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

Пример формы настроек

Теги

Программное добавление поля во views 3

Отправлено said от ср, 08/17/2016 - 16:15

Ниже приведен алгоритм добавления своего поля во views

1. В модуле использовать hook_views_api()

function my_module_views_api() {
  return array(
    'api' => 3,
  );
}

2. Использовать hook_views_data(), эту функцию сохранить в папке с модулем, в файле под именем my_module.views.inc

Теги

Получение значения поля типа Список

Отправлено said от чт, 07/28/2016 - 10:54

Получение значения поля типа список делается при помощи двух строк

$field = field_info_field('my_field_name');
$values = list_allowed_values($field);

А это функция на случай необходимости получения значения спискового поля в разных частях кода

function _mymodule_list_field_value($field, $key) {
    $field = field_info_field($field);
    $values = list_allowed_values($field);
    return isset($values[$key]) ? $values[$key] : NULL;
}

 

Теги

Webform сохранение файла оправленного через ajax-форму

Отправлено said от пн, 05/30/2016 - 11:04

Меняю тип поля файла в вебформе с помощью hook_form_alter()

function mymodule_form_alter(&$form, &$form_state, $form_id) {
    if ($form_id == 'my_webform') {
        $form['submitted']['requisites']['#type'] = 'file';
    }
}

При сабмите формы, файл будет отправляться. Теперь в hook_webform_submission_presave() сохраняю этот файл

Теги

Обновление полей ноды без вызова hook_node_update

Отправлено said от вт, 04/12/2016 - 17:31

Иногда требуется обновить поля ноды, после ее сохранения пользователем.

Если использовать hook_node_update и в нем вызвать node_save произойдет зацикливание скрипта. Чтобы этого не происходило мы вместо node_save используем field_attach_update

Теги

Изменение обертки для элементов формы

Отправлено said от пн, 04/04/2016 - 17:21

В конструкторе формы или в hook_form_alter указываем имя функции темизации обертки

$form['name']['#theme_wrappers'] = array('form_element_no_wrappers');

В hook_theme отпределяем функцию темизации

function my_module_theme($existing, $type, $theme, $path) {
  return array(
    'form_element_no_wrappers' => array(
      'render element'  => 'element',
    ),
  );
}

И собственно сама функция темизации. В данном случае мы убираем все обертки, но можно так же задать свои.

Программный вывод блока

Отправлено said от пт, 04/01/2016 - 15:57

Вывод блока созданного через админку в модуле block

$block = block_load('block', 'block-id');
$block = _block_render_blocks(array($block));
$block = _block_get_renderable_array($block);
$output = drupal_render($block);

Вывод блока созданного модулем

$block = module_invoke('search', 'block_view');
$output = render($block['content']);

Вывод блока созданного модулем views

Теги